我正在使用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
它的任何属性,如 sessionDetails
、sessionExpirationDate
或 currentUser
它们都记录为 (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/