iOS通知有效负载中是否需要aps字典?我们可以为iOS和Android提供相同的有效负载吗?

时间:2017-02-14 05:23:24

标签: android ios google-cloud-messaging apple-push-notifications firebase-cloud-messaging

我刚刚开始处理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中设置任何数据,客户端必须手动处理和显示这些通知?

如何创建适用于两者的有效负载?

2 个答案:

答案 0 :(得分:3)

跨平台有效负载更新:为FCM添加了一项新功能,该功能提供了为特定平台提供特定参数的选项,称为Platform Overrides

您发布的样本有效负载似乎与official parameters for APNs一致。使用GCMFCM时,要使用的参数不同(请参阅链接)。

  

是否在Android中为通知定义了标准格式,或者您是否可以在Android中设置任何数据,客户端必须手动处理和显示这些通知?

这取决于您计划使用的消息有效负载类型。 GCM / FCM有2 types of Messagesnotificationdata

notification消息只有可用的预定义参数集,而data消息可用于拥有自定义键值对。两者通常由客户端处理,但请注意AndroidiOS的行为会有所不同,具体取决于您使用的消息类型(请参阅链接)。

  

如何创建适用于两者的有效负载?

正如我在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"

中读取自定义有效内容