需要在方法前面手动添加以下代码
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]) {
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil]];
}
创建本地推送通知对象
UILocalNotification *ln = [[ UILocalNotification alloc ] init ];
设置本地推送通知属性
推送通知的触发时间(何时发出推送通知)
@property ( nonatomic , copy ) NSDate *fireDate;
推送通知的具体内容
@property ( nonatomic , copy ) NSString *alertBody;
锁屏界面显示的小标题(完整小标题: “ 滑动来 ” + alertAction )
@property ( nonatomic , copy ) NSString *alertAction;
音效文件名
@property ( nonatomic , copy ) NSString *soundName;
app 图标数字
UILocalNotification *ln = [[ UILocalNotification alloc ] 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 sharedApplication ] scheduleLocalNotification :ln];
获得被调度的所有本地推送通知 ( 等待发出的通知 )
@property ( nonatomic , copy ) NSArray *scheduledLocalNotifications;
(已经发出且过期的推送通知就算调度结束,会自动从这个数组中移除)
取消调度本地推送通知
- ( void )cancelLocalNotification:( UILocalNotification *)notification;
- ( void )cancelAllLocalNotifications;
立即发出本地推送通知 ( 使用价值: app 在后台运行的时候 )
[[ UIApplication sharedApplication ] scheduleLocalNotification :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;
@property ( nonatomic ) NSCalendarUnit repeatInterval;
点击推送通知打开 app 时显示的启动图片
@property ( nonatomic , copy ) NSString *alertLaunchImage;
附加的额外信息
@property ( nonatomic , copy ) NSDictionary *userInfo;
时区
@property ( nonatomic , copy ) NSTimeZone *timeZone;
(一般设置为
[
NSTimeZone
defaultTimeZone
]
,跟随手机的时区)
当用户点击本地推送通知,会自动打开
app
,这里有
2
种情况
app 并没有关闭,一直隐藏在后台
让 app 进入前台,并会调用 AppDelegate 的下面方法( 并非重新启动 app )
- ( void )application:( UIApplication *)application didReceiveLocalNotification:( UILocalNotification *)notification;
app 已经被关闭(进程已死)
启动 app ,启动完毕会调用 AppDelegate 的下面方法
- ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions;
app 并没有关闭,一直隐藏在后台
让 app 进入前台,并会调用 AppDelegate 的下面方法( 并非重新启动 app )
- ( void )application:( UIApplication *)application didReceiveLocalNotification:( UILocalNotification *)notification;
app 已经被关闭(进程已死)
启动 app ,启动完毕会调用 AppDelegate 的下面方法
- ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions;
launchOptions
参数通过
UIApplicationLaunchOptionsLocalNotificationKey
取出本地推送通知对象