博客> iOS如何添加本地通知
iOS如何添加本地通知
2019-11-16 17:23 评论:0 阅读:1131 ios_wj@163.com
ios localpush

添加本地通知需要进入项目的project->Capabilities把Push Notifications打开,并添加以下方法, 注意ios8后,需要添加注册,才能得到授权

// 设置本地通知 -(void)registerLocalNotificationWithTime:(NSTimeInterval)startTime notifiTitle:(NSString )title notifiText:(NSString )text key:(NSString *)key { //避免重复添加 [self cancelLocalNotificationWithKey:key];

if (startTime <= 0)//返回的时间点小于当前时间,不弹
{return;   }

UILocalNotification *notification = [[UILocalNotification alloc] init];
// 设置触发通知的时间
NSDate *fireDate = [NSDate dateWithTimeIntervalSince1970:startTime];
LOG(@"fireDate=%@",fireDate);
fireDate = [NSDate dateWithTimeIntervalSinceNow:startTime];

notification.fireDate = fireDate;
// 时区
notification.timeZone = [NSTimeZone defaultTimeZone];
// 设置重复的间隔
notification.repeatInterval = kCFCalendarUnitSecond;

// 通知内容
notification.alertBody = text;
notification.applicationIconBadgeNumber ++;
// 通知被触发时播放的声音
notification.soundName = UILocalNotificationDefaultSoundName;
// 通知参数

NSDictionary *notificationDic = @{@"key":key, @"title":title?:@"",@"content":text?:@""};

NSDictionary *userDict = [NSDictionary dictionaryWithObject:notificationDic forKey:@"userInfo"];
notification.userInfo = userDict;

// ios8后,需要添加这个注册,才能得到授权
if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    UIUserNotificationType type =  UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type
                                                                             categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
    // 通知重复提示的单位,可以是天、周、月
    notification.repeatInterval = NSCalendarUnitDay;
} else {
    // 通知重复提示的单位,可以是天、周、月
    notification.repeatInterval = NSDayCalendarUnit;
}

// 执行通知注册
[[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来获取通知参数 NSDictionary infoDic = [userInfo dictionaryForKey:@"userInfo"]; NSString kkey = [infoDic safe_stringForKey:@"key"]; // 如果找到需要取消的通知,则取消 if ([kkey isEqualToString:key]) { [[UIApplication sharedApplication] cancelLocalNotification:notification]; break; } } } }

收藏
0
sina weixin mail 回到顶部