使用七牛云存储解决ios7.1的app部署问题ios
一.问题描述浏览器
开发完iOS版本的app。须要将.ipa文件和.plist文件打包上传,供用户下载,在线安装。用户安装过程简单描述以下:七牛云存储
首先经过手机浏览器safari或者扫描二维码获取到下载.plist的地址。而后浏览器会自动跳转到这个地址,下载、读取.plist。(用户跳转的地址是.plist的下载地址。)这个过程,显然使用http协议来下载.plist文件。最后,iphone经过读取.plist文件中配置的.ipa下载地址,来安装.ipa文件,来完成ios版本的app。安全
举例,网站首页中,下载.plist的代码:服务器
<ahref="itms-services://?action=download-manifest&url=http://www.ekwing.com/ekwing.plist"class="mobile-ios"></a>app
可是,苹果从ios7.1开始,用户安装app,须要使用https协议,来下载plist文件。也就说,在安装app的第一步,下载.plist文件,须要使用https协议。https协议以下:iphone
这里不详细描述https协议。HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(如VeriSign、Microsoft等)(意即“我信任证书颁发机构告诉我应该信任的”)。所以,一个到某网站的HTTPS链接可被信任,当且仅当:测试
1. 用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构;网站
2. 用户相信证书颁发机构仅信任合法的网站;加密
3. 被访问的网站提供了一个有效的证书,意即,它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);
4. 该证书正确地验证了被访问的网站(如,访问https://example时收到了给“Example Inc.”而不是其它组织的证书);
5. 或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层(TLS或SSL)不能被窃听者破坏。
简单描述,用户使用https来下载.plist文件。则须要网站支持https协议。支持https协议,除了服务端作一些配置外,还须要申请一个数据签名证书。这个签名证书是由签发机构签发的。不能本身配置生成。而申请签名证书须要一段时间。而咱们的目的只是但愿可以让咱们的app被用户正常下载安装便可。
二.问题分析
解决该问题,就2个方法:
1.本身网站服务上配置https服务,并购买数字签名证书以保证每种类型及其不一样版本的浏览器可以安装了证书颁发机构颁发的,咱们购买的数据签名证书。时间开销7天左右。
2.将app文件托管到支持https协议的第三方服务器上。
三.解决问题
使用七牛云存储,能够快速,免费解决这个问题。只须要到http://www.qiniu.com/注册一个帐号。而后,开通https协议的域名便可。最后将.plist和.ipa文件上传到七牛云存储上便可。操做过程,很是简单。只要注意几点:
1. 开通一个http协议的域名,和一个https协议的域名。
如上图。后缀名是.qiniudn.com的是支持http协议的域名。后缀名是.qbox.me的是支持https协议的域名。上传.plist、.ipa到七牛云存储。
2. 修改下载.plist文件的地址,修改.plist文件内容。
网站首页,下载.plist地址改为上传到七牛云存储上的支持https协议(域名后缀名是.qbox.me)的下载连接地址。
<ahref="itms-services://?action=download-manifest&url=https://dn-ekwing.qbox.me/ekwing.plist"class="mobile-ios"></a>
3. 将.plist文件内容中,.ipa的下载地址,改为七牛云存储上的支持http协议(后缀名是.qiniudn.com)
<string>http://ekwing.qiniudn.com/ekwing.ipa</string>
4. 总结,.plist的下载用https协议,而.ipa的下载用http协议便可。修改完后,就可应用ios六、ios七、ios7.1进行测试了。
四. 感谢七牛云存储
感谢七牛运存储提供免费服务。不过,目前防盗链还不能用。但愿可以加上防盗链功能。
五. 因ios7.1安装app,须要用https协议而提示的错误
<Warning>:[ERROR]: Cannot load non-https manifest URL:http://192.168.1.22/ekwing.plist
<Warning>:Could not load download manifest with underlying error: ErrorDomain=SSErrorDomain Code=128 "没法链接" UserInfo=0x1669d990 {NSLocalizedDescription=没法链接}
<Warning>: NSURLConnection/CFURLConnection HTTP loadfailed (kCFStreamErrorDomainSSL, -9813)
<Warning>: Could not load download manifest withunderlying error: Error Domain=NSURLErrorDomain Code=-1202 "没法链接到商店" UserInfo=0x166bc640{NSLocalizedDescription=没法链接到商店,NSLocalizedRecoverySuggestion=您仍要链接此服务器吗?,NSLocalizedFailureReason=没法创建安全链接。请检查“日期与时间”设置。,NSErrorFailingURLStringKey=https://192.168.1.22/ekwing.plist,NSUnderlyingError=0x165b37e0 "此服务器的证书无效。您可能正在链接到一个假装成“192.168.1.22”的服务器,这会威胁到您的机密信息的安全。",NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef:0x166b83e0>,NSErrorFailingURLKey=https://192.168.1.22/ekwing.plist}
转载,请注明原地址 http://blog.csdn.net/longxibendi/article/details/37601747