经过对百度&友盟&极光&AVOS这几家的iOS推送的文档研读,demo试用,综合上述四者整理出一份简洁的功能需求要点。
?
添加应用页面
页面上应有上传p12证书和设置密码的功能。(分别为开发环境和正式环境)
AVOS和百度要求证书必须不设密码,但因为使用到的开源库的要求,还是应该要求设置密码。
其中友盟支持的证书格式为pem和p12两种,其他都只支持p12,为简单起见我们只支持p12。
页面上应该有链接来提示用户如何生成证书,这样显得比较友好。
?
应用设置&详情页面
展示了应用的一些数据,如AppKey,创建时间等。并能重新上传证书和设置密码。以及各平台的一些元数据,各平台的元数据是否在同一个页面展示有待商榷,下面只关注iOS的元数据。
Bundle ID(iOS) :这是从p12证书解析得到的,展示给用户可以提示用户设置好对应的Bundle ID。
APNS推送环境(iOS)的状态:
?开发环境: ${status}
?生产环境: ${status}
其中status的取值范围是:未上传,已验证,验证失败。
上传的证书很有可能是不符合要求的,比如:
验证的流程是使用该证书来尝试连接APNS服务,如果连接成功表示通过验证。
其中已验证或者验证失败的情况应该出现一个刷新按钮,可通过点击该按钮来尝试重新验证。
最好能给用户准确的错误提示,显得更有诚意,因为一开始在证书方面难免出错。
最后有一个保存按钮,点击则更新数据。
?
发送APNS推送页面
此页面用来发送推送消息。主要元素如下:
?
发送应用内消息推送页面(可选)
目前只有极光实现了应用内消息推送,这是为了弥补APNS的局限,这里也一并介绍,后续考虑实现。
应用内发送的优点有以下几点:
另外以下摘自极光文档:
应用内消息:为了保证推送的可靠性,JPush SDK 提供了应用内消息,当应用打开后可以直接从JPush server 获取推送消息。此消息不经过 APNS 服务器。?
如果只需要发送通知,则可以忽略应用内消息的处理。对于两种消息的代码处理可以参考API部分的描述。
推送原则 |
每次推送都会发给APNS 服务器发送经由APNS服务器下发到手机。 |
每次推送都会尝试发送,如果用户在线则立即发送。 |
离线消息 | 离线消息由APNS服务器缓存按照apple的逻辑处理。 | 用户不在线JPush server 会保存离线消息。离线消息保留5条。 |
是否有APNS生产和开发环境区别。 |
是,只有证书和应用环境匹配才可以收到。 |
否,应用内消息与iOS 环境这是状态无关。 |
接收方式 |
应用退出,后台或者是打开是都会收到APNS |
需要应用打并与jpush 建立连接,然后接收离线消息和在线消息。 |
展示效果 |
如果应用后台或退出,会以系统通知方式展现。 如果应用处于打开状态,不展示。 |
默认不展示。 |
处理函数 |
didReceiveRemoteNotification |
networkDidReceiveMessage |
?
发送页面跟发送APNS消息相比有以下不同之处,其他地方都一样:
?
统计 & 定时消息 & 历史消息页面
统计页面大同小异,这里不赘述。
原文:http://damacheng009.iteye.com/blog/2164775