2016-04-29 118 views
0

我正在通过GCM在我的项目中推送通知。我的应用程序能够在前台接收通知,但不能在后台接收通知。推送通知不在后台接收iOS

我收到一个消息的方法

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) 

内当应用程序在前台,但我没有得到任何调用方法

func application(application: UIApplication, 
    didReceiveRemoteNotification userInfo: [NSObject : AnyObject], 
    fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) 

当在后台模式下应用。

我在互联网上搜索了很长时间,才知道这是我收到的有效载荷格式的问题。我收到的有效载荷看起来像

[通知:{ “体”: “任何东西”, “称号”: “任何标题”},优先级:高,content_available:真,至:kcF23gblKok ..., collapse_key:do_not_collapse,from:7812 ....]

任何人都可以告诉我正确的载荷格式吗?

+0

如果在应用程序未运行时推送到达,则不执行任何代码。查看http://stackoverflow.com/questions/11153631/increment-the-push-notification-badge-iphone – ozgur

+0

我确切的问题是,我没有收到任何消息,当应用程序进入后台模式。在前景模式下,所有消息都成功接收。 – SAJITH

+0

你打开了背景模式功能吗? – mmtootmm

回答

4

使用该有效载荷

{ 
    "aps": { 
     "alert": "Hello World", 
     "sound": "default" 
     "content-available" :1 
    } 
} 

随着内容可用启用:

1应用程序是在前台

显示

申请号系统警报:didReceiveRemoteNotification:fetchCompletionHandler:被称为

2应用程序在后台

系统警报显示

应用:didReceiveRemoteNotification:fetchCompletionHandler:被称为

3App处于挂起

应用程序状态更改为背景

系统警报显示

application:didReceiveRemoteNotification:fetchCompletionHandler:被调用

4应用程序无法运行,因为用户终止

系统警报显示

没有回调被称为

+0

谢谢,但仍未在背景模式下在后台模式下收到通知 – SAJITH

+0

已选中远程通知选项 –

+0

是的。我已经检查过远程通知 – SAJITH

0

在这种模式

{ 
    "to": "ID", 
    "notification": { 
     "sound": "default", 
     "title": "TITLE", 
     "body": "BODY" 
    }, 
    "priority": "high" 
} 
0

创建通知谁打交道的人与Pushy而不是GSM,当应用程序在后台时,可能不会调用pushy的完成处理程序,因为这样:

即使你配置通知有效载荷与propriate键和值,例如:

{"to":"device***Token", "data": {"message": "Hello World!"}, "notification": {"title": "test", "body": "my message"}, "content_available": true} 

,并使用爱出风头的控制台发送,它发生,所有这些数据都放在爱出风头的网站领域:“通知数据” 。因此,使用控制台我们发现无法发送:true,对于key:“content_available”,这是在应用程序处于后台时涉及处理程序的必要步骤。

您可以通过使用邮差例如,配置你的要求,因为这摆脱这种:

  1. 类型:POST;
  2. raw;
  3. url:https://api.pushy.me/push?api_key=YOUR_APP_API_KEY;
  4. Content-Type:application/json;

而且在您需要发送的身体地方的东西,例如:

{"data":{"message": "Hello World!"},"tokens":["device***Token"],"content_available": true} 

有了这个,您需要将“content_available”键内的“APS”,而不是内部的“数据”,这将在应用程序处于后台时调用处理程序。