你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 實現 iOS App 在線安裝(局域網OTA)

實現 iOS App 在線安裝(局域網OTA)

編輯:IOS開發基礎

ios-apps600.jpg

本文授權轉載:sunljz(簡書)

因為數據線已經嚴重破損,動不動就會自動斷開連接,而且一天到晚連著設備感覺它老是在邊充電邊放電。另外迭代測試的時候每次都要給測試發包,忍受著那無下限的網速,所以就想做個 App 分發站點,直接在網頁中點擊安裝,這樣比較省事

在網上找了一些資料,但實際搭建的過程中還是遇到不少問題,所以自己整理了一篇筆記,內容分為3個部分

一、App 打包,生成 plist 文件

1. 打包

打包的方法就不再敘述了,最後輸出 .ipa 包就可以

但想要要在線安裝,還需要一個 plist 文件

plist 文件的模板如下:

itemsassetskindsoftware-packageurlhttp://172.17.22.124/test.ipametadatabundle-identifiercom.sunli.testbundle-version1.1.0kindsoftwarereleaseNotes1.1版本發布titletestDemo

url 中需要填寫你的 ipa 包下載地址

bundle-identifier 填寫你打包時的 bundle id

bundle-version 版本號

reseaseNotes 發布信息

title app名稱,下載時會彈出安裝提示,提示內容包含 title

特別說明:

在線安裝的前提是你的開發者證書已經對 iOS 設備授權,這裡不涉及繞過蘋果認證的內容

二、啟動 apache 服務,配置 Https

1. 啟動 Apache

Mac OS X 自帶了 Apache 服務,我們只需要啟動它就可以了

在終端中輸入

sudo apachectl start

然後在浏覽器中嘗試輸入 http://127.0.0.1 , 如果出現 It Works!那麼就是啟動成功

站點的默認目錄是 /Library/WebServer/Documents/

2. 開啟 Https 服務

因為 iOS7.1 以後, Apple 不再支持 HTTP 方式的 OTA ,所以需要為 Apache 開啟 HTTPS 服務

①. 制作 OpenSSL 證書

生成服務器私鑰

mkdir /private/etc/apache2/ssl
cd /private/etc/apache2/ssl
sudo openssl genrsa -out server.key 1024

生成簽署申請

需要完整填寫各項信息,Common Name必須是服務器 ip 或域名,其他信息可以隨意填寫

sudo openssl req -new -key server.key -out server.csr

如果這一步漏填信息,可能會導致最後生成的 ca 文件是空的

生成 CA 私鑰

sudo openssl req  -new -x509 -days 365 -key ca.key -out ca.crt

創建 demoCA

在 ssl 目錄下創建 demoCA 文件夾,然後進入 demoCA ,創建一個 index.txt 和 serial ,index.txt 為空, serial 內容為01,然後再創建一個空文件夾 newcerts

然後執行命令

sudo openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

②. 配置 SSL 服務

編輯 httpd.conf 文件

sudo vim /private/etc/apache2/httpd.conf

把以下三行代碼前頭的注釋去掉

LoadModule ssl_module libexec/apache2/mod_ssl.so
Include /private/etc/apache2/extra/httpd-ssl.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf

注意:如果你的 httpd.conf 中缺少了某行,你可以自行添加進去即可。(我的 httpd.conf 中就沒有後面兩行,自己加上去的)

編輯 httpd-ssl.conf 文件

sudo vim /private/etc/apache2/extra/httpd-ssl.conf

把以下兩行代碼的注釋去掉

SSLCertificateFile "/private/etc/apache2/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/server.key"

全文搜索是要注意,可能它的路徑和我貼的不一致

然後修改路徑,改成你的證書文件路徑

SSLCertificateFile "/private/etc/apache2/ssl/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/ssl/server.key"

編輯 httpd-vhosts.conf 文件

sudo vim /private/etc/apache2/extra/httpd-vhosts.conf

在 NameVirtualHost *:80 後面添加

NameVirtualHost *:443

然後在文件末尾添加

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /private/etc/apache2/ssl/server.crt
SSLCertificateKeyFile /private/etc/apache2/ssl/server.key
ServerName 172.17.22.124
DocumentRoot "/Library/WebServer/Documents/"

ServerName 填寫你的 ip

DocumentRoot 填寫你的站點路徑

檢查 apachectl 配置

sudo apachectl configtest

如果它提示:Syntax OK ,那就完成90%了,如果它提示有錯,那就要根據錯誤提示自行解決了

我在這個環節遇到了一個錯誤

SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).

解決方案是參考這篇文章 http://stackoverflow.com/questions/20127138/apache-2-4-configuration-for-ssl-not-working

sudo vim /private/etc/apache2/httpd.conf
然後把以下代碼的注釋去掉
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

但我的配置文件中,路徑跟上述的不一致,我的是下面這行

LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so

去掉注釋後,保存,重新檢查配置,直到成功

重啟 Apache 服務

sudo apachectl restart

這樣就可以用 https 訪問本地服務器了

三、建立在線安裝服務

跳轉到你的站點目錄,我是 /Library/WebServer/Documents/

cd /Library/WebServer/Documents/

然後把 plist 文件,ipa 包,還有前面生成在 ssl 目錄中的 ca.crt 文件都拖到站點目錄中

然後新建網頁

sudo vim index.html

輸入以下內容

click to install appssl install

url中必須填寫 https 開頭的 ipa 包下載地址,然後下載前需要安裝 ssl 證書,所以第二行附上 ca.crt 證書的下載地址

最後在 iphone 的 Safari 浏覽器中輸入地址 http://172.17.22.124/index.html 或者 https://172.17.22.124/index.html

先安裝證書,再安裝 app,大功告成!

參考資料:

http://www.jianshu.com/p/35ca63ec0d8e

http://stackoverflow.com/questions/20127138/apache-2-4-configuration-for-ssl-not-working



  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved