推送通知不在后台iOS中接收
我正在通过GCM在我的项目中推送通知。 我的应用程序能够在前台收到通知,但不能在后台收到通知。
我在方法里面收到一条消息
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
当应用程序在前台,但我没有得到任何调用的方法
func application( application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void)
当应用程序在后台模式。
我在互联网上search了很长时间,才知道这是我收到的有效载荷格式的问题。 我收到的有效载荷看起来像
[通知:{“body”:“任何东西”,“标题”:“任何标题”},优先级:高,content_available:true,至:kcF23gblKok ….,collapse_key:do_not_collapse,from:7812 ….]
任何人都可以build议我有效载荷的正确格式?
使用这个有效载荷
{ "aps": { "alert": "Hello World", "sound": "default" "content-available" :1 } }
启用内容可用:
1个应用程序在前台
没有显示系统警报
应用程序:didReceiveRemoteNotification:fetchCompletionHandler:被调用
2应用程序是在后台
显示系统警报
应用程序:didReceiveRemoteNotification:fetchCompletionHandler:被调用
3App处于暂停状态
应用程序状态更改为后台
显示系统警报
应用程序:didReceiveRemoteNotification:fetchCompletionHandler:被调用
4应用程序没有运行,因为用户死亡
显示系统警报
没有callback被称为
以这种模式创build通知
{ "to": "ID", "notification": { "sound": "default", "title": "TITLE", "body": "BODY" }, "priority": "high" }
对于那些正在处理Pushy而不是GSM的人,pushy的完成处理程序可能不会在应用程序处于后台时被调用,因为:
即使您使用有效的键和值来configuration通知负载,例如:
{"to":"device***Token", "data": {"message": "Hello World!"}, "notification": {"title": "test", "body": "my message"}, "content_available": true}
并发送它使用Pushy的控制台,它发生所有这些数据被放置在pushy的站点字段:'通知数据'。 所以使用控制台,我们发现没有办法发送:true,对于key:“content_available”这是必要的,当应用程序在后台时涉及处理程序。
你可以通过使用Postman来解决这个问题,例如configuration你的请求:
- 键入:POST;
- 生的;
- url: https : //api.pushy.me/push? api_key = YOUR_APP_API_KEY ;
- Content-Type:application / json;
并在身体上放置你需要发送的东西,例如:
{"data":{"message": "Hello World!"},"tokens":["device***Token"],"content_available": true}
有了这个,你会把“content_available”键放在“aps”里面,而不是放在“data”里面,这会在应用程序处于后台时调用你的处理程序。