我正在尝试让我们的iOS应用程序接收“数据”负载通知。目前,我们可以按照以下方式发送GCM
我无法看到任何从GCM发送到应用程序的内容(在
notification
推送通知:https://developers.google.com/cloud-messaging/concept-options(FCM具有相同的文本)。您可以使用 CURL 进行简单的测试。curl -X POST \
https://gcm-http.googleapis.com/gcm/send \
-H 'authorization: key=##_GCM_SERVER_ID_##' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-H 'postman-token: ##_POSTMAN_TOKEN_##' \
-d '{
"notification": {
"body": "Test body"
},
"to" : "##_DEVICE_TOKEN_##"
}
'
这将成功触发iOS AppDelegate.didReceiveRemoteNotification:fetchCompletionHandler
函数。
然而,如果将其更改为data
通知:
curl -X POST \
https://gcm-http.googleapis.com/gcm/send \
-H 'authorization: key=##_GCM_SERVER_ID_##' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-H 'postman-token: ##_POSTMAN_TOKEN_##' \
-d '{
"data": {
"body": "Test body"
},
"to" : "##_DEVICE_TOKEN_##"
}
'
我无法看到任何从GCM发送到应用程序的内容(在
didReceiveRemoteNotification
函数中),即使应用程序在后台/前台都是如此。尽管文档中说应该可以:https://developers.google.com/cloud-messaging/concept-options#notifications_and_data_messages
请注意以下特定于平台的细节:
- 在Android上,数据有效负载可以在用于启动您的活动的Intent中检索。
- 在iOS上,数据有效负载将在didReceiveRemoteNotification:中找到。