Firebase在iOS应用程序上自动从用户会话注销

Firebase在iOS应用程序上自动从用户会话注销,ios,firebase-authentication,Ios,Firebase Authentication,我正在我的应用程序中努力进行Firebase身份验证。我已使用以下方法启用了数据库持久性: [FIRDatabase database].persistenceEnabled = YES; 用户登录(电子邮件/密码验证)后,我希望会话保持活动状态,直到我明确地注销:。为了处理授权中的更改,我设置了以下内容(使用一些调试代码根据应用程序状态更改检查行为): 即使在调试时从Xcode重新安装应用程序,一切似乎都正常。但是,一旦应用程序进入“非活动状态”(例如,按下主页按钮)。我在我的listene

我正在我的应用程序中努力进行Firebase身份验证。我已使用以下方法启用了数据库持久性:

[FIRDatabase database].persistenceEnabled = YES;
用户登录(电子邮件/密码验证)后,我希望会话保持活动状态,直到我明确地
注销:
。为了处理授权中的更改,我设置了以下内容(使用一些调试代码根据应用程序状态更改检查行为):

即使在调试时从Xcode重新安装应用程序,一切似乎都正常。但是,一旦应用程序进入“非活动状态”(例如,按下主页按钮)。我在我的listener块中得到“注销”。当我的应用程序转到“背景”时,如果我只是切换到另一个应用程序,则不会发生这种情况,
applicationdenterbackground

有什么不对劲吗?文档()建议在应用程序重新启动时保存会话(这意味着类似于
applicationWillResignActive
applicationdidebecomeactive
,我假设)

我不想对每一次这样的更改重新进行身份验证(使用安全保存的电子邮件/密码凭据)(这也会使“脱机”功能声明失效)。或者,重新身份验证是否也可以在“脱机”模式下工作


疯狂地试图解决这个问题-任何线索都会有帮助!Thx.

忽略登录应用程序退出:当您重新启动应用程序时,它是否会再次触发用户的身份验证状态更改?如果我重新启动应用程序,身份验证状态更改显示没有用户(即,[FIRAuth auth]currentUser]返回零)。但是,如果我在调试会话中打开了应用程序,并在其运行时重新安装,则会将用户会话显示为已登录。这让我感到困惑,因为我会假设应用程序被“终止”并重新启动。嗯。。。。我不能复制这个。刚刚在if(user!=nil){print(“用户已登录”)}中将此代码添加到我的应用程序委托
FIRAuth.auth()?.addStateDidChangeListener(){(auth,user){print(“用户未登录”)}
中,当我启动应用程序时,它只打印两次
用户已登录
。当我按下Home(主页)按钮时,不会打印任何内容,这就是它应该如何工作的。不确定是什么触发了你的代码。嗨-另外,当设备进入睡眠状态时,身份验证状态也会变为“已注销”。谢谢,@FrankvanPuffelen。我没有看到任何其他地方可以设置任何参数(如在Firebase控制台中),因此我不确定是什么导致了这里的问题。有什么我应该在GoogleService-Info.plist上看的吗?我没有看到任何会导致它的东西(除非缺少所需的东西!)-我已经启用了
loggingabled
来帮助调试?(不知道如何使用它-日志在哪里维护?)
[[FIRAuth auth] addAuthStateDidChangeListener:^(FIRAuth * _Nonnull auth, FIRUser * _Nullable user) {
    if (user != nil) {
        ZLog(YES, @"Signed in %@\n\n\n>>>>\n\n\n", user.uid);
        [user getTokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) {
            ZLog(NO, @"Token %@\n\n\n####\n\n\n", token);
        }];
    } else {
        ZLog(YES, @"Not Signed In\n\n\n>>>>\n\n\n");
        FIRUser *user = [[FIRAuth auth] currentUser];
        ZLog(YES, @"The user is %@", (user != nil) ? user : @"nil");
    }
}];