1、通过极光推送测试推送到来后点击alert或图标的效果:
a、关闭
(1) 推送 -> 点击alert -> 进入app:接收通知,进入委托
(1) 推送 -> 点击图标 -> 进入app:接收通知,没有进入委托
b、后台
(1) 推送 -> 点击alert -> 进入app:接收通知,进入委托
(1) 推送 -> 点击图标 -> 进入app:接收通知,没有进入委托
c、前台
(1) 推送 -> 点击alert:接收通知,进入委托
(2) 推送 -> 不点击alert:接收通知,进入委托
2、BabySister业务场景和解决方案:
a、业务场景:
(1) app未启动或在后台:推送到来,更新图标的角标,用户点击alert进入app,直接进入指定页面。用户退出app后,删除图标上角标。
(2) app未启动或在后台:推送到来,更新图标的角标,用户点击图标进入app,直接进入指定页面。用户退出app后,删除图标上角标。
(3) app启动并且在前台:推送到来,更新指定页面的角标,用户点击alert,跳转到指定页面。
(4) app启动并且在前台:推送到来,更新指定页面的角标,用户没有点击alert,不跳转。
b、解决方案
默认的推送可以实现业务场景(1)、(3)和(4),业务场景(2)通过增加自定义消息实现。前端无法确定用户是使用哪种方式触发通知,所以后台必须同时实现推送和自定义消息,以保证任何场景下都可以收到通知并显示角标。
实现:
(1) 推送和自定义消息到来,AppDelegate中发起本地通知。
(2) UITabBarController负责页面切换,添加观察者监测AppDelegate的通知,根据通知的不同情况,切换页面和更新角标。
(3) 点击指定页面(UITabBarItem)的通知,删除角标。