推送通知

本文深入探讨了iOS中本地推送通知的原理、作用、呈现效果及使用细节,包括如何发出本地推送通知的详细步骤,以及点击推送通知后的具体行为。文章还提供了本地推送通知的使用场景,并解释了其与远程推送通知的区别。
推送通知=======本地推送 ------通知一般都是在后台进行的,在前台就没必要使用了
/*
 >>>推送通知<<<
 *注意:这里所说的推送通知跟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.点击推送通知后,默认会自动打开发出推送通知的App3.不管App打开还是关闭,推送通知都能如期发出
 
 
 
 **本地推送通知:就是不需要联网就能发出的推送通知(不需要服务器的支持);本地推送通知的使用场景:常用来做本地提醒的,如闹钟,清理垃圾,记账,买衣服,看电影(应用上的)等
——使用场景:见图
 
 
  **如何发出本地推送通知:步骤
 1.创建本地推送通知对象
 2.设置本地推送通知的属性(
 a.推送通知的触发时间,也就是何时发出推送通知:NSDate *fireDate
 b.推送通知的具体内容:NSString *alertBody
 c.在锁屏时显示的动作标题(完整小标题滑动来”(这个是默认带的不用写)+alertActionNSString *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. 取消调度本地推送通知:-voidcancelLocalNotification:(UILocalNotification *)notification; - (void)cancelAllLocalNotifications;
d.立即发出本地推送通知(使用价值:当app运行在后台的时候) - voidpresentLocalNotificarionNow:(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图标启动的程序";
 }
 
 

转载于:https://www.cnblogs.com/ryc--520/articles/5027702.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值