我正在尝试设置静默推送通知,但我一直困扰于此问题。我发送给APN的JSON是:
{
"aps": {
"alert": "test",
"badge": 0,
"content-available": 1
}
}
代理方法是:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
var pushData = userInfo["aps"] as? [AnyHashable : Any];
if pushData?["content-available"] as? Int == 1 {
NSLog("received silent notification")
completionHandler(.noData)
} else {
NSLog("received notification")
completionHandler(.newData)
}
}
当后端发送推送通知时,我的应用程序处于后台。 XCode向我显示了“收到的静默通知”,但是此通知仍然正常弹出。你能告诉我,我在做什么错了?可能不应该发生,对吧?
在“后台模式”中选中“远程通知”来设置项目。
答案 0 :(得分:1)
用于静默推送通知的正确json负载应如下所示
{
"aps" = {
"content-available" : 1,
"sound" : ""
};
// add custom key-value pairs
}