實(shí)現(xiàn) iOS App 在線安裝(局域網(wǎng)OTA)

因?yàn)閿?shù)據(jù)線已經(jīng)嚴(yán)重破損窗市,動(dòng)不動(dòng)就會(huì)自動(dòng)斷開連接,而且一天到晚連著設(shè)備感覺它老是在邊充電邊放電时肿。另外迭代測試的時(shí)候每次都要給測試發(fā)包赃蛛,??忍受著那無下限的網(wǎng)速恃锉,所以就想做個(gè) App 分發(fā)站點(diǎn),直接在網(wǎng)頁中點(diǎn)擊安裝焊虏,這樣比較省事

在網(wǎng)上找了一些資料淡喜,但實(shí)際搭建的過程中還是遇到不少問題,所以自己整理了一篇筆記诵闭,內(nèi)容分為3個(gè)部分

一炼团、App 打包,生成 plist 文件

1. 打包

打包的方法就不再敘述了疏尿,最后輸出 .ipa 包就可以
但想要要在線安裝瘟芝,還需要一個(gè) plist 文件
plist 文件的模板如下:

<?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://172.17.22.124/test.ipa</string>
                </dict>
            </array>
        <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>com.sunli.test</string>
                <key>bundle-version</key>
                <string>1.1.0</string>
                <key>kind</key>
                <string>software</string>
                <key>releaseNotes</key>
                <string>1.1版本發(fā)布</string>
                <key>title</key>
                <string>testDemo</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

url 中需要填寫你的 ipa 包下載地址
bundle-identifier 填寫你打包時(shí)的 bundle id
bundle-version 版本號(hào)
reseaseNotes 發(fā)布信息
title app名稱,下載時(shí)會(huì)彈出安裝提示褥琐,提示內(nèi)容包含 title

特別說明:
在線安裝的前提是你的開發(fā)者證書已經(jīng)對(duì) iOS 設(shè)備授權(quán)锌俱,這里不涉及繞過蘋果認(rèn)證的內(nèi)容

二、啟動(dòng) apache 服務(wù)敌呈,配置 Https

1. 啟動(dòng) Apache

Mac OS X 自帶了 Apache 服務(wù)贸宏,我們只需要啟動(dòng)它就可以了
在終端中輸入

sudo apachectl start

然后在瀏覽器中嘗試輸入 http://127.0.0.1 , 如果出現(xiàn) It Works!那么就是啟動(dòng)成功

站點(diǎn)的默認(rèn)目錄是 /Library/WebServer/Documents/

2. 開啟 Https 服務(wù)

因?yàn)?iOS7.1 以后磕洪, Apple 不再支持 HTTP 方式的 OTA 吭练,所以需要為 Apache 開啟 HTTPS 服務(wù)

①. 制作 OpenSSL 證書

生成服務(wù)器私鑰

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

生成簽署申請(qǐng)

需要完整填寫各項(xiàng)信息,Common Name必須是服務(wù)器 ip 或域名析显,其他信息可以隨意填寫

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

如果這一步漏填信息鲫咽,可能會(huì)導(dǎo)致最后生成的 ca 文件是空的

生成 CA 私鑰

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

創(chuàng)建 demoCA

在 ssl 目錄下創(chuàng)建 demoCA 文件夾,然后進(jìn)入 demoCA ,創(chuàng)建一個(gè) index.txtserial 分尸,index.txt 為空锦聊, serial 內(nèi)容為01,然后再創(chuàng)建一個(gè)空文件夾 newcerts
然后執(zhí)行命令

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

②. 配置 SSL 服務(wù)

編輯 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 中缺少了某行箩绍,你可以自行添加進(jìn)去即可孔庭。(我的 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

然后在文件末尾添加

<VirtualHost *: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/"
</VirtualHost>

ServerName 填寫你的 ip
DocumentRoot 填寫你的站點(diǎn)路徑

**檢查 apachectl 配置 **

sudo apachectl configtest

如果它提示:Syntax OK 尖昏,那就完成90%了仰税,如果它提示有錯(cuò),那就要根據(jù)錯(cuò)誤提示自行解決了
我在這個(gè)環(huán)節(jié)遇到了一個(gè)錯(cuò)誤

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 服務(wù)

sudo apachectl restart

這樣就可以用 https 訪問本地服務(wù)器了

三、建立在線安裝服務(wù)

跳轉(zhuǎn)到你的站點(diǎn)目錄唉窃,我是 /Library/WebServer/Documents/

cd /Library/WebServer/Documents/

然后把 plist 文件耙饰,ipa 包,還有前面生成在 ssl 目錄中的 ca.crt 文件都拖到站點(diǎn)目錄中
然后新建網(wǎng)頁

sudo vim index.html

輸入以下內(nèi)容

<html>
<body>
<a href="itms-services://?action=download-manifest&url=https://172.17.22.124/test.plist" class="app_link">click to install app</a>
<br><br>
<a title="iPhone" >ssl install</a>
</body>
</html>

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.reibang.com/p/35ca63ec0d8e
http://stackoverflow.com/questions/20127138/apache-2-4-configuration-for-ssl-not-working

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市元暴,隨后出現(xiàn)的幾起案子篷扩,更是在濱河造成了極大的恐慌,老刑警劉巖茉盏,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鉴未,死亡現(xiàn)場離奇詭異,居然都是意外死亡鸠姨,警方通過查閱死者的電腦和手機(jī)铜秆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來享怀,“玉大人羽峰,你說我怎么就攤上這事。” “怎么了梅屉?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵值纱,是天一觀的道長。 經(jīng)常有香客問我坯汤,道長虐唠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任惰聂,我火速辦了婚禮疆偿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘搓幌。我一直安慰自己杆故,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布溉愁。 她就那樣靜靜地躺著处铛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拐揭。 梳的紋絲不亂的頭發(fā)上撤蟆,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音堂污,去河邊找鬼家肯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛盟猖,可吹牛的內(nèi)容都是我干的讨衣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼扒披,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼值依!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碟案,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤愿险,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后价说,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辆亏,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年鳖目,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扮叨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡领迈,死狀恐怖彻磁,靈堂內(nèi)的尸體忽然破棺而出碍沐,到底是詐尸還是另有隱情,我是刑警寧澤衷蜓,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布累提,位于F島的核電站,受9級(jí)特大地震影響磁浇,放射性物質(zhì)發(fā)生泄漏斋陪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一置吓、第九天 我趴在偏房一處隱蔽的房頂上張望无虚。 院中可真熱鬧,春花似錦衍锚、人聲如沸友题。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咆爽。三九已至,卻和暖如春置森,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背符糊。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工凫海, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人男娄。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓行贪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親模闲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子建瘫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容