iOS 网络权限弹窗判断 - Objective-C 代码示例
在 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 以下版本中,可以通过发送一个网络请求来判断是否有网络权限。
原文地址: https://www.cveoy.top/t/topic/o7DD 著作权归作者所有。请勿转载和采集!