所以我在我的应用中使用了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
关键字时,会产生一个问题。有人能帮助我解决这个问题吗?
2条答案
按热度按时间yzuktlbb1#
这里发生的事情是,你使用的是FCM消息。当你这样做的时候,你实际上是把通知有效载荷发送到Firebase。Firebase然后把这个有效载荷转换成适合iOS、Android或Web的有效载荷格式,然后把它发送到相应的消息服务。
对于有效载荷,你已经建立了看苹果文档的工作,你必须把它发送到APNS。
您也可以在FCM消息中指定Apple特定的密钥。See the documentation here。
您可以使用
ApnsConfig
对象指定特定于Apple设备的内容。要设置特定于Android设备的选项,您可以使用
AndroidConfig
对象。现在,回到您提到的Android应用程序的问题,查看有效负载中的“to”字段,我必须假设您使用的是遗留API之一(XMPP Server Protocol或Legacy HTTP Server Protocol),而不是我上面建议的那些。在这种情况下,你确定你在发送负载时已经更新了“到”字段中的接收者吗?如果是,那么您能否解释一下您在Android应用程序中使用FCM特定有效负载时遇到的问题。
3zwjbxry2#
我认为问题是Firebase想要一个不同于苹果系统上实际使用的专有数据结构的JSON结构,Firebase正在为您完成第一个示例的转换。
第二个示例是Apple Simulator可以使用
xcrun simctl push
的有效负载类型,因此它仍然有助于本地测试和开发。你的问题的最后一部分,为什么这是Android的问题,我不知道。但我想知道你是否提供了错误的FCM令牌,因为这可能会编码的目标平台类型,使其不兼容Android交付。Firebase似乎总是知道正确的平台特定的方式来交付推消息,无论是Android或iOS,所以它必须通过FCM令牌跟踪。