iOS - 本地通知
2016-04-20 21:26
639 查看
控制器中
当程序在后台收到通知,点击了通知之后想进入其它界面(比如:与XXX聊天的界面),但在程序一直在前台时收到通知这种情况下不进行跳转,可以在下面这个方法里进行跳转操作。
效果图:
从launchOptions里可以拿到传递过来的userinfo
PS:程序在前台收到通知的情况下,launchOptions这个属性是null,其它情况有对应的值,我们这里只需要在本地通知的情况下来进行界面跳转。
其它值如下
/** 发送本地通知按钮的点击事件 */ /** 发送本地通知 */ - (IBAction)fireLocalNote:(id)sender { // 1.创建本地通知 UILocalNotification *localNote = [[UILocalNotification alloc] init]; // 2.设置本地通知内容(通知时间和内容必须设置) // 2.1.设置通知发出的时间(5秒后发通知给我) localNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:5.0]; // 2.2.设置通知内容 localNote.alertBody = @"吃饭了吗?"; // 2.3.设置滑块的文字 localNote.alertAction = @"快点"; // 2.4.决定alertAction是否生效 localNote.hasAction = NO; // 2.5.设置点击通知的启动图片(这里可以随便写,不管写什么都是以显示Launch里的启动图!!) localNote.alertLaunchImage = @"xxx"; // 2.6.设置状态栏通知里的弹框标题(8.2才开始有的属性) localNote.alertTitle = @"hahaha"; // 2.7.设置有通知时的音效(一般使用默认的声音) // localNote.soundName = UILocalNotificationDefaultSoundName; // 也可以自定义声音 localNote.soundName = @"yaobuqi.wav"; // 2.8.设置应用程序图标右上角的数字 localNote.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1; // 2.9.设置额外信息(给AppDelegate.m中的didReceiveLocalNotification方法传递信息) localNote.userInfo = @{@"type" : @1}; // 3.调用通知 [[UIApplication sharedApplication] scheduleLocalNotification:localNote]; }
当程序在后台收到通知,点击了通知之后想进入其它界面(比如:与XXX聊天的界面),但在程序一直在前台时收到通知这种情况下不进行跳转,可以在下面这个方法里进行跳转操作。
/** * 当应用程序在进入前台,或者在前台的时候都会执行该方法 */ -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { // 针对应用程序在后台的时候进行跳转 if (application.applicationState == UIApplicationStateInactive) { // 从后台进入前台时 NSLog(@"进行界面的跳转"); NSLog(@"%@", notification.userInfo); // 可以通过通知的userInfo来确定跳转的界面 UIView *redView = [[UIView alloc] init]; redView.frame = CGRectMake(0, 0, 100, 100); redView.backgroundColor = [UIColor redColor]; [self.window.rootViewController.view addSubview:redView]; } }这样虽然可以实现我们需要的功能,但是在程序从后台中被清理掉后收到通知,再点击进去是不会调用该方法的,但是会调用didFinishLaunchingWithOptions这个方法,利用这一点可以对didFinishLaunchingWithOptions这个方法进行如下修改
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 设置应用程序图标右上角的数字 // [application setApplicationIconBadgeNumber:0]; if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) { // 声明要获取的权限 (弹框|图标修改|声音) UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]; // 注册获取通知权限 [application registerUserNotificationSettings:settings]; } // 界面跳转(针对应用程序被杀死的状态下的跳转) if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) { // 跳转代码 UILabel *redView = [[UILabel alloc] init]; redView.frame = CGRectMake(0, 0, 200, 300); redView.numberOfLines = 0; // 自动换行 redView.font = [UIFont systemFontOfSize:12]; redView.backgroundColor = [UIColor redColor]; redView.text = [NSString stringWithFormat:@"%@", launchOptions]; [self.window.rootViewController.view addSubview:redView]; } return YES; }
效果图:
从launchOptions里可以拿到传递过来的userinfo
PS:程序在前台收到通知的情况下,launchOptions这个属性是null,其它情况有对应的值,我们这里只需要在本地通知的情况下来进行界面跳转。
其它值如下
NSString *const UIApplicationLaunchOptionsURLKey; NSString *const UIApplicationLaunchOptionsSourceApplicationKey; NSString *const UIApplicationLaunchOptionsRemoteNotificationKey; NSString *const UIApplicationLaunchOptionsLocalNotificationKey; NSString *const UIApplicationLaunchOptionsAnnotationKey; NSString *const UIApplicationLaunchOptionsLocationKey; NSString *const UIApplicationLaunchOptionsNewsstandDownloadsKey; NSString *const UIApplicationLaunchOptionsBluetoothCentralsKey; NSString *const UIApplicationLaunchOptionsBluetoothPeripheralsKey; NSString *const UIApplicationLaunchOptionsShortcutItemKey; NSString *const UIApplicationLaunchOptionsUserActivityDictionaryKey; NSString *const UIApplicationLaunchOptionsUserActivityTypeKey;
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 浅析PHP微信支付通知的处理方式
- 探讨Android与iOS,我们将何去何从?
- Android中通知Notification使用实例(振动、灯光、声音)
- Android中的广播、服务、数据库、通知、包等术语的原理和介绍(图解)