【问题标题】:Firebase Works In Simulator But Not On iPhoneFirebase 可以在模拟器上运行,但不能在 iPhone 上运行
【发布时间】:2017-01-03 17:54:02
【问题描述】:

我正在尝试使用以下方法从我的 Firebase 数据库中提取某个视图控制器上的数据:

_refHandle = [_postRef observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
  NSDictionary *postDict = snapshot.value;
  // ...
}];

代码在模拟器中运行良好,但在 iPhone 上无法运行(代码被跳过)。我在我的应用程序的其他部分使用了这段代码,它在设备和模拟器上都有效。我还将这段代码实现为用于拉入数据的自定义方法(仍然不起作用)。有谁知道为什么这在真实设备上不起作用?

【问题讨论】:

标签: ios objective-c xcode firebase firebase-realtime-database


【解决方案1】:

这是因为您的安全规则。在您的 Firebase 控制台中:

  • 转到数据库菜单项
  • 转到“规则”选项卡
  • 将安全规则更新为:

    {
      "rules": {
        ".read": true, // Or whatever rule you would like
        ".write": "auth != null"
      }
    }
    

【讨论】:

  • 我有同样的问题,但没有帮助,禁用位代码也不起作用
  • 我现在在 iOS 上也遇到了这个错误 - 你有没有找到解决办法?
【解决方案2】:

转到数据库菜单项

转到“规则”选项卡

将安全规则更新为(针对真实设备):

{
 "rules": 
    {
     ".read": "auth != null",
     ".write": "auth != null"
     }
}

将安全规则更新为(用于真实模拟器测试):

 {
   "rules": 
    {
     ".read": "auth == null",
     ".write": "auth == null"
     }
 }

【讨论】:

    【解决方案3】:

    我发现如果您登录并删除应用程序,那么在您再次安装应用程序后,您仍然会登录。我不知道确切,但我认为 Firebase 以某种方式将帐户缓存绑定到 Keychain使用 Bundle Identifier,不在应用本地存储中。

    我的解决方案不够好,但对我有用:

    1. 从真实设备中删除您的 APP。
    2. 在导航面板中转到您的项目。
    3. 在“常规”选项卡中更改您的 Bundle 标识符,例如:“myApp.com”到“myApplication.com”或任何您想要的。
    4. 构建并运行
    5. 宾果游戏!

    更新:Firebase 使用您的 Bundle 标识符作为密钥在钥匙串中记住您的数据,这就是为什么它在您更改 Bundle Identifier 时起作用

    【讨论】:

      猜你喜欢
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 2014-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多