推送通知-本地推送
来源:互联网 发布:diffie hellman算法 编辑:程序博客网 时间:2024/04/28 03:52
iOS推送通知
- 注意:这里说的推送通知跟NSNotification有所区别
- NSNotification是抽象的,不可见的
推送通知是可见的(能用肉眼看到)
iOS中提供了2种推送通知
- 本地推送通知(Local Notification)
- 远程推送通知(Remote Notification)
推送通知的作用
- 让app不在前台时,告示用户App的最新情况
推送通知的呈现方式
- 在屏幕顶部一块横幅
- 在屏幕中间弹出UIAlertView
- 同时可以播放音效
- 锁屏时展示
- App图标右上角额数字提示
本地推送通知(具体实现)
- 本地通知的作用:清理App缓存,记账,买衣服,看电影,玩游戏等
发送本地通知
/** 创建本地通知对象 */ UILocalNotification *localnotification = [[UILocalNotification alloc]init]; /** * 设置推送的相关属性 */ localnotification.fireDate = [NSDate dateWithTimeInterval:5.0 sinceDate:[NSDate date]];//通知触发时间 localnotification.alertBody = @"明天放假啦";//通知具体内容 localnotification.alertTitle = @"房租";//谁发出的通知 localnotification.soundName = @"buyao.wav";//通知时的音效 localnotification.applicationIconBadgeNumber = 1; localnotification.alertAction = @"查看更多精彩内容";//默认为 滑动来 +查看;锁屏时显示底部提示 /** * 调度本地通知,通知会在特定时间发出 */ [[UIApplication sharedApplication] scheduleLocalNotification:localnotification]; [[UIApplication sharedApplication] presentLocalNotificationNow:localnotification];//立即发出本通知
点击本地通知,会自动打开app
- 当用户点击本地推送通知,会自动打开app,这里有2种情况
- app并没有关闭,一直隐藏在后台
让app进入前台,并会调用AppDelegate的下面方法(并非重新启动app)
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
- app已经被关闭(进程已死)
启动app,启动完毕会调用AppDelegate的下面方法
//launchOptions参数通过UIApplicationLaunchOptionsLocalNotificationKey取出本地推送通知对象- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
具体代码如下:(要注意iOS8之后,需要获取用户授权)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //授权 if ([[UIDevice currentDevice].systemVersion floatValue]>=8.0) { /** * iOS8注册授权,设置本地通知模式 */ /* UIUserNotificationTypeNone = 0, 不发出通知 UIUserNotificationTypeBadge = 1 << 0, 改变应用程序图标右上角的数字 UIUserNotificationTypeSound = 1 << 1, 播放音效 UIUserNotificationTypeAlert = 1 << 2, 是否运行显示横幅 */ UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound |UIUserNotificationTypeAlert categories:nil]; /** * 然后注册通知 */ [application registerUserNotificationSettings:settings]; } /** * 如果程序正常启动(冷启动),launchOptions的参数为null * 如果程序非正常启动(热启动),launchOptions的参数时有值的 */ if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) { NSLog(@"%@",launchOptions); [self jumpToSession]; } return YES;}/** * 该方法,接收到本地通知执行,如果应用程序在前台,依然收到通知,但不应该执行跳转; 如果应用程序在后台,收到通知,点击通知,执行跳转代码; 应用程序被关闭,收到通知,但不能执行跳转代码,(需要在didFinishLaunchingWithOptions方法中执行) * */- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{ NSLog(@"收到本地通知"); [application setApplicationIconBadgeNumber:0]; if (application.applicationState == UIApplicationStateActive) { return; }else if (application.applicationState == UIApplicationStateInactive) { [self jumpToSession]; }else if(application.applicationState == UIApplicationStateBackground){ /** * 不会执行该代码 */ NSLog(@"在后台"); }}- (void)jumpToSession{ NSLog(@"执行跳转页面"); UIView *redView = [[UIView alloc]init]; redView.backgroundColor = [UIColor redColor]; redView.frame = CGRectMake(100, 100, 100, 100); [self.window.rootViewController.view addSubview:redView];}
文/Neal_iOS(简书作者)
原文链接:http://www.jianshu.com/p/205e01fe0c59
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
原文链接:http://www.jianshu.com/p/205e01fe0c59
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
0 0
- 推送通知-本地推送
- IOS本地推送通知
- 本地推送(通知)
- IOS 本地推送通知
- 本地通知,推送
- iOS 本地推送通知
- 本地推送通知UILocalNotification
- 本地推送通知
- iOS10推送 本地通知
- 本地推送通知和远程推送通知
- ios推送通知之本地推送
- 远程推送/本地推送通知demo
- IOS 本地推送通知方法
- ios推送:本地通知UILocalNotification
- ios推送:本地通知UILocalNotification
- ios推送:本地通知UILocalNotification
- ios推送:本地通知UILocalNotification
- ios推送:本地通知UILocalNotification
- 使用原生JS实现jQuery的addClass, removeClass, hasClass函数功能
- [leetcode] 【查找】 74. Search a 2D Matrix
- 用grunt搭建自动化的web前端开发环境
- 【Android】【ListView】The content of the adapter has changed
- java中的向上造型
- 推送通知-本地推送
- js动态改变a标签的id和内容
- nodejs 文件系统
- Advanced Bash-Scripting Guide
- HTTP协议
- Java构造与解析Json数据
- 让你相见恨晚的android权限业务实践
- Eclipse离线安装ADT插件
- java多线程(二)可阻塞队列BlockingQueue