【问题标题】:Firebase Cloud Messaging send message to iid imported Apns tokenFirebase Cloud Messaging 向 iid 导入的 Apns 令牌发送消息
【发布时间】:2018-06-29 15:19:37
【问题描述】:

我正在编写一个应用程序,它应该将推送通知从服务器发送到 android 和 iOS 设备。为此,我尝试使用 FCM。 iOS 应用程序使用 APNS,因此我可以在服务器端获取 apns 订阅令牌。然后我尝试batch import这些令牌,我得到了某种长度为 174 个符号的注册令牌,而不是 Firebase 中通常使用的 152 个符号。 当我使用 IID 方法 GET https://iid.googleapis.com/iid/info/{token} 时,它成功返回有关给定令牌的信息,但是当我尝试使用 HTTP v1 API POST https://fcm.googleapis.com/v1/projects/{0}/messages:send 方法直接使用此令牌发送消息时目标字段 "token":"f5MpeWlqg0E:APA91bHGpRR3_ygt10....CdI3Rtsodf8XMIQNlflF23mQ" 和 ios 特定的有效负载,我收到一个错误:

{   
    "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
        "errorCode": "INVALID_ARGUMENT"
      },
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "message.token",
            "description": "Invalid registration token"
          }
        ]
      }
    ]   
   } 
}

然后,如果我再次尝试向同一个令牌发送相同的消息,我会收到另一个错误:

{
  "error": {
    "code": 404,
    "message": "Requested entity was not found.",
    "status": "NOT_FOUND",
    "details": [
      {
        "@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
        "errorCode": "UNREGISTERED"
      }
    ]
  }
}

并且 IID 方法也返回 404,这意味着 Firebase 从系统中删除了我的令牌。 问题是为什么我会从 IID 获得无法处理的“错误”令牌,以及如何向 iOS 手机发送直接通知。

【问题讨论】:

    标签: ios firebase firebase-cloud-messaging


    【解决方案1】:

    好的,问题出在 iid 设置中:当我尝试从 APNS 令牌中检索 FCM 令牌时,我将“沙箱”设置为 false,但使用了沙箱证书,因此令牌无效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-04
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 2014-02-21
      相关资源
      最近更新 更多