2017-01-10 38 views
10

我们正在使用FCM为iOS和Android发送远程通知。以下是我们从后端发送的有效载荷。iOS和Android的FCM远程通知负载

options = { 
    notification: { 
      title: "title", 
      body: body, 
      sound: 'default' 
    }, 
    priority: "high", 
    content_available: true, 
    data: { 
     type: 'type', 
     id: id, 
    } 
} 

这适用于ios和android。 但由于某种原因,我们需要在Android端发送title,bodysound作为data有效载荷中的密钥,并且需要移除notification有效载荷。

现在通知不接收IOS侧时的应用程序是不活跃,横幅通知未到达,但是当应用程序是活跃的数据被接收。 我们需要iOS侧的横幅。

notification键是mandetory在iOS中显示banner

如何在iOS和Android上使用相同的有效载荷。

options = { 

priority: "high", 
content_available: true, 
data: { 
     title: "title", 
     body: body, 
     sound: 'default' 
     type: 'type', 
     id: id, 
    } 
} 

另外尝试添加content_availablepriority键与各种组合。 通过所有FCM文档,它仍然混淆。帮助/建议表示赞赏。

+0

我们需要 “APS”:{ “内容可用”:1, “警告”: “警报”, “声音”: “默认”} iOS中这样的横幅 –

+0

@VinupriyaArivazhagan:我们正在使用FCM,所以有效载荷格式与您建议的默认值有点不同。 – preetam

+0

你有手动给它,当你正在创建你的有效负载消息 –

回答

1

对于FCM,让一个选项,以提供特定平台的具体PARAMS加入最近的一项功能,称为Platform Overrides

定制跨平台的消息

消息由FCM V1发送HTTP协议可以包含两种类型的JSON密钥对:

  • 所有应用程序实例都会解释的一组常用键接收消息。
  • 平台特定的密钥块只能由指定平台上运行的应用程序实例解释。
  • 平台特定块允许您灵活地为不同平台自定义消息,以确保在收到时可以正确处理它们。在许多情况下,在给定消息中使用公共密钥和特定于平台的密钥是有意义的。

当使用普通按键

  • 每当你在所有平台上指定的应用程式实例 - 的iOS,Android和网络
  • 当您将消息发送到主题

无论平台如何,所有应用程序实例都解释的常用键是message.notification.title,message.notification.body和message.data。

当使用特定于平台的按键

  • 当你想发送的字段只对特定的平台
  • 要除了发送特定于平台的领域的共同键

无论何时只想将值发送到特定的平台,都不要使用公共密钥;使用平台特定的密钥块。例如,要仅向iOS和web发送通知,而不是Android,则必须使用两个单独的密钥块,一个用于iOS,另一个用于Web。

当您使用特定的传送选项发送邮件时,请使用平台特定的键来设置它们。如果需要,您可以为每个平台指定不同的值;但即使您想跨平台设置基本相同的值,您也必须使用特定于平台的密钥。这是因为每个平台都可能会稍微区别价值 - 例如,Android上的生存时间以秒为单位设置为到期时间,而在iOS上则设置为到期日期。

实施例:与平台特定的递送选项

以下V1发送请求发送公共通知标题和内容到所有平台,而且还发送一些特定于平台的覆盖通知消息。具体而言,请求:

  • 设置长时间生存Android和网络平台,而APN的(IOS)消息优先级设置为低设定
  • 设置适当的键定义的结果用户分别点击Android和iOS上的通知 - click_action和category。
{ 
    "message":{ 
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", 
    "notification":{ 
     "title":"Match update", 
     "body":"Arsenal goal in added time, score is now 3-0" 
    }, 
    "android":{ 
     "ttl":"86400s", 
     "notification"{ 
     "click_action":"OPEN_ACTIVITY_1" 
     } 
    }, 
    "apns": { 
     "headers": { 
     "apns-priority": "5", 
     }, 
     "payload": { 
     "aps": { 
      "category": "NEW_MESSAGE_CATEGORY" 
     } 
     } 
    }, 
    "webpush":{ 
     "headers":{ 
     "TTL":"86400" 
     } 
    } 
    } 
} 

对在邮件正文中的特定于平台的块中可用的密钥完整细节见HTTP v1 reference documentation。有关构建包含消息正文的发送请求的更多信息,请参见Build Send Requests