版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1337934
iOS10出来也有一段时间了,对项目中的一些功能也适配了iOS10,但对于苹果这次改动较大的推送本人在当前项目中却没有进行适配,因为我发现在iOS10环境下我的推送还是可以用。当然适配iOS10是必然的,这里就说一下。(声明:当前项目中用的是友盟推送)
对于客户端来说,推送有三种情况:1.程序在前台运行 2.程序在后台运行 3.程序不在运行
先看下本人在iOS10之前的推送代码:
当程序在运行(前台、后台)时接收到通知:
如果是在后台运行在点击推送消息后就会直接进行页面的跳转,如果是在前台运行需要用户进行跳转的选择,示意图:
当程序不在运行时接收到通知:
此方法写在didFinishLaunchingWithOptions中。点击推送消息启动程序,进入程序后同样需要用户进行跳转的选择,示意图同上。
由于我用了跳转选择所以即使不适配iOS10也没关系,因为如果在iOS10环境下运行就不会再走didReceiveRemoteNotification这个方法了。
适配iOS10是必然的,下面是适配iOS10的代码:
疑问:iOS10之后不走didReceiveRemoteNotification方法,为什么alertView控件还能显示出来?
解答:alertView是通过走iOS10新增的方法显示出来的。
2017.10.18新增内容:
友盟推送新、旧版本推送的内容:
// 新版(适配iOS10)
userInfo2:{
aps = {
alert = {
body = "\U5185\U5bb9";
subtitle = "\U526f\U6807\U9898";
title = "\U4e3b\U6807\U9898";
};
sound = default;
};
d = uu84330150829462222811;
p = 0;
}
// 旧版本
userInfo2:{
aps = {
alert = "\U5185\U5bb9";
sound = default;
};
d = uu35928150829477708211;
p = 0;
}