本地推送

本地推送。不需要联网,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本地推送(本地通知)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容