我从我的网页空间通过PHP推送通知到我的快速2应用程序。我这样做是为了:
$body['aps'] = array('alert' => 'HELLO', 'badge' => 1, 'sound' => 'default');现在,我也想处理无声的推送通知。我明白了,我可以这样默默地推下去:
$body['aps'] = array('content-available' => 1);在我的应用程序代表中,我在收到一个无声的推送后做了一些事情。
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) {
print("DO SOMETHING IN THE BACKGROUND")
handler(UIBackgroundFetchResult.NewData)
}
return
}这个很好用。但是现在的问题是,如果我也发出一个正常的推送,这个打印就会每次都来。
那是不对的。打印“在后台做一些事情”应该执行,只有当一个无声的推送将被接受。
我做错了什么?
发布于 2016-04-19 22:40:31
以下列方式修改代码:
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标志指示的)。
https://stackoverflow.com/questions/36403470
复制相似问题