无声推送通知与正常推送通知

时间:2016-04-04 13:02:39

标签: ios swift apple-push-notifications

我通过PHP推送通知从我的网站空间发送到我的swift 2应用程序。 我是这样做的:

$body['aps'] = array('alert' => 'HELLO', 'badge' => 1, 'sound' => 'default');

现在我也想使用静音推送通知。 我了解到,我可以像这样发送无声推送:

$body['aps'] = array('content-available' => 1);

在我的app委托中,我在收到静默推送后做了一些事情。

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

   print("DO SOMETHING IN THE BACKGROUND")

    handler(UIBackgroundFetchResult.NewData)
  }
  return
}

这很好用。 但现在的问题是,如果我发送正常推送,那么每次打印都会出现。

这是不正确的。打印"在背景中做什么"只有在收到静音推送时才会执行。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

按以下方式修改代码:

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

    if let apsValue = userInfo["aps"] as? NSDictionary {
        if (apsValue["content-available"] as? Int == 1){
           print("DO SOMETHING IN THE BACKGROUND")
           handler(UIBackgroundFetchResult.NewData)
        }

    }
return
}

现在您的操作项目每次都在执行,但上面的代码会将其过滤掉,以便只有在静音推送时执行(如您所知,内容可用= 1标志。)< / p>