我的申请已获得授权。作为回报,如果我登录,我会收到一个存储在NSUserDefaults
.
当前应用程序如何工作:当我按下登录按钮时,应用程序将用户名和登录信息发送到服务器,如果成功,应用程序将获得一个令牌。
我有一个带有令牌和其他接收到的信息方法的保存用户,其中包含:
- (void)saveUserWithInfo...{
...
[[NSUserDefaults standardUserDefaults] setObject:token
forKey:kUserToken];
应用程序中的令牌在此阶段一切正常。
对于 iOS 扩展,我想使用这个令牌来检查用户是否登录。我在上面的保存用户方法中添加了下一行:
NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mayapp"];
[sharedDefaults setObject:token
forKey:kUserToken];
如您所见,我还将令牌保存到共享用户默认值,并且可以从这个新存储中简单地请求令牌。
问题:
当我第一次测试它时,它会在我上传到商店之前根据需要工作。我在 App Store 上有一个版本,它不包含 iOS 扩展和NSUserDefaults
应该包含令牌的新共享存储。
在我将版本更新为新版本并下载后,我在第一个扩展程序处打开,但它向我显示错误,该用户尚未登录,这似乎是正确的,因为共享NSUserDefaults
存储没有令牌。在我当前的工作流程中,按下登录按钮后可以保存令牌。但是从没有扩展的版本更新到有扩展的版本从 App Store 更新后,我的用户当然仍然登录该应用程序,因为原始NSuserDefaults
包含令牌,但新共享NSUserDefaults
仍然没有获得令牌,因为我们需要注销然后登录才能制作这行得通。
我的问题是如何在不注销的情况下将令牌设置为新共享 NSUserDefaults
然后重新登录。当然,当我登录时,它开始从更新中调用所有新行,并且我为 iOS 扩展添加了我的新共享。 NSUserDefaults
因此,在新登录后它将包含令牌,如果打开扩展它可以工作,但首先在 App Store 更新版本显示用户未登录错误后立即启动 - 这是正确的,因为新添加了共享 NSUserDeafults