在iOS和macOS开发中使用的网络请求类都是NSURLSession
,所以在macOS开发中我们直接使用在iOS开发中使用的AFNetworking
第三方框架就可以了,今天刚开始使用就遇到了一个问题,未能找到使用指定主机名的服务器
,下面截图
问题:按照以往的经验来分析的话这个错误应该是域名解析出错了,实际上是macOS项目中沙盒访问权限设置导致的错误
小伙伴们看着这个问题是不是很奇葩,这里不说info.plist
文件里面设置App Transport Security Settings
了啊,一般这种错误多数人都是知道的不会犯的
解决
- 首先在
macOS
项目中找到.entitlements
结尾的plist文件
- 选择
App Sandbox
选项,设置为NO
就可以了,然后网络请求就恢复正常了
今天上线macOS项目的时候找到原因了,补充一下
macOS10.14(网上有人说的,未求证)开始苹果官方要求所有macOS客户端都必须遵守沙盒协议,就是上面截图的那个文件,当时我关闭了沙盒网络请求恢复了,可是上线报错了,错误如下
App sandbox not enabled. The following executables must include the "com.apple.security.app-sandbox" entitlement with a Boolean value of true in the entitlements property list: [( "net.tangce.student.pkg/Payload/Tangce_macOS.app/Contents/MacOS/Tangce_macOS" )] Refer to App Sandbox page at https://developer.apple.com/documentation/security/app_sandbox for more information on sandboxing your app. With error code STATE_ERROR.VALIDATION_ERROR.90296 for id 20e6c9f2-6e2f-478f-b691-c54db13eb186
大概意思就是必须遵守沙盒协议,可是遵守了就不能联网了,简单说一下沙盒协议,就是类似plist文件的形式上传请求各项权限,跟我们iOS单独请求相机相册权限一样,沙盒权限的bool
值就相当于总开关,必须打开
解决
- 首先沙盒总开关肯定是要打开的
-
第二步单独申请网络权限,这里不是iOS的ATS,如下图
完结