[英]Firebase Works In Simulator But Not On iPhone
我正在尝试使用以下方法从我的 Firebase 数据库中提取某个视图控制器上的数据:
_refHandle = [_postRef observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
NSDictionary *postDict = snapshot.value;
// ...
}];
该代码在模拟器中运行良好,但不适用于 iPhone(代码被跳过)。 我在应用程序的其他部分使用了这段代码,它可以在设备和模拟器上运行。 我也将这段代码实现到一个用于拉取数据的自定义方法中(仍然不起作用)。 有谁知道为什么这在真实设备上不起作用?
我发现如果您登录并删除该应用程序,那么在您再次安装该应用程序后,您仍然会登录。我不确切知道,但我认为 Firebase 以某种方式将帐户缓存绑定到带有 Bundle Identifier 的 Keychain ,不在应用程序本地存储中。
我的解决方案不够好,但对我有用:
更新:Firebase 使用您的捆绑标识符作为密钥记住您在钥匙串中的数据,这就是它在您更改捆绑标识符时起作用的原因
这是因为您的安全规则。 在您的 Firebase 控制台中:
将安全规则更新为:
{ "rules": { ".read": true, // Or whatever rule you would like ".write": "auth != null" } }
转到数据库菜单项
转到规则选项卡
将安全规则更新为(对于真实设备):
{
"rules":
{
".read": "auth != null",
".write": "auth != null"
}
}
将安全规则更新为(对于真实模拟器测试):
{
"rules":
{
".read": "auth == null",
".write": "auth == null"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.