我刚刚开始处理iOS上的通知,似乎苹果已经定义了有效负载格式以接收通知。
目前,我正在使用此有效负载,一切都按预期工作。我正在获得标题,副标题,正文,图像。
{"aps" : {
"alert" : {
"title" : "Introduction To Notification",
"subtitle" : "Session 707",
"body" : "New Notification Look Amazing"
},
"sound" : "default",
"category" : "message",
"badge" : 1,
"mutable-content": 1
},
"attachment-url": "https://pusher.com/static_logos/320x320.png"
}
假设我想为Android和iOS提供一个有效负载。
是否在Android中为通知定义了标准格式,或者您是否可以在Android中设置任何数据,客户端必须手动处理和显示这些通知?
如何创建适用于两者的有效负载?
答案 0 :(得分:3)
跨平台有效负载更新:为FCM添加了一项新功能,该功能提供了为特定平台提供特定参数的选项,称为Platform Overrides。
您发布的样本有效负载似乎与official parameters for APNs一致。使用GCM或FCM时,要使用的参数不同(请参阅链接)。
是否在Android中为通知定义了标准格式,或者您是否可以在Android中设置任何数据,客户端必须手动处理和显示这些通知?
这取决于您计划使用的消息有效负载类型。 GCM / FCM有2 types of Messages,notification
和data
。
notification
消息只有可用的预定义参数集,而data
消息可用于拥有自定义键值对。两者通常由客户端处理,但请注意Android和iOS的行为会有所不同,具体取决于您使用的消息类型(请参阅链接)。
如何创建适用于两者的有效负载?
正如我在other post的评论部分中提到的那样:
您必须在自己的数据库/应用服务器中进行映射。是。我在这里想的是,每次在客户端应用程序端生成注册令牌时,您都会沿着设备类型(即“Android”,“iOS”)将其发送到您的数据库/应用服务器。因此,当您要发送消息时,首先必须检查设备的类型。我确实说过这是更多的工作,但这是让你控制事物的可靠方法。 AFAIK,开发人员有责任跟踪注册令牌以及与之相关的任何细节。
答案 1 :(得分:2)
不允许在aps标记内放置自定义标记。以下是有关该文件的文件:
提供者可以在Apple保留的aps命名空间之外指定自定义有效负载值。自定义值必须使用JSON结构化和原始类型:字典(对象),数组,字符串,数字和布尔值。 因此,在您的情况下,您应该执行以下操作:
{
"aps": {
"alert": "Hello World",
"sound": "default"
},
"Person": {
"Address": "Your address",
"Name": "Your Name",
"Number": "XXXXXXXXXX"
}
}
因此,您可以在主JSON中查找自定义有效内容,而不是在" aps"
中读取自定义有效内容