iOS 消息推送 点击app图标 app icon如何获取推送信息 leanCloud 点击app图标 获得推送消息
2015-12-31 10:35
1041 查看
最近在做消息推送,点击app图标的时候获取不到推送内容,相当的蛋疼,还有就是如果接收到了多条推送信息,那么点击一个推送提示框,只能显示一个,其他的就没有,这个问题困扰很久了,现在有了解决的方法:
当应用是被通知打开的时候,你可以通过
dictionary 访问到数据:
dictionary 访问到数据:
上面这些大家都知道,现在关键来了,怎么样在点击app图标的时候获取信息呢,
不管是应用在后台运行,还是完全关闭,只要点击应用图标,应用肯定会走,applicationdidbecomeactive 这个方法,那么我们就在这个方法里面进行操作,前提是,后台必须有保存推送信息的表(当后台进行推送的时候,推送完成之后,将推送的内容保存在数据库中,供客户端在需要的时候进行查找)比如一个notification_log表,具体的操作:
1,后台创建表,保存数据
2,客户端在应用进入前台的时候在 上面那个 delegate方法中进行如下代码的操作
a,NSInteger notificationBadge = application.applicationIconBadgeNumber;这个是badge
就是现在的应用收到的推送数量
b,如果notificationBadge == 0 那就不进行操作,如果不等于零,那就在数据库中进行查询,然后获得这个数据里面的最后notificationBadge个数据,
c,当然推送的群体可能不同,可能是给某些用户推送的信息,那就在查询数据的时候添加筛选条件,把符合当前用户能够接收的消息查找出来,之后再获取最后的notificationBadge个数据,
d,之后,就是进行数据的判断操作,和相应的跳转
下面是我用leanCloud平台的API写的demo:
仅供参考,具体的思想就是,建立一个表,在表里面取得当前消息个数的数据,进行保存,显示,
如果对您有帮助,请帮忙赞一个,谢谢,
注:在我的应用中可用.
当应用是被通知打开的时候,你可以通过
application:didFinishLaunchingWithOptions:方法的
launchOptions参数所使用的
dictionary 访问到数据:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { . . . // Extract the notification data NSDictionary *notificationPayload = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]; // Create a pointer to the Photo object NSString *photoId = [notificationPayload objectForKey:@"p"]; PhotoVC *viewController = [[PhotoVC alloc] initWithPhoto:object]; [self.navController pushViewController:viewController animated:YES]; }如果当通知到达的时候,你的应用已经在运行,那么你可以通过
application:didReceiveRemoteNotification:方法的
userInfo参数所使用
dictionary 访问到数据:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ NSString *photoId = [userInfo objectForKey:@"p"]; //然后在这里面处理 }
上面这些大家都知道,现在关键来了,怎么样在点击app图标的时候获取信息呢,
不管是应用在后台运行,还是完全关闭,只要点击应用图标,应用肯定会走,applicationdidbecomeactive 这个方法,那么我们就在这个方法里面进行操作,前提是,后台必须有保存推送信息的表(当后台进行推送的时候,推送完成之后,将推送的内容保存在数据库中,供客户端在需要的时候进行查找)比如一个notification_log表,具体的操作:
1,后台创建表,保存数据
2,客户端在应用进入前台的时候在 上面那个 delegate方法中进行如下代码的操作
a,NSInteger notificationBadge = application.applicationIconBadgeNumber;这个是badge
就是现在的应用收到的推送数量
b,如果notificationBadge == 0 那就不进行操作,如果不等于零,那就在数据库中进行查询,然后获得这个数据里面的最后notificationBadge个数据,
c,当然推送的群体可能不同,可能是给某些用户推送的信息,那就在查询数据的时候添加筛选条件,把符合当前用户能够接收的消息查找出来,之后再获取最后的notificationBadge个数据,
d,之后,就是进行数据的判断操作,和相应的跳转
下面是我用leanCloud平台的API写的demo:
- (void)getNotifigationFromData:(UIApplication *)app{ NSInteger notificationBadge = app.applicationIconBadgeNumber; ZYSystemPushManager *manager = [ZYSystemPushManager manager];//写的一个单例类,用来存储数据 if (notificationBadge == 0) { [self viewControllerIRootViewController]; }else{ [[LZPushManager manager] findNotification:^(NSArray *objects, NSError *error) {
//这个是封装的一个方法,用来回调查找结果 if (error) { NSLog(@"查找通知失败%@",error); }else{ //我的数据库的表里面有个data字段,data字段存储的json字符串,把他转成字典格式 for (NSInteger i = notificationBadge; i > 0; i--) { NSString *notiStr = [objects[objects.count - i] objectForKey:@"data"]; NSLog(@"notistr...........%@",notiStr); if (notiStr) { NSData *jsonData = [notiStr dataUsingEncoding:NSUTF8StringEncoding]; NSError *err ; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; if (err) { NSLog(@"有错误%@",err); }else{ NSLog(@"%@",dic); if(dic){
NSString *toWhere = [dic objectForKey:@"page-path"]; if([toWhere isEqualToString:@"systemMessage"]){ [manager.noticeAry addObject:dic];//在这里进行数据的判断,然然添加啊到数组里面,在相应的页面进行调用 } } } } } [[NSNotificationCenter defaultCenter] postNotificationName:@"NotificationUpdata" object:nil]; } }]; [self viewControllerIRootViewControllerToPushMessageVC]; } }
- (void)findNotification:(AVArrayResultBlock)callback{ AVQuery *query = [AVQuery queryWithClassName:@"NotificationLog"];
//在channels 字段的数据,要被包含在后面那个数组里面,
[query whereKey:@"channels" containedIn:@[@"normaluser",@"all"]];//查找条件 [query findObjectsInBackgroundWithBlock:callback]; }
仅供参考,具体的思想就是,建立一个表,在表里面取得当前消息个数的数据,进行保存,显示,
如果对您有帮助,请帮忙赞一个,谢谢,
注:在我的应用中可用.
相关文章推荐
- javaScript中push函数用法实例分析
- jquery中push()的用法(数组添加元素)
- perl push的用法及子程序返回值的反思
- javascript使用数组的push方法完成快速排序
- JavaScript使用push方法添加一个元素到数组末尾用法实例
- JavaScript数组函数unshift、shift、pop、push使用实例
- 简介JavaScript中的push()方法的使用
- 通过 Push 来提高移动应用的活跃度 3ff0
- Eclipse中Pull参数问题
- Git使用入门 - 在Git上新建项目
- 基于dwr2.0的Push推送技术详细解析以及实例
- 将在本地创建的Git仓库push到Git@OSC
- Fail to push agent from Primary site to client machine
- iOS 自定义动画 push/pop动画
- 使用友盟消息推送中遇到的哪些问题--索引(开发者必读)
- iOS(iOS7 iOS6)推送教程(一步一步实现,简单易懂)
- 在 Android 上应用极光推送实现 Push 功能
- push没反应
- gcm 推送注册失败
- 掌握Push才能提高APP打开率