判断iOS应用是否开放HTTP权限的方法

所属分类: 软件编程 / IOS 阅读数: 1279
收藏 0 赞 0 分享

从 iOS9 起,新特性要求 App 访问网络请求,要采用 HTTPS 协议。但是能不能判断开发者是否允许 HTTP 的请求,这样就不会在发起请求时候失败同时弹出以下信息:

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

这个需求其实是最近在弄 HTTPDNS 相关的一些东西,只能通过 HTTP 接口请求,但是希望能判断应用是否允许了 HTTP 的访问,如果允许才开启 HTTPDNS 相关的功能。

解决方法比较简单,其实就是读取 info.plist 看看 NSAppTransportSecurity 是否为 YES

Objective-C 实现

- (BOOL)isHTTPEnable {
 if([[[UIDevice currentDevice] systemVersion] compare:@"9.0" options:NSNumericSearch] != NSOrderedAscending){
 NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
 return [[[infoDict objectForKey:@"NSAppTransportSecurity"] objectForKey:@"NSAllowsArbitraryLoads"] boolValue];
 }
 return YES;
}

使用方法:

if ([self isHTTPEnable]) {
 NSLog(@"HTTP enable");
} else {
 NSLog(@"HTTP disable");
}

Swift 实现

func isHTTPEnable() -> Bool {
 let flag = UIDevice.currentDevice().systemVersion.compare("9.0.0", options: NSStringCompareOptions.NumericSearch)
 if (flag != .OrderedAscending) {
 guard let infoDict = NSBundle.mainBundle().infoDictionary else {
 return false
 }
 guard let appTransportSecurity = infoDict["NSAppTransportSecurity"] else {
 return false
 }
 guard let allowsArbitraryLoads = appTransportSecurity["NSAllowsArbitraryLoads"] else {
 return false
 }
 guard let res = allowsArbitraryLoads else {
 return false
 }
 return res as! Bool 
 }
 return true
}

使用方法:

if self.isHTTPEnable() {
 print("HTTP enable")
} else {
 print("HTTP disable")
}

原文链接:http://blog.yourtion.com/is-ios-app-enable-http.html

更多精彩内容其他人还在看

iOS App中UILabel的自定义及在Auto Layout中的使用

这篇文章主要介绍了iOS App中UILabel的自定义及在Auto Layout中的使用,示例代码为传统的Objective-C语言,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS应用开发中UITableView的分割线的一些设置技巧

这篇文章主要介绍了iOS应用开发中UITableView分割线的一些设置技巧,包括消除分割线的方法,示例代码为传统的Objective-C语言,需要的朋友可以参考下
收藏 0 赞 0 分享

详解iOS时间选择框

这篇文章主要为大家详细介绍了详解iOS时间选择框,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解iOS App开发中UIViewController的loadView方法使用

这篇文章主要介绍了详解iOS App开发中UIViewController的loadView方法使用,讲解了访问view属性时loadView方法的调用及使用loadView时的一些注意点,需要的朋友可以参考下
收藏 0 赞 0 分享

详解在iOS App中自定义和隐藏状态栏的方法

这篇文章主要介绍了在iOS App中自定义和隐藏状态栏的方法,在顶部时某些状况下即用应用内的状态栏覆盖系统本身的,代码示例为Objective-C语言,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS开发实现音频播放功能

本文给大家分享的是在IOS开发过程中实现音频播放的功能,讲解的十分细致,有需要的小伙伴可以参考下
收藏 0 赞 0 分享

IOS开发实现录音功能

本文给大家分享的是一个IOS开发中实现录音功能的实例,并简单给大家解析一下,有需要的小伙伴可以参考下
收藏 0 赞 0 分享

iOS实现图片轮播效果

这篇文章主要为大家详细介绍了IOS实现图片轮播效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

iOS通过http post上传图片

这篇文章主要介绍了iOS通过http post上传图片的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

IOS框架Spring常用的动画效果

本文给大家介绍的是在IOS开发中常用的动画效果以及自定义转场动画特效的代码,非常的简单实用,有需要的小伙伴可以参考下
收藏 0 赞 0 分享
查看更多