APP企業(yè)簽名版本與App Store版本共存問題

環(huán)境

由于公司的項(xiàng)目屬于不好上架到App Store的項(xiàng)目,所以之前一直用企業(yè)簽名的形式分發(fā)應(yīng)用,但由于種種原因,現(xiàn)需要上線到App Store。

問題

用戶已經(jīng)習(xí)慣了在官網(wǎng)下載APP,并且用戶量特別大,萬級別的,每一個動作都必須小心謹(jǐn)慎,要上線到App Store的話就有兩個來源了。此時最難處理的一個點(diǎn)是版本更新!有時候強(qiáng)制更新有時候不強(qiáng)制,初始化的時候調(diào)用版本更新相關(guān)接口。

方案

1.直接源碼上線,不做代碼修改。當(dāng)有新版本的時候用戶點(diǎn)擊更新一致跳轉(zhuǎn)到官網(wǎng)下載頁,在下載頁分離出一個App Store入口,用戶也可以選擇跟以前一樣直接下載企業(yè)簽名版本。
問題:
a.兩個版本不會兼容,如果此前下載的是企業(yè)版本,想要更新App Store版本*應(yīng)該*是必須先卸載的,反之一樣;
b.企業(yè)版上線了,可能App Store還沒審核通過,帶來諸多需要解決的問題比如什么時候提示用戶版本更新。

2.修改bundle ID分離APP,就變成了兩個APP,用戶通過不同渠道可以同時安裝兩個APP,App Store版本的不再調(diào)用后臺版本更新接口,直接從App Store獲取新版本。
問題:
a.有些使用bundle ID注冊的第三方(目前就分享)將不可正常使用,唯一的解決辦法就是從那些三方網(wǎng)站申請一個全新的id對應(yīng)。如此賬號就會越來越多,分離工作也越來越復(fù)雜,不太推薦。
b.其實(shí)還是需要調(diào)用后臺特定更新接口,因?yàn)椴恢朗欠裥枰獜?qiáng)制更新。

3.修改APP名稱,通過APP名稱(也可以是別的標(biāo)識,具體可用哪些方案后面給思路)判斷是否企業(yè)版。此時bundle ID一樣還是同一個APP,分別對企業(yè)簽名版和App Store版本做不同的更新處理。
問題: 這就是我選擇的方案,問題大同小異,只是對用戶來說體驗(yàn)更好。
下面說具體做法

//獲取當(dāng)前版本號
   let infoDictionary = Bundle.main.infoDictionary
   let appShortVersion = infoDictionary!["CFBundleShortVersionString"] as! String
/*
這里注意下CFBundleShortVersionString與CFBundleVersion的區(qū)別,之前我們用CFBundleVersion作為版本升級的依據(jù),
現(xiàn)在發(fā)現(xiàn)通過App Store獲取的版本信息沒有這個數(shù)據(jù),所以改為用前者。
*/

獲取App Store版本的接口為http://itunes.apple.com/lookup?id=********,下面是返回扥數(shù)據(jù)結(jié)構(gòu)和部分?jǐn)?shù)據(jù)

//App Store版本更新model
struct AppStoreVersionModel: HandyJSON {
    var results: [ResultsVersionModel] = [ResultsVersionModel]()
    var resultCount: NSInteger = 0
}

struct ResultsVersionModel: HandyJSON {
    var releaseNotes: String = ""http://版本更新內(nèi)容
    var version: String = "" //版本號
    var bundleId: String = ""
    var releaseDate: String = "" //發(fā)布時間 年月日時分秒
    var trackName: String = "" //應(yīng)用程序名稱
    var screenshotUrls: [String] = [String]() //展示介紹圖
    var sellerName: String = ""http://開發(fā)者或公司
    
}

我會先請求后臺的版本接口,不過只拿到其中的是否強(qiáng)制更新的數(shù)據(jù),先判斷是否需要更新-->需要更新-->判斷是否App Store版本-->是-->請求上面接口,順便把是否強(qiáng)制更新傳過去,其余的版本介紹等都直接拿App Store的數(shù)據(jù)-->點(diǎn)擊更新的時候直接open https://itunes.apple.com/app/id*******就自動跳到App Store下載頁了。反之就是跳官網(wǎng)愛怎么處理就怎么處理。
這樣做的結(jié)果就是當(dāng)有版本更新的時候,企業(yè)簽名版本的會直接安裝更新,App Store版本的還需要獲取App Store的版本信息,有新版本才會彈出更新提示。

***另外,我上線的是大陸外的App Store區(qū)域,所以http://itunes.apple.com/lookup?id=******** 或者 https://itunes.apple.com/app/id*******/com后面要不要加上/cn需要看自己的需求。

***判斷是否是企業(yè)版的思路:我們可以通過本地的包獲得APP的名字,自然可以獲得其它更多信息,在打包的時候也可以做很多處理,比如plist新增一些標(biāo)識字段等,其實(shí)是變相的改了代碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 蘋果官網(wǎng) 21年版本: https://developer.apple.com/app-store/review...
    空空小僧閱讀 2,011評論 0 1
  • App Store 審核指南簡介App 正在改變世界,豐富人們的生活,并為像您一樣的開發(fā)者提供前所未有的創(chuàng)新機(jī)會。...
    Lonely__M閱讀 6,768評論 2 92
  • 想當(dāng)年也只是幫老師布置過會場而已,可昨晚,俺是真真切切的參與了一場家長會,心情也是小有激動。目前的態(tài)勢還處于相互摸...
    賤金屬閱讀 226評論 0 0
  • 最近在備考心理咨詢師考試,復(fù)習(xí)了不少心理學(xué)相關(guān)的內(nèi)容。突然發(fā)現(xiàn)了一個以前從未注意的事實(shí),那就是——大家都有病??梢?..
    魯曼啊漫閱讀 345評論 0 1
  • 他尋著記憶走過一條條陌生的路,終于走到在眾多樓層包圍著的家,一座老舊的四合院。 拿出那把好久沒有用的鑰匙打開了家里...
    chuanyu2015閱讀 240評論 0 0

友情鏈接更多精彩內(nèi)容