[英]Push notification not receiving in background iOS
我正在通過GCM在項目中進行推送通知。 我的應用程序能夠在前台接收通知,但不能在后台接收通知。
我在方法內收到一條消息
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
當應用程序處於前台但我沒有收到該方法的任何調用時
func application( application: UIApplication,
didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void)
當應用程序處於后台模式時。
我在Internet上進行了很長時間的搜索,才知道這是我收到的有效載荷格式的問題。 我收到的有效負載看起來像
[通知:{“ body”:“ anything”,“ title”:“ any title”},優先級:高,content_available:true,收件人:kcF23gblKok ....,collapse_key:do_not_collapse,來自:7812 ....]
誰能建議我正確的有效載荷格式?
使用這個有效載荷
{
"aps": {
"alert": "Hello World",
"sound": "default"
"content-available" :1
}
}
啟用內容可用:
1個應用位於前景中
沒有顯示系統警報
application:didReceiveRemoteNotification:fetchCompletionHandler:
被調用
2應用程序處於后台
顯示系統警報
application:didReceiveRemoteNotification:fetchCompletionHandler:
被調用
3App已暫停
應用狀態更改為背景
顯示系統警報
application:didReceiveRemoteNotification:fetchCompletionHandler:
被調用
4應用未運行,因為被用戶殺死
顯示系統警報
沒有回調被調用
以這種模式創建通知
{
"to": "ID",
"notification": {
"sound": "default",
"title": "TITLE",
"body": "BODY"
},
"priority": "high"
}
對於那些正在處理Pushy而不是GSM的用戶,由於以下原因,在應用程序處於后台時,可能不會調用pushy的完成處理程序:
即使您使用適當的鍵和值配置通知有效負載,例如:
{"to":"device***Token", "data": {"message": "Hello World!"}, "notification": {"title": "test", "body": "my message"}, "content_available": true}
並使用Pushy的控制台發送數據,所有這些數據都放在pushy的site字段:“ NOTIFICATION DATA”中。 因此,使用Console時,我們找不到發送以下內容的方法:true,對於密鑰:“ content_available”,當應用程序在后台運行時,涉及到處理程序是necceserry。
您可以通過使用Postman來解決此問題,例如將請求配置為:
在身體上,您需要發送一些東西,例如:
{"data":{"message": "Hello World!"},"tokens":["device***Token"],"content_available": true}
這樣,您將“ content_available”鍵放置在“ aps”中而不是“ data”中,這將在應用程序處於后台時調用處理程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.