1. 程式人生 > >IOS 7.1 線上安裝IPA(OTA無線釋出)整理

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服務說明和又拍雲的介紹。

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 伺服器的土豪朋友,那麼可以使用下面兩種免費的方案:

  •  這位美國土豪提供免費服務。只需要把你的plist檔案傳到 dropbox 的 public 共享區並 Copy public link 得到公共下載地址就行了。
  • 七牛雲端儲存 這位中國土豪也支援 HTTPS ,服務同樣免費(有流量限制),速度在國內訪問更快,方法類似。
    在使用七牛的時候要注意,七牛預設提供的外網訪問地址,使用HTTPS協議直接訪問時瀏覽器會提示證書無效。可參考 如何通過 SSL 的形式來訪問七牛雲端儲存上的資源 重新繫結一個 qbox.me 域名來實現HTTPS訪問。
  • 又拍雲 也支援HTTPS服務,但僅支援7天試用。

2014-06-20更新:

最近DropBox在國內抽風,估計離永久遮蔽也不遠了,還是早點轉吧。

數字證書

由於考慮自己架設 HTTPS 伺服器,於是找了一些數字證書的資料放在這裡備查。

  •  有一個面向開源專案1年免費的計劃。
  • 還有一些證書每年大約只要6刀,Google可以得到資訊。
  • 不要在國內的證書頒發機構購買證書。
  • 不要信任CNNIC的根證書。

還有一些連結:

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協議如下:

這裡不詳細描述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)

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開發,準備進行釋出之前,我們都希望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,如下圖
之後儲存,就得到.ipa 檔案。 Step 4:這一步就是把ipa檔案和配置檔案通過各種方式傳送給要測試的朋友的電腦上,開啟itunes,將配置檔案先拉進itunes,然後將ipa檔案也拉進去,同步就OK了。

轉載,請註明原地址 http://blog.csdn.net/longxibendi/article/details/37601747