本地推送,顾名思义,就是不需要网络连接,在客户端本地发送推送通知给用户。
主要分为两个步骤:1、本地推送的创建和发送;2、本地推送的移除。
1、创建和发送
- (void)sendLocalNotification
{
UILocalNotification *localNotification = [[UILocalNotification alloc]init];
//触发通知时间
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1]; //1s后触发通知
//时区
localNotification.timeZone = [NSTimeZone defaultTimeZone];
//触发通知后弹出警告框中显示的内容
localNotification.alertBody = @"通知消息的主体";
//触发通知时的声音(这里使用系统的声音)
localNotification.soundName = UILocalNotificationDefaultSoundName;
//设置通知的用户信息(可以用于移除通知,也可以传其他的值到获取通知的方法中)
localNotification.userInfo = @{
@"key" :@"value",
};
localNotification.repeatInterval = NSCalendarUnitSecond;
//执行通知计划
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
2、移除
如果不做移除,本地推送会根据初始化的设定,定时循环发送。个人理解,如果需求不是定时推送而是实时的话,移除的时机应当是当收到本地推送后立马移除。需要在 Appdelegate 中,添加系统代理方法 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
- (void)application:(UIApplication *)application didReceiveLocalNotification:(nonnull UILocalNotification *)notification
{
[application cancelLocalNotification:notification];
//operation after receive local notification
}