【问题标题】:React native FCM iOS push notification not deliveredReact 本机 FCM iOS 推送通知未交付
【发布时间】:2020-04-20 12:54:03
【问题描述】:

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

  1. 创建密钥

  1. 然后添加到 Firebase

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

并激活功能

  1. 然后我安装 pod 包

  1. 运行应用获得令牌

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

通知未送达我不知道出了什么问题,因为消息也从 FCM 发送,以及在 APNS 上发生了什么让我感到困惑的错误

感谢提前

也可以尝试直接与 pusher 连接

也没有再收到

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

【问题讨论】:

  • 只是为了澄清,你是在真正的 iOS 设备上测试这个吗?您无法使用 iOS 模拟器测试通知。
  • @Dan yup 我在 iPhone 上做测试
  • 还有几个问题是您的应用程序是在前台还是后台?如果前台您是否检查了应用程序上的事件侦听器?如果背景,您是否尝试从 Firebase 控制台或其他方式发送它?
  • @krissanawat 您能否向我们提供您的完整 AppDelegate.m 文件和您在其中定义 firebase 工作流的 react-native 代码?

标签: ios firebase react-native firebase-cloud-messaging apple-push-notifications


【解决方案1】:

您在 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        
}

【讨论】:

  • 我抓取了 rnfirebase 包生成的令牌,所以如果包错误,我从哪里获得令牌
  • 这两个方法在AppDelegate中。如果您在此处添加它们然后调用注册推送通知,操作系统将调用打印令牌的 didRegisterForRemoteNotificationsWithDeviceToken。我会首先专注于让 pusher 工作,然后调试 FCM。如果 pusher 不工作,那么 FCM 也不会工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多