推送通知=======本地推送 ------通知一般都是在后台进行的,在前台就没必要使用了
/*
》>>>推送通知<<<《
*注意:这里所说的推送通知跟NSNotification有所区别,NSNotification是抽象的,不可见的,而推送通知是可见的
iOS中提供的2中推送通知:1.本地推送通知(Local Notification),2.远程推送通知(Remote Notification)
*推送通知的作用:1.可以让不在前台运行的app,告知用户app内部发生了什么事情————QQ后台消息
*推送通知的呈现效果:1.在屏幕顶部显示一块横幅 2.在屏幕中间弹出一个UIAlertView,还可以在呈现通知的同时播放音效(提醒用户),3.锁屏时也可以呈现。4.呈现推送通知的同时,还可以更新App图标的数字,5.用户接受的推送通知,都会展示在“通知中心”也就是从上往下划屏,就可以看到
*推送通知的呈现效果设置:显示横幅还是UIAlertView,取决于用户的设置(用户可以在手机设置-通知中心-应用程序-选择就行了),用户也可以决定是否开启一下4个功能:1.显示App图标数字、2.播放音效、3.锁屏显示、4.显示在“通知中心”
*推送通知的使用细节:1.发出推送通知时,如果程序正运行在前台,那么推送通知就不会被呈现出来、2.点击推送通知后,默认会自动打开发出推送通知的App、3.不管App打开还是关闭,推送通知都能如期发出
*注意:这里所说的推送通知跟NSNotification有所区别,NSNotification是抽象的,不可见的,而推送通知是可见的
iOS中提供的2中推送通知:1.本地推送通知(Local Notification),2.远程推送通知(Remote Notification)
*推送通知的作用:1.可以让不在前台运行的app,告知用户app内部发生了什么事情————QQ后台消息
*推送通知的呈现效果:1.在屏幕顶部显示一块横幅 2.在屏幕中间弹出一个UIAlertView,还可以在呈现通知的同时播放音效(提醒用户),3.锁屏时也可以呈现。4.呈现推送通知的同时,还可以更新App图标的数字,5.用户接受的推送通知,都会展示在“通知中心”也就是从上往下划屏,就可以看到
*推送通知的呈现效果设置:显示横幅还是UIAlertView,取决于用户的设置(用户可以在手机设置-通知中心-应用程序-选择就行了),用户也可以决定是否开启一下4个功能:1.显示App图标数字、2.播放音效、3.锁屏显示、4.显示在“通知中心”
*推送通知的使用细节:1.发出推送通知时,如果程序正运行在前台,那么推送通知就不会被呈现出来、2.点击推送通知后,默认会自动打开发出推送通知的App、3.不管App打开还是关闭,推送通知都能如期发出
**本地推送通知:就是不需要联网就能发出的推送通知(不需要服务器的支持);本地推送通知的使用场景:常用来做本地提醒的,如闹钟,清理垃圾,记账,买衣服,看电影(应用上的)等
——使用场景:见图
**如何发出本地推送通知:步骤
1.创建本地推送通知对象
2.设置本地推送通知的属性(
a.推送通知的触发时间,也就是何时发出推送通知:NSDate *fireDate,
b.推送通知的具体内容:NSString *alertBody
c.在锁屏时显示的动作标题(完整小标题“滑动来”(这个是默认带的不用写)+alertAction)NSString *alertAction
d.音效文件名:NSString *soundName
e.app图标数字 NSInteger applicationIconBadgeNumber )
f.每隔多久重复发一次推送通知: NSCalendarUnit repeatInterval
g.点击推送通知打开app时显示的启动图片 NSString *alertLaunchImage
h.附加的额外信息 NSDictionary *userInfo
1.创建本地推送通知对象
2.设置本地推送通知的属性(
a.推送通知的触发时间,也就是何时发出推送通知:NSDate *fireDate,
b.推送通知的具体内容:NSString *alertBody
c.在锁屏时显示的动作标题(完整小标题“滑动来”(这个是默认带的不用写)+alertAction)NSString *alertAction
d.音效文件名:NSString *soundName
e.app图标数字 NSInteger applicationIconBadgeNumber )
f.每隔多久重复发一次推送通知: NSCalendarUnit repeatInterval
g.点击推送通知打开app时显示的启动图片 NSString *alertLaunchImage
h.附加的额外信息 NSDictionary *userInfo
j.时区:NSTimeZone
3.调度本地推送通知(启动任务){
a.调度本地推送通知(调度完毕后,推送通知会在特地时间fireDate发出:[[UIApplication sharedApplication] scheduleLocalNotification:ln];
b.获得被调度的所有本地推推送通知(等待发出的通知)NSArray *scheduledLocalNotifications(已经发出且过期的推送通知就算调度结束,会自动从这个数组中移除);
c. 取消调度本地推送通知:-(void)cancelLocalNotification:(UILocalNotification *)notification; - (void)cancelAllLocalNotifications;
d.立即发出本地推送通知(使用价值:当app运行在后台的时候) - (void)presentLocalNotificarionNow:(UILocalNotification *)notification;}
4.点击本地推动通知:当用户点击本地推送通知,会自动打开app。这里有2种情况:
a.app并没有关闭,一直隐藏在后台,这时点击会让app进入前台,并会调用AppDelegate的下面的方法,并非重新启动app。
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
b.app已经被关闭(进程已死):重新启动程序 --这时再点击会启动app,启动完毕会调用AppDelegate的下面的方法--如果想验证,可以在这个方法中创建一个UILabel控件给它颜色,就可以验证,这里如果使用打印验证是不行的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;-----我们应该再启动界面方法中判断是怎么启动的(点击图片第一次启动还是点击推送通知来启动的)
//验证(调试技巧)
UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor redColor];
label.frame = CGRectMake(0, 0, 200, 100);
label.font = [UIFont systemFontOfSize:11];
label.numberOfLines = 0;
label.text = [launchOptions description]; //可通过它来看到是有一个key值的。我们可以判断这个key是否有值
[self.window.rootViewController.view addSubview:label];
UILocalNotification *note = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];//这里切记LocalNotificationKey,容易写错
if (note) {
label.text = @"点击本地通知启动的程序";
}else{
label.text = @"直接点击app图标启动的程序";
}
a.app并没有关闭,一直隐藏在后台,这时点击会让app进入前台,并会调用AppDelegate的下面的方法,并非重新启动app。
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
b.app已经被关闭(进程已死):重新启动程序 --这时再点击会启动app,启动完毕会调用AppDelegate的下面的方法--如果想验证,可以在这个方法中创建一个UILabel控件给它颜色,就可以验证,这里如果使用打印验证是不行的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;-----我们应该再启动界面方法中判断是怎么启动的(点击图片第一次启动还是点击推送通知来启动的)
//验证(调试技巧)
UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor redColor];
label.frame = CGRectMake(0, 0, 200, 100);
label.font = [UIFont systemFontOfSize:11];
label.numberOfLines = 0;
label.text = [launchOptions description]; //可通过它来看到是有一个key值的。我们可以判断这个key是否有值
[self.window.rootViewController.view addSubview:label];
UILocalNotification *note = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];//这里切记LocalNotificationKey,容易写错
if (note) {
label.text = @"点击本地通知启动的程序";
}else{
label.text = @"直接点击app图标启动的程序";
}