本地推送UILocalNotification的使用

本地推送将会在状态栏里、锁屏界面等出现通知。现在以在状态栏里的通知为例。

 1 -(void)alertLoaclNotification{
 2     //初始化一个 UILocalNotification
 3     UILocalNotification * notification = [[UILocalNotification alloc] init];
 4     if (notification!=nil) {
 5         // 设置通知的提醒时间
 6         NSDate *currentDate   = [NSDate date];
 7         notification.timeZone = [NSTimeZone defaultTimeZone]; // 使用本地时区
 8         notification.fireDate = [currentDate dateByAddingTimeInterval:2.0];
 9
10         // 设置重复间隔
11         notification.repeatInterval = kCFCalendarUnitDay;
12
13         // 设置提醒的文字内容
14         notification.alertBody = @"该吃饭了";
15
16         // 通知提示音 使用默认的
17         notification.soundName= UILocalNotificationDefaultSoundName;
18
19         // 设置应用程序右上角的红色提醒个数
20         notification.applicationIconBadgeNumber++;
21
22         // 设定通知的userInfo,用来标识该通知
23         NSDictionary * inforDic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"];
24         notification.userInfo =inforDic;
25
26         // 将通知添加到系统中
27         [[UIApplication sharedApplication] scheduleLocalNotification:notification];
28     }
29 }

取消本地通知时,则可以用

1 //拿到所有推送的数组
2 NSArray * array = [[UIApplication sharedApplication] scheduledLocalNotifications];
3 //便利这个数组 根据 key 拿到我们想要的 UILocalNotification
4 for (UILocalNotification * loc in array) {
5     if ([[loc.userInfo objectForKey:@"key"] isEqualToString:@"name"]) {
6         //取消 本地推送
7         [[UIApplication sharedApplication] cancelLocalNotification:loc];
8     }
9 }

在程序运行时,推送可能不出现,会提示

Attempting to badge the application icon but haven‘t received permission……

这出现在IOS8上,是没有权限的原因。若换成IOS7或以前的,则没这些问题。现在在IOS8中要实现badge、alert和sound等都需要用户同意才能,因为这些都算做Notification“通知”,为了防止有些应用动不动给用户发送“通知”骚扰用户,所以在iOS8时,这些“通知”必须要用户同意才行。
要在IOS8解决这些问题,就要弹出一个提示框,询问用户是否允许推送通知。具体就是在AppDelegate中的

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法中添加系统判断

 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 2 {
 3     //判断系统版本
 4     CGFloat sysVersion=[[UIDevice currentDevice]systemVersion].floatValue;
 5     if (sysVersion>=8.0) {
 6         UIUserNotificationType type = UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound;
 7         UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:type categories:nil];
 8         [[UIApplication sharedApplication] registerUserNotificationSettings:setting];
 9     }
10     return YES;
11 }
时间: 2024-10-29 07:03:48

本地推送UILocalNotification的使用的相关文章

SWIFT推送之本地推送(UILocalNotification)

本地推送通知是通过实例化UILocalNotification实现的.要实现本地化推送可以在AppDelegate.swift中添加代码实现,本事例是一个当App进入后台时推送一条消息给用户. 1.首先在didFinishLaunchingWithOptions方法内添加代码,IOS8推送消息首先要获得用户的同意,在初次安装App时会提示用户是否允许程序推送消息,此方法是App第一次运行的时候被执行一次,每次从后台激活时不执行该方法. func application(application:

iOS的本地推送UILocalNotification的使用

UILocalNotification 1 第一步:接收本地推送 2 3 实现代理方法didReceiveLocalNotification 4 5 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification{ 6 7 //在此时设置解析notification,并展示提示视图 8 9 } 10 11 第二步:创建本地推送 12 -

本地推送UILocalNotification

//本地推送---无需网络,由本地发起 UILocalNotification *localNotification = [[UILocalNotification alloc]init]; //设置推送时间间隔并开启推送fireDate localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10]; //设置提醒内容 localNotification.alertBody = @"注意要吃饭了"; //设置

本地推送UILocalNotification的一些简单方法

1.在用户第一次进入进入程序时,需要对app打开推送 1 if([[UIApplication sharedApplication]currentUserNotificationSettings].types == UIUserNotificationTypeNone) 2 { 3 [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForT

SWIFT推送之本地推送(UILocalNotification)之二带按钮的消息

上一篇讲到的本地推送是普通的消息推送,本篇要讲一下带按钮动作的推送消息,先上个图瞅瞅: 继上一篇的内容进行小小的改动: 在didFinishLaunchingWithOptions方法内进行以下修改 if (UIDevice.currentDevice().systemVersion as NSString).floatValue >= 8 { // APService.registerForRemoteNotificationTypes( // UIUserNotificationType.B

iOS 本地推送 UILocalNotification

创建通知 UILocalNotification *notification = [[UILocalNotification alloc] init]; if (notification) { NSDate *now = [NSDate new]; notification.fireDate = [now dateByAddingTimeInterval:10]; //10秒后通知 notification.repeatInterval=0; //重复次数,kCFCalendarUnitWeek

UILocalNotification ios本地推送

Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notification种类,本地和远程.本地的Notification由iOS下NotificationManager统一管理,只需要将封装好的本地Notification对象加入到系统Notification管理机制队列中,系统会在指定的时间激发将本地Notification,应用只需设计好处理Notificati

[转载]iOS本地推送-备用

第一步:创建本地推送// 创建一个本地推送UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease];//设置10秒之后NSDate *pushDate = [NSDate dateWithTimeIntervalSinceNow:10];if (notification != nil) {    // 设置推送时间    notification.fireDate = pushDate

ios (推送)之本地推送

iOS上有两种消息通知,一种是本地消息(Local Notification),一种是远程消息(Push Notification,也叫Remote Notification),设计这两种通知的目的都是为了提醒用户,现在有些什么新鲜的事情发生了,吸引用户重新打开应用.本地推送也可以通过服务器控制,比如说如果有新消息了,推送消息,但是,前提是程序必须是打开的,而远程推送,是通过苹果APNS服务器,推送给手机,手机在推送给具体的哪个程序,一般远程推送用到的比较多,先介绍下本地推送,下节在介绍远程推送