本地推送

本地推送。不需要联网,APP内设定就可以了。

注册授权

 if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0)
{
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
    [application registerUserNotificationSettings:settings];
 }

注册本地推送
+ (void)registerLocalNotification:(NSInteger)alertTime {
UILocalNotification *notification = [[UILocalNotification alloc] init];
// 设置触发通知的时间
NSDate *fireDate = [NSDate dateWithTimeIntervalSinceNow:alertTime];
NSLog(@"fireDate=%@",fireDate);

notification.fireDate = fireDate;
// 时区
notification.timeZone = [NSTimeZone defaultTimeZone];
// 设置重复的间隔,这个参数设置不是很懂。kCFCalendarUnitSecond是不重复
notification.repeatInterval = kCFCalendarUnitMinute;

// 通知内容
notification.alertBody =  @"该起床了...";
notification.applicationIconBadgeNumber = 10;
// 通知被触发时播放的声音
notification.soundName = UILocalNotificationDefaultSoundName;
// 通知参数
NSDictionary *userDict = [NSDictionary dictionaryWithObject:@"开始学习iOS开发了" forKey:@"key"];
notification.userInfo = userDict;

// 执行通知注册
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
}

取消某个本地推送通知(设置了重复记得取消通知,不然一直会发,无限发)
+ (void)cancelLocalNotificationWithKey:(NSString *)key {
// 获取所有本地通知数组
NSArray *localNotifications = [UIApplication sharedApplication].scheduledLocalNotifications;

for (UILocalNotification *notification in localNotifications) {
    NSDictionary *userInfo = notification.userInfo;
    if (userInfo) {
        // 根据设置通知参数时指定的key来获取通知参数
        NSString *info = userInfo[key];
        
        // 如果找到需要取消的通知,则取消
        if (info != nil) {
            [[UIApplication sharedApplication] cancelLocalNotification:notification];
            break;
        }
    }
}
}

iOS本地推送(本地通知)

你可能感兴趣的:(本地推送)