我们认为默认情况下Android的推送通知是静默通知,必须是以编程方式在屏幕上发出通知的开发人员。或者默认情况下推送通知不是静默的?
今天我们使用我们的应用程序从GCM服务器收到的这个JSON结构。
{
"data":
{
“Type” : “2”,
“_dId” : “3718829”,
“_mId” : “9924012”,
“_msg” : “HOLA JVE”,
“collapse_key” : “9924012”
},
"to" : "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
此结构对静默通知有效还是有其他结构? 我们在这个话题上真的很丢失。在这个问题之后,任何人都有一个带有消息和标题标签的Android推送通知的json结构?
其他问题:向用户显示静默通知时?当用户打开应用程序或用户解锁手机时?
答案 0 :(得分:2)
或者推送通知默认情况下不是静音?
有两种方式可以在Android中收到通知,或者是通知托盘,或者您自己在onMessageReceived()
处理通知,具体取决于您使用的有效负载(Notification
或Data
)
根据您的询问(无声推送通知),我猜您更喜欢后者,因为您将能够自己处理它。根据{{3}}:
当您希望GCM代表客户端应用程序显示通知时,请使用通知。 当您希望应用处理显示或处理Android客户端应用中的消息时使用数据消息,..
所以你现在正在使用的(data
有效载荷)应该没问题。但是,如果您的有效负载中 notification
和data
,则必须考虑应用的状态。对于此GCM Payload docs,data
有效负载:
App state Notification Data Both
Foreground onMessageReceived onMessageReceived onMessageReceived
Background System tray onMessageReceived Notification: system tray
Data: in extras of the intent.
..任何人都有一个带有消息和标题标签的Android推送通知的json结构?
正如我在上面链接的文档中所提到的那样:
数据消息只有自定义键/值对。
所以我认为只要不是保留字就可以使用密钥,如FCM docs所述:
密钥不应该是保留字(“from”或以“google”或“gcm”开头的任何字词)。请勿使用此表中定义的任何单词(例如collapse_key)。
向用户显示静默通知时?当用户打开应用程序或用户解锁手机时?
我认为我上面提到的内容几乎涵盖了这一部分(见表)。
答案 1 :(得分:1)
在Android上,与iOS不同,该应用负责创建和显示推送通知。所以,是的,默认情况下你可以认为它们是无声的,尽管你并没有在Android上完全拥有这个概念。
我通常做的是,如果不显示通知,请添加silent
字段。例如:
{
"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification" : {
"body" : "Will not show this message",
"title" : "Portugal vs. Denmark",
"icon" : "myicon"
"silent": "true"
}
}
然后您可以使用静默字段根据if
语句显示或不显示通知。