我在应用中遇到Firebase身份验证问题。我使用以下方法启用了数据库持久性:
[FIRDatabase database].persistenceEnabled = YES;
用户登录后(电子邮件/密码验证),我希望会话保持活动状态,直到我明确signout:
。为了处理授权中的更改,我设置了以下内容(使用一些调试代码来检查基于应用程序状态更改的行为):
[[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");
}
}];
即使在调试时从Xcode重新安装应用程序,一切似乎都还可以。但是,只要应用程序进入"非活动状态" (例如,通过按下主页按钮)。我得到了#34;退出"在我的听众块中。如果我在我的应用程序进入"背景"时切换到另一个应用程序,则不会发生这种情况。正如applicationDidEnterBackground
所观察到的那样。
可能有什么不对?文档(https://firebase.google.com/docs/database/ios/offline-capabilities)建议应该在应用程序重新启动时保存会话(这意味着像applicationWillResignActive
和applicationDidBecomeActive
这样的情况,我假设)。
我不想在每次此类更改时重新进行身份验证(使用安全保存的电子邮件/密码凭据)(这也会使“离线”功能声明失败)。或者重新认证是否也适用于离线'模式?
疯狂地试图解决这个问题 - 任何线索都会有所帮助! THX。