iOS消息推送,alert内容相关

  项目用到了APNs推送(采用了极光推送),推送的用法什么的在此就不做赘述了。app中有这样一个功能,亲友测量了血压,然后其他亲友会收到相应的推送,然后点击查看。OK,非常简单。

  然后就开始了,用户通过血压计测量了血压以后,上传数据至app,然后app简单处理以后上传数据至服务器,服务器经过计算,然后推送响应的消息至其他客户端。做后台的同学把数据处理完成以后,然后就推过来了。格式大概是这样子的:

{"ios":{"sound":"","badge":"+1","alert":"{\"createtime\":\"1449714357908\",\"data\":{\"bp\":{\"age\":\"6\",\"borthday\":\"2009-10-13 00:00:00.0\",\"diastolic_pressure\":\"100\",\"family_role\":\"yeye\",\"id\":\"26006\",\"nikename\":\"**\",\"occupation\":\"体力劳动\",\"pulse\":\"80\",\"save_time\":\"1449714357000\",\"sex\":\"男\",\"source\":\"测试设备来源\",\"state\":\"0\",\"systolic_pressure\":\"120\",\"userbh\":\"18351883607\",\"userid\":\"291\"},\"prop\":{\"healthclasstype\":\"3\",\"healthsuggests\":\"您的血压测量值过高,请严格调整作息,控制饮食,戒烟戒酒。如遇身体不适,请及时就诊。请密切关注血压,每天测量。\",\"healthtip\":\"您患有中度高血压,请遵医嘱控制血压。\",\"memo\":\"\"}},\"msgtype\":\"1\"}"}}

**测量了血压,血压过高。;Android的做法是收到推送以后,再进行处理,然后才显示推送消息,然后也实现了,我说iOS实现不了,至少我所接触到的没有人这么做啊。主管说了,不可能吧?你去再查一查。好了,那就扒一扒apple的官方文档吧。

https://developer.apple.com/library/mac/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html#//apple_ref/doc/uid/TP40008194-CH100-SW20

  官方的解释是这样的:

alert在iOS上 苹果手机alert_iOS

Keys and values of the aps dictionary

        alert的value类型可以为string或者dictionary,如果是string的话,这个string将直接作为alert的内容推送过来,如果是dictionary,则参照下边的图片

alert在iOS上 苹果手机alert_服务器_02

Child properties of the alert property

        title作为消息的title,body作为alert的内容。说白了,alert的内容不能自己二次处理。从苹果推送的机制上来看,也是不能修改alert内容的,因为苹果的推送是由苹果推送中心推过来的,然后点击推送的消息进入app以后才有机会去处理消息内容,所以不可能在消息过来之前app先处理再显示推送。

        以上。