苹果远程推送,后台执行代码
2017-12-18 本文已影响117人
爆炸的白菜君
image.png
image.png
IMG_40F2EDB84A78-1.jpeg
当有content-available字段的时候,就可以在后台做一些事情。
在appdelegate里面会执行
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
在这个方法里可以拿到后台推给你的json数据,解析数据执行你想要的操作
🌰:
{
"aps": {
"alert": {
"title": "aaa",
"body": "内容体"
},
"badge": 6,
"sound": "default"
},
"paramData": {
"toUserNum": "toUserNum",
"type": "CLIENT_NEWS"
}
}
这种消息推过来,就不会执行上面的方法。。。亲测。。。
如果你的app在后台,但是想在收到推送以后执行一点代码的话,可以试试
静默推送
在不打扰用户的情况下,推给app消息,让app执行某一个操作
静默推送的要求是
1.aps对应的value里面不能出现alert, sound, badge。但是可以自定义任何合法的参数字段例如
{"aps":{"content-available":1,"haha":"hhh"}}
在推出去以后,app会执行这个方法
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
打印结果
image.png
但是手机一直很安静🙄,不会出现任何的推送提示,就是不会出现下面的这种样子
IMG_40F2EDB84A78-1.jpeg
网上有些其他人写的,好像有点过时了,踩了几个坑。。。亲测~ 亲测~