ios - 每次打开 iOS 应用程序时都被迫创建新的 Quickblox session

标签 ios objective-c quickblox

我正在使用Quickblox iOS SDK 2.0.12

我一直遵循有关 Quickblox 身份验证和授权 here 的说明.

我调用QBRequest createSessionWithSuccessBlock:,然后在其完成 block 内调用QBRequest signUp:,然后在其完成 block 内调用QBRequest logInWithUserLogin:下一个完成 block 。

根据上面的链接,完成所有这些操作后,我现在应该拥有一个 Quickblox 用户 session 。这一切都很完美,所有调用都成功,我可以看到用户现在位于 Quickblox 管理面板 中。

完成此操作后,如果我发出 Quickblox 请求,它们可以正常工作。唯一奇怪的是 [[QBSession currentSession] currentUser] NSLogs(null)

无论如何,如果我停止在模拟器上运行该应用程序,然后 10 分钟后再次运行该应用程序,我会检查持久的自定义数据,以便我可以查看用户是否已经注册。当用户注册后,我会将他们带入应用程序,而不需要他们再次注册或登录。

现在,如果我尝试向 Quickblox 发出任何请求,我会收到以下异常:

Terminating app due to uncaught exception 'BaseServiceException', reason: 'You have missed the authorization call.
Please insert following code inside your application 
[QBRequest createSessionWithSuccessBlock:errorBlock:];
Before any other code, that uses our service, but after setup credentials. Thank you.' 

我不明白为什么它说我需要创建一个 session ,而我在用户第一次注册时刚刚创建了一个 session 。我知道 session 每 2 小时就会过期,但我很快就测试了这一点,并且总是收到此错误。

如果我 NSLog [QBSession currentSession] 我可以看到当前有一个 QBSession 对象,但是如果我尝试 NSLog 它的任何属性,如 sessionDetailssessionExpirationDatecurrentUser 它们都记录为 (null).

最佳答案

据我所知,只有当您使用此方法 - (void)startSessionForUser:(QBUUser *)user withDetails:(QBASession *)sessionexpirationDate:(NSDate *)sessionDate 时,您才能使用此方法属性正确。不过我没用过。

为了重新创建 session ,我使用[QBConnection setAutoCreateSessionEnabled:YES],对于聊天,我将QBUUser保留在我的管理器中,进入前台后,我检查XMPP连接[[QBChat实例] isLoggedIn] 。也许它可以帮助你。

关于ios - 每次打开 iOS 应用程序时都被迫创建新的 Quickblox session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27388204/

相关文章:

ios - QuickBlox-对话框必须在Objective-C中的内存缓存中

ios - 为什么 Objective-C API 会返回隐式解包的可选值?

ios - 动画与隐式自动布局不正确

ios - Objective-C 使用 ({ ... }) 声明变量

iphone - 如何测试 iPhone 唤醒码?

objective-c - Objective-C 中的 @property 和 @synthesize 与 Ruby 编程语言中的 attr_accessible 相同吗?

ios - UINavigationBar 中的滑动手势

android - Quickblox 如何在 android 中记录通话?

android - Quickblox Android 推送通知

objective-c - 将自身属性传递给 block 时的 ARC 实现