IOS 7.1 在线安装IPA(OTA无线发布)整理

本地服务器名:xampp 


思路:


1.将生成的 .plist文件放到dropbox中 复制分享链接  将连接写入到index.html中 

2.将ipa程序包 放在本地或者上传到dropbox中 获取连接 写到.plist文件中

3.将获得到的分享连接 www.dropbox.com 改成 dl.dropboxusercontent.com 就可以测试成功了!!!!!!!






IOS 7.1在线安装IPA失败以及数字证书

2014-06-20更新:增加对七牛云存储的HTTPS服务说明和又拍云的介绍。


iOS 7.1在线安装IPA失败以及数字证书

Enterprise app deployment doesn’t work on iOS 7.1 and CA

错误现象

在 iOS 升级到 7.1 之后,使用 Safari 在线安装企业版或者 AD-HOC 版本的IPA时,iOS会提示:

无法安装应用程序,因为“xx.xx.xx” 的证书无效。

这是一个蛋疼的提示,它的真正人类能懂的含义是:

在 iOS 7.1 版本以后,请使用 HTTPS 部署此类安装。

解决方案

1. 部署自己的HTTPS服务器

这种方案需要使用一个可信的证书颁发机构办法的证书,将其部署在自己的服务器上。配置自己的服务器软件(例如 Apache、Nginx等) 使其支持它。

这是一劳永逸的解决方案,如果需要大量部署,那么此种方案是首选。

注意,自己给自己颁发的证书是不行的。必须使用可信的证书颁发机构颁发的证书。这就意味着,你很可能需要付费。

后面会讲到数字证书的部分,会稍稍展开一点。

2. 使用已有的HTTPS服务器

只需要找一个已经部署的HTTPS服务器,将我们的部署文件(plist)传到该服务器上即可。

注意,为了保证下载速度,也为了保证域名的统一性,我们可以只把 plist 文件上传到HTTPS服务器上。

例如,在我们的网站(http://my.http.server)上有一个在线安装IPA页面是这样的:



1

2

3

4

5

6

7

8

9

10

11

12

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Setup My App</title>

</head>

<body>

<ul>

<li><a href="itms-services://?action=download-manifest&url=http://my.http.server/myapp.plist"> Tap Here to Install My App</a>

</li>

</ul>

</body>

</html>


由于 iOS 7.1 不支持通过 HTTP 服务器在线安装IPA,我们需要修改其中的链接,将其改到 HTTPS 服务器上。请注意修改过的前缀和域名。



1

<a href="itms-services://?action=download-manifest&url=https://my.HTTPS.server/myapp.plist"> Tap Here to Install My App</a>


我们只需要把这个plist文件上传到HTTPS服务器即可,用户仍然可以访问原来的HTTP来进行下载。IPA文件也可以放在HTTP服务器上。



1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

    <key>items</key>

    <array>

        <dict>

            <key>assets</key>

            <array>

                <dict>

                    <key>kind</key>

                    <string>software-package</string>

                    <key>url</key>

                    <string>http://my.http.server/myapp.ipa</string>

                </dict>

            </array>

            <key>metadata</key>

            <dict>

                <key>bundle-identifier</key>

                <string>us.1201.lulala</string>

                <key>bundle-version</key>

                <string>1.0</string>

                <key>kind</key>

                <string>software</string>

                <key>title</key>

                <string>My App</string>

            </dict>

        </dict>

    </array>

</dict>

</plist>


而且,在 iOS 7.1 以下的系统中,也可以支持 HTTPS 服务器。所以这个修改对所有iOS系统都生效。

3. 使用免费的 HTTPS 服务器

如果你找不到拥有 HTTPS 服务器的土豪朋友,那么可以使用下面两种免费的方案:

  • DropBox 这位美国土豪提供免费服务。只需要把你的plist文件传到 dropbox 的 public 共享区并 Copy public link 得到公共下载地址就行了。
  • 七牛云存储 这位中国土豪也支持 HTTPS ,服务同样免费(有流量限制),速度在国内访问更快,方法类似。
    在使用七牛的时候要注意,七牛默认提供的外网访问地址,使用HTTPS协议直接访问时浏览器会提示证书无效。可参考 如何通过 SSL 的形式来访问七牛云存储上的资源 重新绑定一个 qbox.me 域名来实现HTTPS访问。
  • 又拍云 也支持HTTPS服务,但仅支持7天试用。

2014-06-20更新:

最近DropBox在国内抽风,估计离永久屏蔽也不远了,还是早点转吧。

数字证书

由于考虑自己架设 HTTPS 服务器,于是找了一些数字证书的资料放在这里备查。

  • 如果一定要使用自签名的证书或者来发布自己的App,那么可以要求iOS系统使用者在TA的设备上把你的证书加入信任。具体参考:Adding CA Cert root and personal certificates to your iPhone, iPod or iPad 。(对于苹果小白来说,这个很难…)
  • 一些证书颁发机构可以免费申请30天、60天的试用证书,例如:试用型 SSL 证书(Free Trial SSL) 和 StartSSL
  • Godaddy 有一个面向开源项目1年免费的计划。
  • 还有一些证书每年大约只要6刀,Google可以得到信息。
  • 不要在国内的证书颁发机构购买证书。
  • 不要信任CNNIC的根证书。

还有一些链接:

  • HTTPS
  • Certificate authority


ios升级到7.1时,企业证书http服务器发布无线安装不能使用,需要使用https服务器,这个前面的一篇已经说过了。

这里说说Https服务器的几种方式

1.测试时自签名https证书测试无效,提示不能连接到服务器

2.使用dropbox共享连接https服务,https://www.dropbox.com/s/xxx/x.plist,同样提示不能连接dropbox服务器

3.替换 "www.dropbox.com" 成 "dl.dropboxusercontent.com",无线安装测试成功


注:dropbox的使用真的很方便,我又崇洋媚外了!





使用七牛云存储解决ios7.1的app部署问题

 一.问题描述

         开发完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>

但是,苹果从ios7.1开始,用户安装app,需要使用https协议,来下载plist文件。也就说,在安装app的第一步,下载.plist文件,需要使用https协议。https协议如下:

IOS 7.1 在线安装IPA(OTA无线发布)整理_第1张图片

这里不详细描述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协议的域名。

IOS 7.1 在线安装IPA(OTA无线发布)整理_第2张图片

如上图。后缀名是.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协议即可。修改完后,就可应用ios6、ios7、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}

