在 iOS 开发中,可以通过以下 Objective-C 代码判断是否打开了网络权限弹窗:

#import <SystemConfiguration/CaptiveNetwork.h>
#import <CoreLocation/CoreLocation.h>

// 判断是否有网络权限
+ (BOOL)hasNetworkPermission {
    BOOL hasPermission = YES;
    if (@available(iOS 14, *)) {
        CLAccuracyAuthorization accuracy = [CLLocationManager accuracyAuthorization];
        if (accuracy == CLAccuracyAuthorizationReducedAccuracy) {
            hasPermission = NO;
        }
    } else {
        NSURL *url = [NSURL URLWithString:'https://www.apple.com'];
        NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10.0];
        NSURLSession *session = [NSURLSession sharedSession];
        dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
        
        NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            if (error) {
                hasPermission = NO;
            }
            dispatch_semaphore_signal(semaphore);
        }];
        [task resume];
        
        dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
    }
    
    return hasPermission;
}

上述代码中,hasNetworkPermission方法可以判断是否打开了网络权限弹窗。在 iOS 14 及以上版本中,可以通过CLAccuracyAuthorization来判断定位权限是否开启;在 iOS 14 以下版本中,可以通过发送一个网络请求来判断是否有网络权限。

iOS 网络权限弹窗判断 - Objective-C 代码示例

原文地址: https://www.cveoy.top/t/topic/o7DD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录