每次打开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它的任何属性像sessionDetailssessionExpirationDatecurrentUser他们都logging为(null)

正如我所知,只有当你使用这个方法- (void)startSessionForUser:(QBUUser *)user withDetails:(QBASession *)session expirationDate:(NSDate *)sessionDate ,你可以使用这个属性正确。 但我从来没有使用它。

为了重新创build一个会话,我使用[QBConnection setAutoCreateSessionEnabled:YES]和聊天我保持QBUUser在我的经理,进入前景后,我检查XMPP连接[[QBChat instance] isLoggedIn] 。 也许它可以帮助你。