推送通知未在后台iOS

时间:2016-04-29 04:58:17

标签: ios swift push-notification google-cloud-messaging

我正在通过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 ....]

有人能建议我正确的有效载荷格式吗?

3 个答案:

答案 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来解决这个问题,例如将您的请求配置为:

  1. 类型:POST;
  2. 生;
  3. url:https://api.pushy.me/push?api_key=YOUR_APP_API_KEY;
  4. Content-Type:application / json;
  5. 在体内,你需要发送一些东西,例如:

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

    有了这个,你就可以放置" content_available"内部关键" aps"并且不在内部"数据",当应用程序处于后台时,它将调用您的处理程序。