远程消息推送:5-管理App的Badge(远程服务器方式)
目前,在第三方推送服务平台中,都已经加入了对Badge的远程管理功能,开发者无需管理用户当前的Badge具体数值,而是由第三方推送服务平台的服务器来记录Badge的变化情况,从而减少了代码编写量。
JPush中有关Badge的操作方法
以极光推送为例,Badge的数值保存在极光的服务器中,在其SDK中,提供了两个有关Badge的操作方法.
- 设置JPush服务器(远程)中存储的Badge值
+ (BOOL)setBadge:(int)value;
示例:
[JPUSHService setBadge:10];
- 清空JPush服务器中存储的badge值
+ (void)resetBadge;
发送推送消息
在发送推送消息时,我们可以设置或更新用户当前Badge的数值。
- 直接显示推送消息中的badge数值
- 在原有的badge数值上,执行+1或者+N操作
更新服务器中的Badge值
当用户点击推送消息进入App时,我们需要通知服务器更新当前的Badge值,例如,执行-1操作。
在推送消息中,极光推送服务器,会把当前的badge值传递过来,我们需要做如下操作:
- 获取到当前的badge值
- 执行减1操作后,把最新的badge值再更新到服务器上
//以iOS10为例:
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
// Required
NSDictionary * userInfo = response.notification.request.content.userInfo;
NSLog(@"%@",userInfo);
//获取到当前的badge值
NSNumber *badgeNumber = [[userInfo objectForKey:@"aps"] objectForKey:@"badge"];
//执行减1操作后,把最新的badge值再更新到服务器上
[JPUSHService setBadge:([badgeNumber intValue] - 1)];
if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[JPUSHService handleRemoteNotification:userInfo];
}
completionHandler(); // 系统要求执行这个方法
}
运行结果:
文章发布时间为: November 19th , 2016 at 12:56 pm
最后编辑时间为: September 22nd , 2017 at 01:17 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 22nd , 2017 at 01:17 am
本文由 99ios 创作,转载请注明出处