繁体   English   中英

Firebase 在 ios 模拟器上运行良好,但在真实设备上不起作用

[英]Firebase works fine on ios simulator but it does't work on real device

我将在我的 ios 应用程序上使用 firebase 实现推送通知,并且我使用 swift 3.1 作为我的编程语言。 我已经在我的应用程序上实现了 firebase。它在 ios 模拟器上运行良好并提供 fcm 令牌,但在真实设备上它不起作用并且不提供 fcm 令牌。 有什么帮助吗?

不久前我遇到了这个问题,这从Ray Wenderlich 那里帮助了我。 要在设备上执行推送通知,您需要具备三个核心要素:

  1. 应用程序必须正确配置并注册到 Apple 推送通知服务 (APNS) 才能在每次启动时接收推送通知。
  2. 服务器必须向 APNS 发送指向一个或多个特定设备的推送通知。
  3. 应用必须收到推送通知; 然后它可以使用应用程序委托中的回调来执行任务或处理用户操作。

可能会迟到,但这是我的 2 美分。

几天前我遇到了同样的问题。

所以基本上解决方法是在您请求 FCM 令牌之前需要延迟,以便正确初始化所有 Firebase 库。

因此,我在 AppDelegate.cs 中的 Xamarin iOS 项目中编写了类似的代码,在其中添加 2 秒延迟以在用户第一次安装应用程序时获取 FCM 令牌。

 var firstLoad = NSUserDefaults.StandardUserDefaults.StringForKey("isFirstLoad");

        if(firstLoad == null)
        {
            Thread.Sleep(2000);
            NSUserDefaults.StandardUserDefaults.SetString(false, "isFirstLoad");
        }

由于 RAM 和处理器较高,它可以在模拟器上运行,但在实际设备中它需要一些额外的时间,就我而言,我使用的是 Analytics、Crashlytics 和 Messaging。

还要确保在设备上运行时检查控制台日志以获取正确的错误消息。 如果 FIRInstance 正确初始化,则 FCM 令牌将出现在下面的委托方法中。

optional func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM