IOS本地通知
编辑:广州人工智能解决方案_APP开发公司_小程序开发公司_歌莫信息 来源: 日期:2015-9-30 9:28:18 人气: 标签:

本地通知 不需要联网就可以发送出来的推送通知。


iOS8之后要在didFinishLaunchingWithOptions写判断方法

if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)])
    {
        UIUserNotificationType type = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
    }

创建本地推送通知对象

UILocalNotification *local = [[UILocalNotificationalloc]init];

设置本地推送通知属性
推送通知的触发时间(何时发出推送通知)

@property(nonatomic,copy)NSDate *fireDate;

推送通知的具体内容

@property(nonatomic,copy)NSString *alertBody;

锁屏界面显示的小标题(完整小标题:“滑动来” + alertAction

@property(nonatomic,copy)NSString *alertAction;

音效文件名

@property(nonatomic,copy)NSString *soundName;

app图标数字

@property(nonatomic)NSInteger applicationIconBadgeNumber;

调度本地推送通知(调度完毕后,推送通知会在特地时间fireDate发出)

[[UIApplication sharedApplicationscheduleLocalNotification:ln];

获得被调度的所有本地推送通知(等待发出的通知)

@property(nonatomic,copy)NSArray *scheduledLocalNotifications;

(已经发出且过期的推送通知就算调度结束,会自动从这个数组中移除)

取消调度本地推送通知

- (void)cancelLocalNotification:(UILocalNotification*)notification;

- (void)cancelAllLocalNotifications;

立即发出本地推送通知(使用价值:app在后台运行的时候)

- (void)presentLocalNotificationNow:(UILocalNotification*)notification;

每隔多久重复发一次推送通知

@property(nonatomic)NSCalendarUnit repeatInterval;

点击推送通知打开app时显示的启动图片

@property(nonatomic,copy)NSString *alertLaunchImage;

附加的额外信息

@property(nonatomic,copy)NSDictionary *userInfo;

时区

@property(nonatomic,copy)NSTimeZone *timeZone;

(一般设置为[NSTimeZonedefaultTimeZone] ,跟随手机的时区)


当用户点击本地推送通知,会自动打开app,这里有2种情况
app并没有关闭,一直隐藏在后台
通知发出,执行通知时(并非重新启动app

  1. -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{  
  2.   
  3.     /** 
  4.      *   
  5.      UIApplicationStateActive, 
  6.      UIApplicationStateInactive, 
  7.      UIApplicationStateBackground 
  8.       
  9.      Active:当前应用正在前台运行,并且接收事件。这是应用正在前台运行时所处的正常状态。 
  10.       
  11.      Inactive:当前应用正在前台运行,但是并不接收事件(当前或许正在执行其它代码)。一般每当应用要从一个状态切换到另一个不同的状态时,中途过渡会短暂停留在此状态。唯一在此状态停留时间比较长的情况是:当用户锁屏时,或者系统提示用户去响应某些(诸如电话来电、有未读短信等)事件的时候。 
  12.       
  13.      Background:应用处在后台,并且还在执行代码。大多数将要进入Suspended状态的应用,会先短暂进入此状态。然而,对于请求需要额外的执行时间的应用,会在此状态保持更长一段时间。另外,如果一个应用要求启动时直接进入后台运行,这样的应用会直接从Not running状态进入Background状态,中途不会经过Inactive状态。比如没有界面的应用。注此处并不特指没有界面的应用,其实也可以是有界面的应用,只是如果要直接进入background状态的话,该应用界面不会被显示。 
  14.      */  
  15.       
  16.     if (application.applicationState==UIApplicationStateActive) {//当通知处于前台时候 不做操作  
  17.         return;  
  18.     }  
  19.       
  20.     NSLog(@"didReceiveLocalNotification---%@",notification);  
  21. }  



app已经被关闭(进程已死)
启动app,启动完毕会调用AppDelegate的下面方法

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

launchOptions参数通过UIApplicationLaunchOptionsLocalNotificationKey取出本地推送通知对象

//创建本地通知

  1. //1.创建本地推送通知  
  2.     UILocalNotification *local = [[UILocalNotification alloc]init];  
  3.       
  4.     //2.设置声音  
  5.     local.soundName = @"buyao.wav";  
  6.     local.alertBody = @"重大新闻";  
  7.     local.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];  
  8.       
  9.     //3.设置图标的数字  
  10.     local.applicationIconBadgeNumber = 5;  
  11.     //根据手机默认的时区  
  12.     local.timeZone = [NSTimeZone defaultTimeZone];  
  13.       
  14.     //4.设置重复发出通知的时间间隔  
  15.     //local.repeatInterval = NSCalendarUnitDay;  
  16.       
  17.     //锁屏界面显示的小标题  
  18.     local.alertAction = @"查看新闻吧";  
  19.       
  20.     //5.启动通知(在规定的时间启动任务)  
  21.     [[UIApplication sharedApplication] scheduleLocalNotification:local];  
  22.       
  23.     //直接启动通知(使用价值:app在后台运行时候)  
  24.     //[[UIApplication sharedApplication] presentLocalNotificationNow:local];  


版权声明:互相学习 随便转载

转自:CSDN-咚咚锵咚锵咚锵

相关新闻