七牛雲儲存實現iOS企業版分發

weixin_33936401發表於2016-07-21

iOS企業證書的發版這裡就不多說了。
由於app現在放在公司自己的伺服器中,為了實現https的plist下載連結還特意把plist掛在了開源中國上。小公司,頻寬小,多使用者升級的時候給公司伺服器帶來不小的壓力。所以最近工頭有把ipa掛在七牛上去的想法,這樣就可以有效的緩解伺服器的壓力。
企業版分發的plist下載連結必須是https協議的,所以需要SSL證書。如果你公司沒有證書,那麼可以使用七牛。
接下來開始步驟:
1:使用xcode打包生成ipa檔案(過程不多說)
2:登陸七牛(預設你已有賬號,沒賬號請註冊)
3:登陸之後新增資源:

1376067-5594fd1b12180d34.png
新增資源.png

4:建立空間:

1376067-8010026c145506ad.png
建立空間.png

5:建立成功之後在資源列表中你可以看到你新建立的資源:

1376067-9ca45a61ed93db17.png
資源列表.png

6:選中你新建立的資源名稱,然後選中內容管理-->上傳檔案(這裡先上傳ipa檔案):

1376067-97f55b29c96e1248.png
上傳檔案.png

7:上傳ipa檔案成功之後檢視檔案的外連結,如圖:(你看到的連結可能並不是https的而是http的,這裡後面再說明)

1376067-3c5f566747757dc8.png
外連結.png

8:複製ipa檔案的外鏈,接下來就是要上傳plist檔案了,首先建立plist檔案:

1376067-5bfe42bb1f36c8db.png
plist檔案內容.png

在plist檔案的url中填寫你複製的ipa的外鏈。其他的只需填寫bundle-identifier為你的專案的id即可,title中填寫你app的名稱,其他的可不變。然後儲存plist檔案。
9:接下來就是上傳plist檔案到七牛了,同ipa檔案的上傳一樣,上傳成功後點選外連結即可檢視外鏈:


1376067-688cc663867c7d9b.png
plist.png

10:接下來是最重要的一步,因為你會發現你上傳的plist檔案的外連結並不是https的,而企業版分發的plist下載連結必須是https。所以別急.先在檢視內容中儲存預設域名,然後選中你建立的空間名稱,你會看到頁面上有個“融合CDN加速域名”的title,點選新增HTTPS域名:

1376067-19716f4069399085.png
點選儲存域名.png
1376067-2b5be6d164e1219c.png
https域名.png

好了,此時你再去內容管理中,點選你之前上傳的plist檔案檢視它的外連結,你會發現它已經是https的了。
ok,https連結的plist檔案已生成,複製連結,在程式碼中:

#warning 測試程式碼
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        UIApplication *application = [UIApplication sharedApplication];
        [application openURL:[NSURL URLWithString:[NSString stringWithFormat:@"itms-services://?action=download-manifest&url=https://你的plist外連結地址.plist"]]];
        exit(0);
    });

就可以升級了。
有時你會發現,在你要升級版本的時候,你雖然更換了ipa檔案,但是plist檔案地址所對應的url的升級包並沒有變,或者你連plist檔案中的url也更新重新上傳,但是你再次開啟plist的外鏈你會發現plist的內容並沒有修改。為此我忙活了半天不知道為什麼。後來才知道這是由於七牛快取的原因,所以你每次要發版的時候,在你上傳完ipa檔案的時候,最後能去重新整理一下plist檔案和ipa檔案,在個人看板中:


1376067-7dcc8f44efc0ed89.png
個人中心.png

有個重新整理預取得功能,複製ipa的連結或plist的外鏈到那裡即可重新整理(重新整理是有次數限制的):

1376067-8af27c4f8b3a6146.png
重新整理預取.png

恩,重新整理完時候你就可以愉快的升級了。(快取很啃爹,請慢慢摸索)。
最後奉上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>ipa檔案的外鏈,這個外鏈可以不是https的,也就是說http即可</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>needs-shine</key>
                    <true/>
                    <key>url</key>
                    <string></string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>display-image</string>
                    <key>needs-shine</key>
                    <true/>
                    <key>url</key>
                    <string></string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>你的bundleID</string>
                <key>bundle-version</key>
                <string>1.2.0</string>
                <key>kind</key>
                <string>software</string>
                <key>subtitle</key>
                <string>App</string>
                <key>title</key>
                <string>app名稱</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

ok,以上總結有什麼不對或瞎扯的地方歡迎在下方留言中指出。
ps:無demo不文章,抱歉,真沒有demo。

相關文章