时间:2021-05-20
远程推送时 , 应用可能处于下列三种状态:
(1) . 应用开启时 , 应用在前台
(2) . 应用开启时 , 应用在后台
(3) . 应用未启动(应用被杀死)
从苹果APNS服务器远程推送时:
1 . 如果应用处于 (1) 状态 , 则不会发出声音 , 会直接调用appDelegate的代理方法didReceiveRemoteNotification,此时如果想收到类似系统的弹窗提示,则需要自定义弹窗,提示音,振动(弹窗可以参考 : ForeNotification (本地下载))
2 . 如果应用处于 (2) 状态 , 则会发出提示音, 点击推送消息 , 则会调用appDelegate的代理方法didReceiveRemoteNotification
3 . 如果应用处于 (3) 状态,则会发出提示音 , 点击推送消息 , 则会开启应用 , 在下面这个方法中会带上launchOptions这个参数,如果实现了application:didReceiveRemoteNotification:fetchCompletionHandler:这个方法,则会调用这个方法
收到远程推送后 , 可以跳转到消息界面 :
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ NSDictionary *aps = [userInfo valueForKey:@"aps"]; NSDictionary *alert = [aps valueForKey:@"alert"]; NSString * body = alert[@"body"]; if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) { //处于前台时 [EBForeNotification handleRemoteNotification:@{@"aps":@{@"alert":[NSString stringWithFormat:@"%@",body]}} soundID:1312]; }else{ //处于后台时 [self gotoMessageVC]; }}#pragma mark - 检测是否从通知栏启动得应用- (void)checkIsLaunchedByNotification{ if (self.isLaunchedByNotification) { [self gotoMessageVC]; }}#pragma mark - 点击了通知菜单(当应用在前台时,收到推送,点击了自定义的弹窗,调用的方法)- (void)clickBannerView:(NSNotification *)notification{ NSDictionary * dict = notification.object; [self gotoMessageVC];}#pragma mark - 跳转到消息界面(点击通知菜单/点击通知栏启动应用时)- (void)gotoMessageVC{ if([self.window.rootViewController isEqual:self.tabBarController]){ if([self.tabBarController.selectedViewController isKindOfClass:[UINavigationController class]]){ UINavigationController * nav = self.tabBarController.selectedViewController; if (![nav.topViewController isKindOfClass:[MessagesViewController class]]) { MessagesViewController *messageVC = [[MessagesViewController alloc] init]; messageVC.hidesBottomBarWhenPushed = YES; [nav.visibleViewController.navigationController pushViewController:messageVC animated:YES]; } } }}静默推送
应用想收到静默推送需要满足的条件:
1.应用在前台/后台 (应用被杀死就收不到了)
2.应用实现了
application:didReceiveRemoteNotification:fetchCompletionHandler:
3.如果仅仅实现了application:didReceiveRemoteNotification:,没有实现application:didReceiveRemoteNotification:fetchCompletionHandler:,应用只有在前台时才能收到静默推送 , 应用在后台时,收不到静默推送
自定义消息推送
介绍: 极光推送提供了自定义消息推送 , 这种推送只有当应用在 前台 时才能收到 ; 当应用在 后台/被杀死 时,这时候的自定义消息被保存下来,直到应用处于前台时,应用才会收到.
使用场景: 当需要在前台处理大量数据的时候,可以使用自定义消息,例如应用某个模块需要更新了,这时候后台发送个自定义消息,等到应用启动了就可以自动去下载
// 使用自定义消息,需要在通知中心注册 // 注册通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveJPushCustomMessage:) name:kJPFNetworkDidReceiveMessageNotification object:nil];// 接收到JPush的自定义消息推送- (void)receiveJPushCustomMessage:(NSNotification *)notification { NSDictionary *userInfo = [notification userInfo]; NSString *title = [userInfo valueForKey:@"title"]; NSString *content = [userInfo valueForKey:@"content"]; NSDictionary *extra = [userInfo valueForKey:@"extras"]; }总结:
1.应用在后台/前台/被杀死,都可以收到普通的远程推送
2.应用被杀死时,可以通过Background Fetch短时间唤醒应用
3.应用在后台/前台时,可以通过静默推送,修改一些数据
4.自定义消息应用在
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、引言IOS中消息的推送有两种方式,分别是本地推送和远程推送,本地推送在这篇博客中有详细的介绍,这里主要讨论远程推送的流程与配置过程。二、远程推送机制的原理1
推送通知,是现在的应用必不可少的功能。那么在iOS中,我们是如何实现远程推送的呢?iOS的远程推送原理又是什么呢?在做iOS远程推送时,我们会遇到各种各样的问题
IOS10远程推送适配iOS10推送新增了UserNotificationsFramework,使用起来其实很简单。建议看看极光推送的Demo,里面写的更详细。
实现的功能:通过代码定时给手机推送短信,短信内容可以自定义文字,当然你也可以去别的网站爬取每日心灵鸡汤,天气预报或其它信息进行推送。关于爬取数据可以参考:Pyt
本文给大家分享angular.js学习笔记之自定义指令实例代码讲解,具体代码如下所示:AngularDirective/*Angular.js自定义指令的格式和