我通过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
}
这很好用。 但现在的问题是,如果我发送正常推送,那么每次打印都会出现。
这是不正确的。打印"在背景中做什么"只有在收到静音推送时才会执行。
我做错了什么?
答案 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>