一、原理
把安裝設備當做開發設備進行分發。說的明白一些,開發者可以在開發者后台添加手機的UDID,然后重新打包一個IPA文件,分發平台,然后被添加的UDID就可以下載。
二、優缺點
優勢:
直接分發,安裝即可運行,不需要用戶做企業證書的信任操作
目前穩定,不會有證書吊銷導致的業務風險(后續蘋果政策風險非常高)
缺點:
單開發者賬號的iPhone設備數量只有100個,導致分發成本非常高(99美元/1年/100個設備)
開發者賬號需要預先寫入安裝設備的UDID,在工具鏈不通的情況下,獲取用戶的UDID相對困難和繁瑣,而且手動寫入UDID不存在商用可行性,當然目前這個缺點被解決了
三、整體運行流程

2.服務器收到UDID后,將UDID添加到開發者賬號下,下載此udid簽名用的證書描述文件。
3.然后用此udid簽名用的證書描述文件,把預留的ipa重簽。
4.重簽后的iPA上傳分發服務器,通過分發鏈接讓用戶下載。
下面是這四個步驟的技術細節:
一、使用配置文件獲取UDID
蘋果公司允許開發者通過IOS設備和Web服務器之間的某個操作,來獲得IOS設備的UDID(包括其他的一些參數)。這里的一個概述:
1.在你的Web服務器上創建一個.mobileconfig的XML格式的描述文件;
2.用戶在所有操作之前必須通過某個點擊操作完成.mobileconfig描述文件的安裝;
3.服務器需要的數據,比如:UDID,需要在.mobileconfig描述文件中配置好,以及服務器接收數據的URL地址;
4.當用戶設備安裝描述文件后,設備會回調你設置的URL,如果你的URL返回302跳轉的話,Safari瀏覽器會跳轉到你所給的地址;服務器做一些301跳轉,存儲UDID等操作
XML代碼如下:
<?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>PayloadContent</key> <dict> <key>URL</key> <string>一個接收UDID的網址</string> <key>DeviceAttributes</key> <array> <string>UDID</string> <string>IMEI</string> <string>ICCID</string> <string>VERSION</string> <string>PRODUCT</string> </array> </dict> <key>PayloadOrganization</key> <string>GuangdongQi</string><!--組織名稱--> <key>PayloadDisplayName</key> <string>AppFree</string> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadUUID</key> <string>9CF421B3-9853-4454-BC8A-982CBD3C907C</string><!--自己隨機填寫的唯一字符串,http://www.guidgen.com/ 可以生成--> <key>PayloadIdentifier</key> <string>com.gpon.profile-service</string> <key>PayloadDescription</key> <string>This temporary profile will be used to find and display your current device's UDID.</string> <key>PayloadType</key> <string>Profile Service</string> </dict> </plist>
注意
①、接收網址的地址需要SSL簽名,自簽名的不行,這也是蘋果強制https的一種方式吧
②、mobileconfig下載時設置文件內容類型Content Type為:application/x-apple-aspen-config(遇到問題的都是因為這個),或者像這里用一個簡單頁面做好下載mobileconfig文件,引導用戶安裝
二、服務器收到UDID后,將UDID注冊到某個開發者賬號下,並下載新的描述文件
接下來的關鍵點就是如何在獲取到用戶的UDID之后,秒級完成注冊新的開發者設備+更新Provisioning Profile的。 這里我們需要借助開源工具(Spaceship):

spaceship公開了Apple Developer Center的API,而且執行速度比解析開發者Web頁面快兩個數量級,從而在非常短的時間內搞定
Provisioning Profile
。 這個框架解決了整套機制的關鍵問題,成為整個工具鏈的基石。其實某平台早就完成了UDID獲取和應用簽名分發的技術儲備,只差這套API。
spaceship 是Fastlane的一個框架,安裝spaceship
sudo gem install fastlane -n /usr/local/bin sudo gem install pry -n /usr/local/bin fastlane spaceship
具體細節:使用spaceship批量添加設備並更新profile
三、用此udid簽名用的證書描述文件,把預留的ipa重簽
這里推薦使用 Sigh這個框架來解決這個問題。

sudo gem install sigh
對IPA包重簽名:
fastlane sigh resign
此時會顯示:

輸入你的IPA路徑,點擊回車,此時會顯示你電腦中可用的證書:


ipa包重簽名成功