iOS 开发 入门:使用Ad Hoc 进行用户测试

在完成iOS开发,准备进行发布之前,我们都希望App能在周围的朋友之间先进行测试,提提意见,修改完善之后再发布到App Store上。Apple考虑到这一点,因此通过Ad Hoc来实现发布前的用户测试。从另一个角度讲也就是通过Ad Hoc 将未发布的App 给其他人提前免费使用。

关于Ad Hoc的使用其实很简单,在Apple Developer官网的页面上也有详细的介绍。首先要注意的是我们的App只能通过Ad Hoc分享给绑定我们账号的设备上,所以至是一百台。然后看一下官方说明的步骤。

Step 1:创建并下载一个iOS 发布证书。这个一般我们在创建iOS开发证书后都会顺便创建。
Step 2:创建并下载一个Ad Hoc Distribution Provisioning Profile ,就是Ad Hoc 发布配置文件。这个很好办,在网站中点击Provisioning选项,点击new profile创建,要填写的信息如下:

Distribution method

Ad Hoc

Profile name

<App_Name> User Testing Profile

App ID

Appropriate app ID for the app being tested

Devices

Tester’s device identifier

这些信息想必谁都会填,就是在Devices上选中要分享的设备。创建完之后下载。

Step 3:这一步其实就是在Xcode中创建我们的软件的App文件。具体一共算三步:

(1)打开Xcode;
(2)点击工具栏上的Product ->Archive,对App进行打包;
(3)在Organizer的Archives中就有你打包的App了,点击Distribute,选择 Ad Hoc,如下图
IOS 7.1 在线安装IPA(OTA无线发布)整理_第3张图片
之后保存,就得到.ipa 文件。

Step 4:这一步就是把ipa文件和配置文件通过各种方式发送给要测试的朋友的电脑上,打开itunes,将配置文件先拉进itunes,然后将ipa文件也拉进去,同步就OK了。

转载,请注明原地址 http://blog.csdn.net/longxibendi/article/details/37601747

你可能感兴趣的:(ios,HTTP服务器,Dropbox,七牛,OTA)