工作中遇到想要繞過AppStore直接更新App的要求!
這裡友情提示下,看了很多資料隻是是實作了功能,但在項目中并沒有真正用到!
資料大多都顯示會被拒,這個說的是個人級的,好像企業級的不會這樣,僅僅是項目需要做的嘗試!
下面進入主題,建立framework工程!
這裡把想要改變的東西封裝到FrameWork以便實作熱更新,提一下關于BundiD 一定要一緻,在打包的時候一定在Edit scheme —— >Run 選擇Release如圖:
因為你要跑在真機上,是以這個要選擇Release
另外将包含你想要放出的方法類添加的Head中
OK 點選Run的到動态庫然後 showinFinder
![
這就得到動态庫了,然後 我們開始主程式!
主程式這裡沒什麼好說的 主要是講frameWok倒入就行另外在加載資源的時候要用絕對路徑,因為所有的東西在Document 主程式要實作
作為主程式和Frmework的橋接
這裡需要提醒大家的ATS配置以及證書BundiD的一緻,另外這個隻向下相容支援到8.0!
這裡我用了兩種方法一是部署在自己公司的伺服器一種是利用iTunes 做了簡單的測試,iTunes 測試一頂要在plist檔案中添加Application supports iTunes file sharing 并設定為Yes 這樣你才能通過iTunes 共享!
運作一下 主程式跑到真機上!
連接配接手機通過iTunes 将Framework 放入Document 下
這裡 你就 可以根據iTunes 實時共享 !
做到改變Framework間接改變手機App的Framework 做到熱更新的目的
這裡在提下 我放倒伺服器上通過請求如何做的!
首先 我擷取權限使得背景同意讓我放在自己公司上的伺服器下,這裡如何放置就不說了很簡單,又不是自己搭伺服器!想自己搭伺服器的可以自己百度!
給大家看下我Demo 的截圖
第一個按鈕其實是從伺服器上請求的,如果有小夥伴想了解,但是沒有部署的自己伺服器上的話,直接用iTunes 用第二個按鈕就行了!
這裡值得一提的是 由于公訴網慢,我發郵件打了個zip包,本想是解壓後再放上去,結果搞錯了放了個zip 上去,于是請求回來的是一個zip包,于是我覺得這樣很好我又做了一次解壓操作,這樣使得下載下傳的資源會有所減小!
用到了一個别人寫的三方解壓GSPZipArchive!
這裡主要是底層封裝的C語言程式 據網上有人反映 已經在mac和windows兩端測試通過,都可以正常壓縮帶有中文的檔案,并能正常解壓。
隻不過 在mac 預設是UTF- 8 在window 上變成了GBK
解決辦法打開源碼 直接改為 UTF-8
如 :zipOpenNewFileInZip ( _zipFile ,( const char *) [newname UTF8String ],// UTF-8方式編碼
這樣就可以了!
另外再 說下 AFN3.0 以及2.0 網上已經有很多資料了 這裡我想說的是請求頭以及請求體!
請求頭的設定: NSString* sessionid = [[NSUserDefaults standardUserDefaults] objectForKey:kSessionID];
if (sessionid && [sessionid length])
return @{ @"COOKIE": [NSString stringWithFormat:@"sessionid=%@", sessionid]};
擷取到到一個字典key是COOKIE value是sessionid=%@
[sessionManager.requestSerializer setValue:obj forHTTPHeaderField:key];
請求體設定:AFN 中的constructingBodyWithBlock:formData 後拼接你的參數
打擊運作下看看效果吧!被拒應該是肯定的但是這種方法确實是可以做到繞過AppStore!
需要伺服器更新的同學将URL 改成自己的伺服器在Net裡:
Demo下載下傳:動态庫FrameWork