蘋果超級(jí)簽名原理
原帖:https://blog.csdn.net/wei371522/article/details/94401276
蘋果超級(jí)簽比企業(yè)簽的優(yōu)勢(shì)在不會(huì)掉簽拂玻,安裝后永久使用馅而。
一.首先介紹下已經(jīng)實(shí)現(xiàn)超級(jí)簽名的第三方公司
1.蒲公英
2.亙古科技
3.云打包
二.最終要實(shí)現(xiàn)的效果
三.具體原理
簽名原理
簽名原理其實(shí)就一句話,使用了蘋果提供給開發(fā)者的Ad-Hoc分發(fā)通道摸屠,把安裝設(shè)備當(dāng)做開發(fā)設(shè)備進(jìn)行分發(fā)鲜结。
既然簽名用是 Ad-Hoc ,那么 Ad-Hoc 所具有的優(yōu)劣勢(shì)也一并繼承了下來:
優(yōu)點(diǎn):
直接分發(fā)播掷,安裝即可運(yùn)行,不需要用戶做企業(yè)證書的信任操作
目前穩(wěn)定撼班,不會(huì)有證書吊銷導(dǎo)致的業(yè)務(wù)風(fēng)險(xiǎn)(后續(xù)蘋果政策風(fēng)險(xiǎn)非常高)
缺點(diǎn):
單開發(fā)者賬號(hào)的iPhone設(shè)備數(shù)量只有100個(gè)歧匈,導(dǎo)致分發(fā)成本非常高(99美元/1年/100個(gè)設(shè)備)
開發(fā)者賬號(hào)需要預(yù)先寫入安裝設(shè)備的UDID,在工具鏈不通的情況下砰嘁,獲取用戶的UDID相對(duì)困難和繁瑣件炉,而且手動(dòng)寫入U(xiǎn)DID不存在商用可行性勘究,當(dāng)然目前這個(gè)缺點(diǎn)被解決了
整體架構(gòu)
接下來我們就看看整套機(jī)制是如何進(jìn)行的:
1.設(shè)備安裝描述文件后,會(huì)向服務(wù)器發(fā)送設(shè)備的UDID斟冕。
2.服務(wù)器收到UDID后口糕,將UDID注冊(cè)到某個(gè)開發(fā)者賬號(hào)下。
3.再生成簽名用的描述文件磕蛇,給IPA簽名走净。
4.然后iPA傳Server,使用itms-services方式讓用戶下載孤里。
Apple Developer Center 自動(dòng)化工具
接下來的關(guān)鍵點(diǎn)就是如何在獲取到用戶的UDID之后,秒級(jí)完成注冊(cè)新的開發(fā)者設(shè)備+更新Provisioning Profile的橘洞。 這里我們需要借助開源工具(Spaceship):
技術(shù)細(xì)節(jié)
使用配置文件獲取UDID
蘋果公司允許開發(fā)者通過IOS設(shè)備和Web服務(wù)器之間的某個(gè)操作捌袜,來獲得IOS設(shè)備的UDID(包括其他的一些參數(shù))。這里的一個(gè)概述:
1.在你的Web服務(wù)器上創(chuàng)建一個(gè).mobileconfig的XML格式的描述文件炸枣;
2.用戶在所有操作之前必須通過某個(gè)點(diǎn)擊操作完成.mobileconfig描述文件的安裝虏等;
3.服務(wù)器需要的數(shù)據(jù),比如:UDID适肠,需要在.mobileconfig描述文件中配置好霍衫,以及服務(wù)器接收數(shù)據(jù)的URL地址;
4.當(dāng)用戶設(shè)備安裝描述文件后侯养,設(shè)備會(huì)回調(diào)你設(shè)置的URL敦跌,如果你的URL返回302跳轉(zhuǎn)的話,Safari瀏覽器會(huì)跳轉(zhuǎn)到你所給的地址逛揩;
5.mobileconifg寫法
<!--參考:https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/ConfigurationProfileExamples/ConfigurationProfileExamples.html-->
<?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>http://dev.skyfox.org/udid/receive.php</string> <!--接收數(shù)據(jù)的接口地址-->
<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>dev.skyfox.org</string> <!--組織名稱-->
<key>PayloadDisplayName</key>
<string>查詢?cè)O(shè)備UDID</string> <!--安裝時(shí)顯示的標(biāo)題-->
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadUUID</key>
<string>3C4DC7D2-E475-3375-489C-0BB8D737A653</string> <!--自己隨機(jī)填寫的唯一字符串-->
<key>PayloadIdentifier</key>
<string>dev.skyfox.profile-service</string>
<key>PayloadDescription</key>
<string>本文件僅用來獲取設(shè)備ID</string> <!--描述-->
<key>PayloadType</key>
<string>Profile Service</string>
</dict>
</plist>
獲取設(shè)備UDID的第三方庫(kù)
獲取UDID第三方庫(kù)
接下來就是獲取到UDID柠傍,注冊(cè)新的開發(fā)者設(shè)備+更新Provisioning Profile的
Apple Developer Center 自動(dòng)化工具:
Apple Developer Center
自動(dòng)簽名封包工具:
自動(dòng)簽名封包工具
OTA 分發(fā)應(yīng)用工具:
OTA分發(fā)應(yīng)用工具
Over-the-Air Profile Delivery Concepts(獲取設(shè)備UDID官方文檔):
獲取設(shè)備UDID官方文