ios 8.0 下载并安装 iOS Push的前世今生(2)

电脑杂谈  发布时间:2018-02-12 23:39:06  来源:网络整理

APNS稳定性及成功率并不是那么高。大型app可以采用两种渠道提高通知用户的成功率。比如后面会讲到的voip Push的使用一般就是结合local Push使用。

Local Push比APNS更加灵活。参数更加多样。

......

如何选择

因为app不总是会运行的,Local Push提供了另一种提醒用户信息的方式。比如应用在后台没有被杀死的时候,从服务端拉取数据更新,本地就可以根据服务端返回的信息,删选出是否有用户感兴趣的部分,然后组织好消息,通过本地推送告诉用户。当然也可以用远程push。但是这个时候远程push并没有本地push可靠。

Remote Push一般在应用杀死的情况下才使用。用户主动去打开app,之后请求数据。

简单总结一下,如果能够直接拿到数据最好用本地push,如果拿不到,比如说应用被杀死采用远程push。

从用户角度,这两种Push没有任何区别,具体来讲我们可以控制Push的如下形式:

显示提示框还是横幅

app icon上显示的数字

显示横幅、数字、提示框所用的提示音

特别需要注意的几点:

App在前台运行的时候,通知不会展示出来(在iOS10之后可以在userNotificationCenter:willPresentNotification:

withCompletionHandler:进行处理,满足可以在前台显示通知)

点击通知,默认会自动打开推送通知的App

不管App是否打开,通知都可以发出

可以取消本地push

可以设定本地push的自定义处理action(控制点击Push是否打开App)

上面这几点注意事项可以在在UILocalNotification Class Reference找到(最好的资料还是官方文档)

本地推送(Local Push)

Local Push是不需要走APNS,让客户端更加灵活的控制。常见的比如一款闹钟App。app本地处理好推送逻辑,然后把推送逻辑交给系统。即使当app不在前台的时候也可以由系统发出通知告知用户。

App在启动的时候就需要对本地和远程推送进行设置,也就是不能晚于application:didFinishLaunchingWithOptions:调用。官方文档上说其实也可以,只要在处理只通知之前配置过就行。

配置推送

使用Push第一步需要向用户申请权限

iOS10之后直接用下面这代码

UNUserNotificationCenter* center = [UNUserNotificationCenter currentNotificationCenter];
[center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert + UNAuthorizationOptionSound)
   completionHandler:^(BOOL granted, NSError * _Nullable error) {
      // Enable or disable features based on authorization.
}];

注意:因为系统会保存用户的授权状态,所以下次启动的时候虽然调用了这代码,依然不会再次提示用户。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shouji/article-74387-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...