iOS的消息推送在开发中分为两种,一种是本地推送通知(LocalNotification),二是远程推送通知(RemoteNotification)。本地推送通知不需要联网,不依赖于服务器,常常用来于提醒用户的某些行为,如闹钟等。远程推送通知则是从远程服务器推送给客户端的通知(需要联网)。
我们在开发中常用的推送大多是远程推送,所以这里仅仅是简单的介绍下本地推送。
本地推送:
使用本地推送较为简单,只需几行代码就能完成配置:
1、创建本地推送通知对象:UILocalNotification *locNot= [[UILocalNotificationalloc] init];
2、设置本地推送通知属性:
- 推送通知的触发时间(何时发出推送通知)
- @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;
3、调度本地推送通知:[[UIApplication sharedApplication] scheduleLocalNotification:locNot];
需要注意的是,在用户点击推送通知弹框进入应用时存在以下两种情况:
- app并没有关闭,一直隐藏在后台让app进入前台,并会调用AppDelegate的下面方法(并非重新启动app)
- - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
- app已经被关闭(进程已死)启动app,启动完毕会调用AppDelegate的下面方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
在第二种情况下可以根据launchOptions是否为空来判断是用户时点击推送弹框还是点击应用程序图标进入应用,若使推送进入时可以
tips:应用程序有三种状态:
UIApplicationStateActive,(活动)
UIApplicationStateInactive, (未激活)
UIApplicationStateBackground (后台)
在活动的状态下,推送通知时不可见的。