不同状态下的推送处理

1.为什么要使用推送?
  • 增加用户活跃度
  • 唤醒沉睡的用户
  • 增加用户粘度
  • 化被动为主动
    推送切记不能过于频繁,否则会起到相反的作用
2. 推送从服务器到达目标设备过程
  • 阶段一:服务端把要发送的消息和目标iOS设备的DeviceToken打包,发送给APNS;备注:DeviceToken不是一成不变的
  • 阶段二:APNS在自身的已注册Push服务的IOS设备列表中,根据DeviceToken查找对应iOS设备,并将消息发送到IOS设备;
  • 阶段三:IOS设备把发送的消息传递给对应的应用程序。
3. 实现推送以及程序不同运行状态时收到推送的相应处理

主要介绍程序分别在前台、后台和关闭时收到推送的处理和用户从桌 面进入和从通知栏进入的区别。对于证书的配置就不再赘述,网上有很多教程。本文是基于你的证书都已配置好,并且可以收到推送的情况。程序无论在前台、后台还是关闭的时候时都可以收到推送的,那收到推送的情况就可以分为三种:

  • 1.程序在前台时收到推送:
    在前台收到通知时,会调用下面这个方法,可以在这个方法里面实现收到通知时刷新或跳转界面的功能;程序在前台收到推送时通知栏不会弹出推送信息

    -(void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo{}
  • 2.程序在后台时收到推送:
    当程序在后台收到推送时,如果info.plist中配置了UIBackgroundModes会调用

     -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{ }

    如果用户点击通知栏信息进入程序会调用情况1中的方法,所以在情况1的方法里面需要根据程序在前台还是后台application.applicationState来执行不同操作

  • 3.当程序关闭时收到推送:
    程序关闭时收到推送时,用户点击通知栏信息进入应用的时会调用

    -(BOOL)application:(UIApplication *)application    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {}

    并且此时的launchOptions是有值的,即推送过来的信息。可以通过判断launchOptions是否为空,来执行你想要的操作。

- 4.关于未读消息数量角标

设置角标[UIApplication sharedApplication].applicationIconBadgeNumber=badgeNum;
这个方法的确可以设置应用程序的角标的数值。但是当程序关闭时,收到推送后我们要怎么改变桌面程序角标的数值呢?这个设置角标的方法写在哪里呢?所以我觉得最好的办法就是让服务推送过来的信息里加上'badge' = 88这个键值对。无论是你程序在后台还是关闭,只要推送过来的消息里面有这个键值对,设备就会自动的为你设置好角标的数值。我们要做的就是在我们阅读完一条消息的时告诉服务器,并且将[UIApplication sharedApplication].applicationIconBadgeNumber减一即可。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值