背景介绍
通过友盟统计到的崩溃,绝大多数都是定位到了极光推送的相关函数
项目中极光推送的版本是2.1.0,现在从官网上看到的版本是3.0.0
这个帖子的4楼为什么很多的 iOS app 都有秒退现象?有什么好方法避免它?也说极光推送带来了一堆崩溃问题
开发者技术邮箱:support@jiguang.cn,已经发了邮件。当天下午收到回复,第二天打开邮箱就看到了。建议是升级到JPush iOS SDK v3.0.0
提问可以到极光社区推送技术支持QQ群:276533421,已经申请加群。当天加入,有问题可以直接在群里面提。当前的版本是2.1.0,对方的建议是升级到3.0.0,估计对这一块有修复。
极光社区有2.2.0版本崩溃的讨论,可是也没有结论JPushSDK崩溃,求解决
这个也是2.1.0的错误,看来2.*版本的bug还是比较多的多次调用极光引起堆溢出
消息形式
通知,会出现在通知栏,走苹果的APNs通道
自定义消息,不会出现在通知栏,走TCP长链接,不走苹果的APNs通道。App进入后台或者关掉之后会失效。主要用于产品内部业务逻辑。
富文本,这个目前只有Android有,API不支持,暂时不适合用于商业产品
本地通知,相当于定时器,适用Todo、闹钟等任务,跟网络无关
推送目标
标签,每个用户可以打多个标签,不同的用户可以打相同的标签。可以根据标签,批量下发 Push 消息。
别名,每个用户只能指定一个别名,用来唯一确定用户
Registration ID,JPush 服务端分配的设备标识符。同一个手机不同 APP 的 Registration ID 是不同的。用来对单一设备进行推送。
用户分群,用户分群的筛选条件有:标签、地理位置、系统版本、注册时间、活跃用户和在线用户。分群有ID,可以根据这个ID,调用API对特定用户分群进行推送
推送原理
红线部分就是iOS普通的通知业务,JPush只是个“二传手”,基本上苹果API的一层封装,获得了介入app的一个入口
蓝线部分是TCP长连接,IM应用里面普遍都有的。对iOS来说,这个是有意义的,不然话,前后台都要自己写代码。并且这部分一般都是c和C++实现的,实现和维护都不是很容易(相对于Object-c API来说)
1, JPush Web Portal也是有意义的,可以不需要App Server介入,让运营就有能力进行消息推送。
集成
静态库,包含3个文件,直接接入工程
JPUSHService.h
jpush-ios-x.x.x.a
jcore-ios-x.x.x.a开启Application Target的Capabilities->Push Notifications选项