1、注册本地推送
ViewContoller.m
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[[UIApplication sharedApplication] cancelAllLocalNotifications];
UILocalNotification *localNotifi = [[UILocalNotification alloc] init];
localNotifi.repeatInterval = NSCalendarUnitWeekOfYear;
NSDate *datenow = [NSDate date];//现在时间
localNotifi.fireDate = [datenow dateByAddingTimeInterval:10];
localNotifi.alertBody = @"本地推送~~";
localNotifi.soundName = UILocalNotificationDefaultSoundName;
localNotifi.userInfo = @{@"key":@"本地"};
[[UIApplication sharedApplication] scheduleLocalNotification:localNotifi];
NSLog(@"%lu",[UIApplication sharedApplication].scheduledLocalNotifications.count);
}
2、本地推送的接收处理
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// 请求用户授权
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
// 处理退出后通知的点击,程序启动后获取通知对象,如果是首次启动还没有发送通知,那第一次通知对象为空,没必要去处理通知(如跳转到指定页面)
UILocalNotification *localNotifi = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];
if (localNotifi) {
[self changeLocalNotifi:localNotifi];
}
return YES;
}
#pragma mark - 处理后台和前台通知点击
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
[self changeLocalNotifi:notification];
}
- (void)changeLocalNotifi:(UILocalNotification *)localNotifi {
// 如果在前台直接返回
if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) {
return;
}
NSDictionary *userInfo = localNotifi.userInfo;
}