美文网首页
iOS 通知功能的状态判断与开启

iOS 通知功能的状态判断与开启

作者: 浅浅_e90e | 来源:发表于2022-01-06 15:53 被阅读0次

    App的设置界面通常会有“开启通知”这项功能,这个需要在跳转设置页面的时候就进行判断,如果当前是已开启的状态,多数app就直接隐藏系统通知这一行功能了,如果是未开启,则显示这项功能,并点击可跳转到手机系统设置的app通知开启界面。
    判断通知功能是否开启:

        ///判断通知权限是否已开启
        if (@available(iOS 10.0, *)) {
            
                [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
                    
                    if (settings.authorizationStatus == UNAuthorizationStatusDenied || settings.authorizationStatus == UNAuthorizationStatusNotDetermined) {
                        // 用户未授权开启通知
                        dispatch_async(dispatch_get_main_queue(), ^{
                            ///用户未开启通知功能
                            isOpenNoti = NO;
                           //更新列表数组的数量和内容(比如通知这一行数据还要不要)
                          //刷新列表
                        });
                    }else if (settings.authorizationStatus == UNAuthorizationStatusAuthorized) {
                        //用户已授权开启通知
                        dispatch_async(dispatch_get_main_queue(), ^{
                          ///用户已开启通知功能
                            isOpenNoti = YES;
                            //更新列表数组的数量和内容(比如通知这一行数据还要不要)
                          //刷新列表
                        });
                    }
                }];
            
                
            } else {
                //iOS 10 以下系统版本询权方式
                if ([[UIApplication sharedApplication] currentUserNotificationSettings].types  == UIRemoteNotificationTypeNone) {
                    
                    dispatch_async(dispatch_get_main_queue(), ^{
                       ///未开启通知
                        isOpenNoti = NO;
                      //更新列表数组的数量和内容(比如通知这一行数据还要不要)
                          //刷新列表
                    });
                }else {
                    dispatch_async(dispatch_get_main_queue(), ^{
                        ///用户已开启通知功能
                        isOpenNoti = YES;
                        //更新列表数组的数量和内容(比如通知这一行数据还要不要)
                          //刷新列表
                    });
                }
            }
    

    由于通知状态是异步获取的,所以需要在获取了用户通知状态后切回主线程的block内根据通知状态更新列表数组的内容(分组数或某个分组的个数),然后刷新列表。

    如果当前用户未开启通知功能,点击“开启通知”这一行,跳转到系统设置中app对应的权限列表进行开启

     if (@available(iOS 10.0, *)) {
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil];
            } else {
                
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=NOTIFICATIONS_ID&path=App的BundleID"] options:@{} completionHandler:nil];
            }
    

    相关文章

      网友评论

          本文标题:iOS 通知功能的状态判断与开启

          本文链接:https://www.haomeiwen.com/subject/qtxrcrtx.html