每次打开iOS应用程序时都被迫创build一个新的Quickblox会话
我正在使用Quickblox iOS SDK 2.0.12
我一直在这里按照Quickblox身份validation和授权的说明。
我调用QBRequest createSessionWithSuccessBlock:
,然后调用QBRequest signUp:
在它的完成块里面,然后我调用QBRequest logInWithUserLogin:
在下一个完成块里面。
根据上面的链接,我现在应该做一个Quickblox User Session
完成这一切。 这一切都完美的作品,所有的电话都是成功的,我可以看到,用户现在在Quickblox Admin Panel
。
这样做后,如果我做Quickblox
请求他们工作正常。 唯一奇怪的是[[QBSession currentSession] currentUser]
NSLogs
as (null)
。
无论如何,如果我停止在模拟器上运行应用程序,然后在10分钟后再次运行应用程序,我会检查是否存在持久的自定义数据,以便查看用户是否已经注册。 当用户注册时,我将它们带入应用程序,而不是他们需要注册或再次login。
现在,如果我试图向Quickblox
发出任何请求,我会得到以下exception:
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.'
我不明白为什么当用户第一次注册时,我需要创build一个会话。 我知道会话每2小时就会过期,但是我正在testing这个速度非常快,而且我总是收到这个错误。
如果我NSLog
[QBSession currentSession]
我可以看到,目前有一个QBSession
对象,但如果我尝试NSLog
它的任何属性像sessionDetails
, sessionExpirationDate
或currentUser
他们都logging为(null)
。
正如我所知,只有当你使用这个方法- (void)startSessionForUser:(QBUUser *)user withDetails:(QBASession *)session expirationDate:(NSDate *)sessionDate
,你可以使用这个属性正确。 但我从来没有使用它。
为了重新创build一个会话,我使用[QBConnection setAutoCreateSessionEnabled:YES]
和聊天我保持QBUUser在我的经理,进入前景后,我检查XMPP连接[[QBChat instance] isLoggedIn]
。 也许它可以帮助你。