首页 > 解决方案 > React 本机 FCM iOS 推送通知未交付

问题描述

首先环境是 React 本机,我尝试按照rnfirebase包中的说明在 iOS 中设置推送通知,我做了什么步骤,我在 Real iPhone 设备上进行测试

  1. 创建密钥

在此处输入图像描述

  1. 然后添加到火力基地

在此处输入图像描述

  1. 添加 Google-service.plist 并从 firebase doc 添加以下设置

在此处输入图像描述

并激活能力 在此处输入图像描述

  1. 然后我安装 pod 包

在此处输入图像描述

  1. 运行应用程序得到令牌

在此处输入图像描述

  1. 在云消息控制台上使用令牌发送

通知未送达我不知道出了什么问题,因为消息也从 FCM 发送以及在 APNS 上发生了什么,我得到一个错误只是混淆

感谢提前

并尝试直接与推杆连接 在此处输入图像描述

也没有再收到

然后尝试使用具有相同证书的 Onesignal 与 Firebase 即使在测试消息上也可以使用

标签: iosfirebasereact-nativefirebase-cloud-messagingapple-push-notifications

解决方案


您在 Pusher 中使用的令牌看起来不正确。我的远程通知令牌如下所示。

在此处输入图像描述

我只是在测试静默推送,但对于常规警报,令牌看起来很相似。这是我用来获取令牌的代码。我的猜测是您正在将错误的令牌推向 FCM。

fileprivate func convertHexDataToString(_ data: Data) -> String {
    var string: String = ""
    for i in 0..<data.count {
        string += String(format: "%02.2hhx", data[i] as CVarArg)
    }
    return string
}

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let tokenString = convertHexDataToString(deviceToken)
    #if DEBUG
    print("APN sandbox token: '\(tokenString)'")
    Messaging.messaging().setAPNSToken(deviceToken, type: .sandbox)
    #else
    print("APN prod token: '\(tokenString)'")
    Messaging.messaging().setAPNSToken(deviceToken, type: .prod)
    #endif        
}

推荐阅读