提示无法连接局域网内ota服务

1、业务中要使用内网分发ipa包,但总是显示无法连接 www.xxx.com,但吧manifest.plist发送至服务器上nginx来处理却没有问题且可以正常下载,而且发送到服务器的manifest.plist文件内的下载链接还是本地的网址。

分析问题。

本地和线上没有区别,只是域名不同。把两边都下载一遍发现,本地的是直接在浏览器内打开。而线上却是自动下载了。
那么问题就比较明显了,估计是出现在content-type上。
果然对比后发现区别。

  • 本地请求头:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
  • nginx服务器请求头
application/octet-stream

~~ 解决方案:~~
修改入口html添加如下代码。

<meta http-equiv="Content-Type" content="application/octet-stream" charset="UTF-8">

再次尝试就完美下载了啦!
Common Name (e.g. server FQDN or YOUR name) []: 172.20.10.5
自签名要输入ip
新的更新:
观察到日志如下:

ateChainKey=(
    "<cert(0x11c059200) s: 192.168.199.219 i: 192.168.199.219>"
), NSErrorFailingURLKey=https://192.168.199.219:1443/ota/manifest.plist, NSUnderlyingError=0x11d26c990 {Error Domain=kCFErrorDomainCFNetwork Code=-1202 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, kCFStreamPropertySSLPeerTrust=<SecTrustRef: 0x11d289640>, _kCFNetworkCFStreamSSLErrorOriginalValue=-9813, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9813, kCFStreamPropertySSLPeerCertificates=(
    "<cert(0x11c059200) s: 192.168.199.219 i: 192.168.199.219>"
)}}, NSErrorClientCertificateStateKey=0, _NSURLErrorRelatedURLSessionTaskErrorKey=(
Aug  1 22:10:34 zhuhaoyangde-iPhone appstored[154] <Error>: [ExternalManifestOperation]: Could not load download manifest with underlying error: Error Domain=NSURLErrorDomain Code=-1202 "\M-f\M^W\240\M-f\M-3\M^U\M-h\M-?\M^^\M-f\M^N\M-%\M-e\M^H\M-0\M-b\M^@\M^\\M-e\M^U\M^F\M-e\M-:\M^W\M-b\M^@\M^]" UserInfo={NSLocalizedRecoverySuggestion=\M-f\M^B\M-(\M-d\M-;\M^M\M-h\M-&\M^A\M-h\M-?\M^^\M-f\M^N\M-%\M-f\M--\M-$\M-f\M^\\M^M\M-e\M^J\M-!\M-e\M^Y\M-(\M-e\M^P\M^W\M-o\M-<\M^_, NSLocalizedFailureReason=\M-f\M^W\240\M-f\M-3\M^U\M-e\M-;\M-:\M-g\M-+\M^K\M-e\M-.\M^I\M-e\M^E\M-(\M-h\M-?\M^^\M-f\M^N\M-%\M-c\M^@\M^B\M-h\M-/\M-7\M-f\M-#\M^@\M-f\M^_\M-%\M-b\M^@\M^\\M-f\M^W\M-%\M-f\M^\\M^_\M-d\M-8\M^N\M-f\M^W\M-6\M-i\M^W\M-4\M-b\M^@\M^]\M-h\M-.\M->\M-g\M-=\M-.\M-c\M^@\M^B, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9813, NSErrorPeerCertificateChainKey=(
    "<cert(0x11c059200) s: 192.168.199.219 i: 192.168.199.219>"
), NSErrorFailingURLKey=https://192.168.199.219:1443/ota/manifest.plist, NSUnderlyingError=0x11d26c990 {Error Domain=kCFErrorDomainCFNetwork Code=-1202 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, kCFStreamPropertySSLPeerTrust=<SecTrustRef: 0x11d289640>, _kCFNetworkCFStreamSSLErrorOriginalValue=-9813, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9813, kCFStreamPropertySSLPeerCertificates=(
    "<cert(0x11c059200) s: 192.168.199.219 i: 192.168.199.219>"

看到一些解释。
https://forums.developer.apple.com/thread/50068

上面方案无卵用,解决后再来更新。

更新。

自签名证书无法使用了。
目前有几种解决方案。
1、放到公网。
2、本地启用nginx?
3、使用 ideviceinstaller, 他是libimobiledevice提供的一系列工具之一,对于自动化非常实用。

总结

1、肯定可行,2、未尝试,我最终使用了3方案解决了业务中的问题。未使用ota方式。

另外其他的无法下载问题也在这边记录下。
  • 设备是否在证书内,不在是无法下载的。
    如果证书设备已经添加。还是无法下载可以尝试删除/Users/xxx/Library/MobileDevice/Provisioning\ Profiles/下的所有证书。再重新构建一遍。
  • manifest.plist内的图片链接、下载链接是否都能正常访问。
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