xcode 远程通知有效负载问题:iOS操作系统

mbjcgjjk  于 2023-02-16  发布在  iOS
关注(0)|答案(2)|浏览(153)

所以我在我的应用中使用了firebase推送通知。通知在以下负载下工作正常,

{
    "to": "cMXdSK_ud0LpqMoju85FvT:APA91bFMke92QR1IvcLeLhG5XrvwcE0OfSLGpJW1ds9-FFDornoeorMlKOn6IEtDYsuvwlRrwJnHJy0BPl_udcbqac39WF1cllsEV3l------------",
    "notification": {
        "title": "10-inch Aggretsuko Rage #24 (Jumbo Size)",
        "subtitle": "Test notification Krunal"
    }
}

但当我使用apple documentation中提到的相同有效载荷格式时,通知成功发送,但设备上没有接收到。检查此有效载荷,

{
    "to": "cMXdSK_ud0LpqMoju85FvT:APA91bFMke92QR1IvcLeLhG5XrvwcE0OfSLGpJW1ds9-FFDornoeorMlKOn6IEtDYsuvwlRrwJnHJy0BPl_udcbqac39WF1cllsEV3l------------",
   "aps" : {
      "alert" : {
         "title" : "10-inch Aggretsuko Rage #24 (Jumbo Size)",
         "subtitle" : "Test notification Krunal",
      },
      "category" : "GAME_INVITATION"
   },
   "gameID" : "12345678"
}

有人能解释一下我想在flutter应用中使用的上述有效载荷的实际问题吗?当我在flutter android应用中使用有效载荷中的notification关键字时,会产生一个问题。有人能帮助我解决这个问题吗?

yzuktlbb

yzuktlbb1#

这里发生的事情是,你使用的是FCM消息。当你这样做的时候,你实际上是把通知有效载荷发送到Firebase。Firebase然后把这个有效载荷转换成适合iOS、Android或Web的有效载荷格式,然后把它发送到相应的消息服务。
对于有效载荷,你已经建立了看苹果文档的工作,你必须把它发送到APNS。
您也可以在FCM消息中指定Apple特定的密钥。See the documentation here
您可以使用ApnsConfig对象指定特定于Apple设备的内容。
要设置特定于Android设备的选项,您可以使用AndroidConfig对象。
现在,回到您提到的Android应用程序的问题,查看有效负载中的“to”字段,我必须假设您使用的是遗留API之一(XMPP Server ProtocolLegacy HTTP Server Protocol),而不是我上面建议的那些。在这种情况下,你确定你在发送负载时已经更新了“到”字段中的接收者吗?如果是,那么您能否解释一下您在Android应用程序中使用FCM特定有效负载时遇到的问题。

3zwjbxry

3zwjbxry2#

我认为问题是Firebase想要一个不同于苹果系统上实际使用的专有数据结构的JSON结构,Firebase正在为您完成第一个示例的转换。
第二个示例是Apple Simulator可以使用xcrun simctl push的有效负载类型,因此它仍然有助于本地测试和开发。
你的问题的最后一部分,为什么这是Android的问题,我不知道。但我想知道你是否提供了错误的FCM令牌,因为这可能会编码的目标平台类型,使其不兼容Android交付。Firebase似乎总是知道正确的平台特定的方式来交付推消息,无论是Android或iOS,所以它必须通过FCM令牌跟踪。

相关问题