我正在通过GCM在我的项目中进行推送通知。我的应用程序能够在前台接收通知,但不能在后台接收通知。
我在方法
中收到一条消息func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
当应用程序在前台时,但我没有调用方法
func application( application: UIApplication,
didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void)
当应用程序处于后台模式时。
我在互联网上进行了长时间的搜索,并且发现它是我收到的有效载荷格式的问题。我收到的有效载荷看起来像
[通知:{"正文":"任何","标题":"任何标题"},优先级:高,content_available :true,to:kcF23gblKok ....,collapse_key:do_not_collapse,from:7812 ....]
有人能建议我正确的有效载荷格式吗?
答案 0 :(得分:4)
使用此有效负载
{
"aps": {
"alert": "Hello World",
"sound": "default"
"content-available" :1
}
}
启用内容可用时:
1 App位于前景
未显示系统警报
application:didReceiveRemoteNotification:fetchCompletionHandler:
被称为
2 App在后台
显示系统警报
application:didReceiveRemoteNotification:fetchCompletionHandler:
被称为
3App处于暂停状态
应用状态更改为背景
显示系统警报
application:didReceiveRemoteNotification:fetchCompletionHandler:
被称为
4 App未运行因为被用户杀死
显示系统警报
没有调用回调
答案 1 :(得分:0)
以此模式创建通知
{
"to": "ID",
"notification": {
"sound": "default",
"title": "TITLE",
"body": "BODY"
},
"priority": "high"
}
答案 2 :(得分:0)
对于那些与Pushy而不是GSM打交道的人,当应用程序处于后台时,pushy的完成处理程序可能无法被调用:
即使您使用适当的密钥和值配置通知有效负载,例如:
{"to":"device***Token", "data": {"message": "Hello World!"}, "notification": {"title": "test", "body": "my message"}, "content_available": true}
并使用Pushy的控制台发送,所有这些数据都放在pushy的网站字段中:'通知数据'。所以使用Console我们发现无法发送:true,对于key:" content_available"当应用程序处于后台时,这是涉及处理程序的necceserry。
您可以通过使用Postman来解决这个问题,例如将您的请求配置为:
在体内,你需要发送一些东西,例如:
{"data":{"message": "Hello World!"},"tokens":["device***Token"],"content_available": true}
有了这个,你就可以放置" content_available"内部关键" aps"并且不在内部"数据",当应用程序处于后台时,它将调用您的处理程序。