iOS 监听用户是否开启通知权限弹窗逻辑 |
您所在的位置:网站首页 › 系统通知权限怎么开启不了 › iOS 监听用户是否开启通知权限弹窗逻辑 |
前言 推送对App的重要性不言而喻,APP里的某些内容是需要用户开启推送权限才能给用户精准展示,才能及时通知用户。 下面我们通过一个demo实现对推送的监听,以及弹窗的效果,希望能帮助到大家。 效果图如下: 二、判断用户是否同意了推送权限 #pragma mark ==========YES有权限 NO无权限========== -(void)seeCurrentNotificationStatus{ if (@available(iOS 10 , *)){ WEAKSELF; [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { STRONGSELF; if (settings.authorizationStatus == UNAuthorizationStatusDenied){ // 没权限 NSLog(@"无推送权限,弹窗处理"); [strongSelf pushNotifcationView]; } }]; }else if (@available(iOS 8 , *)){ UIUserNotificationSettings * setting = [[UIApplication sharedApplication] currentUserNotificationSettings]; if (setting.types == UIUserNotificationTypeNone) { // 没权限 NSLog(@"无推送权限,弹窗处理"); [self pushNotifcationView]; } }else{ UIRemoteNotificationType type = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; if (type == UIUserNotificationTypeNone){ // 没权限 NSLog(@"无推送权限,弹窗处理"); [self pushNotifcationView]; } } }三、推送权限弹窗逻辑 #pragma mark ==========弹窗出推送权限========== -(void)pushNotifcationView{ //一天之内只提示一次 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; //拿到当前时间 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; //当前时间 NSDate *nowDate = [NSDate date]; NSString *nowDateStr= [dateFormatter stringFromDate:nowDate]; //之前时间 NSString *agoDateStr = [userDefault objectForKey:@"saveNowDate"]; //判断时间差 if ([agoDateStr isEqualToString:nowDateStr]) { //是当天时间 }else{ //弹窗 //主线程使用 dispatch_async(dispatch_get_main_queue(), ^{ [[HBOpenPushNoticeView new] show]; }); //保存当前时间 [userDefault setObject:nowDateStr forKey:@"saveNowDate"]; [userDefault synchronize]; } }附上Demo地址 END. |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |