uni-app 實現IOS原生APP-本地打包集成極光推送(JG-JPUSH)詳細教程
一、前言
在前期博文《跨平臺應用開發進階(十一) :uni-app 實現IOS原生APP-云打包集成極光推送(JG-JPUSH)詳細教程》中講解了uni-app在集成極光過程中如何實現IOS原生APP云打包。
此篇博文主要講解uni-app在集成極光過程中如何實現IOS原生APP本地打包。
iOS離線打包分為三部分:
下載離線打包SDK資源;
配置離線打包工程(證書、文件、圖標、app名字等);
配置模塊(例如Geolocation、push模塊等);
二、打包前準備工作
HBuilderX 版本:3.4.7.20220422
iOS離線SDK版本:3.4.7.20220422
注意??:務必確保HBuilderX 版本與iOS離線SDK版本保持一致。
2.1 基本工程配置
點擊下載uniapp ios離線sdk。
解壓剛剛下載的離線sdk,可以看到下面這些文件:
用xcode打開HBuilder-Hello這個項目。
使用Hbuilderx生成本地打包APP資源。
本地打包代碼生成好后,把生成的"__UNI__C1B4407"這個文件夾拷貝到Xcode項目目錄下的 Pandora -> apps 路徑下,替換掉原來的目錄。
打開 Xcode 工程Supporting Files目錄下的control.xml文件修改appid值,改成和manifest.json里面的appid一樣。
在dcloud開發者中心生成appkey。
appkey生成方法點擊查看。
打開Hbuilder-Hello-Info.plist修改dcloud_appkey,改為上一步申請的appkey。
點擊左側應用工程根目錄,選中TARGETS下的HBuilder打開工程屬性界面,在"Signing & CapaBilities"選項卡下,設置以下幾點。
實現IOS原生APP本地打包,需要在Xcode中完成。作為蘋果開發者,P12證書與描述文件必不可少,需要提前準備。
2.2 項目配置
本地打包前,需要以下項目配置項:
配置應用標識(Bundle Identifier)
配置應用名稱
配置應用版本名稱
配置應用版本號
配置應用圖標
配置應用啟動界面
配置國際化
2.1 配置應用標識(Bundle Identifier)
選擇左側應用工程根目錄,選中TARGETS下的HBuilder打開工程屬性界面,在General下修改Identity的值:
其中,
Bundle Identifier為蘋果的AppID,必須與應用發布時配置的Profile關聯的AppID一致;
Version為應用版本號,在App Store中顯示的版本號,推薦與manifest.json中version下的name值一致;
Build為編譯版本號,App Store判斷升級使用,推薦與manifest.json中version下的code值一致。
2.2 配置應用名稱
1、在打開的原生工程中,點擊工程的targets和點開manifest文件,然后將manifest文件里的“name”字段的內容和原生工程里的Display Name 寫成一樣。
注意??:manifest文件里的”name“ 對應的是HBuilderX打開的工程里的“基礎配置”里的應用名稱。如下圖紅色框所示:
2.3 配置應用版本名稱
在打開的原生工程中,點擊工程的targets和點開manifest文件,然后將manifest文件里的“version”字段里的“name”的內容 和原生工程里的Version 的寫成一樣。注意,manifest文件里的“version”字段里的“name” 對應的是HBuilderX打開的工程里的“基礎配置”里的應用版本名稱。
2.4 配置應用版本號
在打開的原生工程中,點擊工程的targets和點開工程里的manifest文件,然后將manifest文件里的“version”字段里的“code”內容和原生工程里的Build寫成一樣。
注意??:manifest文件里“version”字段“code” 對應的是HBuilderX打開的工程里的“基礎配置”里的應用版本號。如下圖紅色框所示:
2.5 配置應用圖標
點擊project->target->General->App Icons and Launch Images->App Icons Source項右側小箭頭。
在新開頁面根據提示將對應尺寸的應用圖標拖入到虛線框中即可。
2.6 配置應用啟動界面
按下圖方法配置Launch Screen File,這樣配置之后啟動界面就會是設置的LaunchScreen.storyboard。
使用官方已經制作好的storyboard,官方提供了2個storyboard,一個是圖標、名稱在上方的;另外一個是圖標、名稱在下方的(這種的LaunchScreen.storyboard主要是適配用戶配置廣告后,使其啟動時不會有視覺上的跳躍感,增加用戶體驗)。
注意??:在使用Launch Screen File方式作為啟動界面時,需要把一張或幾張清晰的圖標拷貝到工程的根文件夾下并引入到工程中,用來給啟動界面加載圖標。如果拷貝過去的圖標不清晰,會導致啟動界面上出現圖標不清晰、模糊的現象。
制作LaunchScreen.storyboard(這個storyboard的名稱是可以自定義的),如果想自定義LaunchScreen.storyboard, 這需要你會原生知識,知道怎樣創建Launch Screen File,知道怎樣在storyboard中布局視圖,設置約束等。
注意??:
這里的storyboard,不是普通的storyboard;
配置了廣告之后,如果自定義的LaunchScreen.storyboard約束沒設置好,會有啟動頁到廣告頁跳躍的視覺效果。
2.7 配置國際化
離線打包時如果彈出提示框且內容為:“HTML5+ Rumtime D”時,需要在打包的原生工程里配置國際化如何配置。
新建一個 .strings文件,叫做InfoPlist.strings(文件名必須是這個)然后點擊右側的 localized, 再在工程導航界面,選擇InfoPlist.strings文件,比如添加key為CFBundleDisplayName,值為應用名字(HBuilder你好),InfoPlist.strings(English)為英文系統,Simplified為中文簡體系統。
另外,對HBuilderX,manifest.json文件里,“模塊權限配置”項中的“iOS隱私信息訪問的許可描述”欄下的隱私權限描述國際化,可以這樣配置,如下:
將manifest.json頁面切換到“模塊權限配置”項,在“iOS隱私信息訪問的許可描述”欄下配置應用需要使用到的隱私描述信息:
輸入完成后切換到代碼視圖,uni-app項目在"app-plus"->“distribute”->“ios”->"privacyDescription"節點下可看到輸入的內容:
將"privacyDescription"節點下的key(NSPhotoLibraryUsageDescription)和值按下圖的方式拷貝到InfoPlist.strings下對應的語言文件里去。
三、打包
以上項目配置工作完成后,就可以開展本地打包了。
3.1 證書導入
導入iOS證書p12到鑰匙串,雙擊p12文件,登錄,導入證書。
編譯設備選擇Generic iOS Device或者Any iOS Device。
注意??:選擇其他模擬器是不能Archive的。
2. Xcode 工具條 Product 下點擊 Archive。
3. 如果彈出下面框,輸入本機密碼,始終允許。
點擊Export。
本地聯調選擇點擊Ad Hoc。
點擊Next。
選擇證書,點擊Next。
最后點擊導出,選擇指定位置即可。
四、如何用離線打包工程制作自定義調試基座
自定義調試基座是使用開發者申請的第三方SDK配置生成的基座應用,用于HBuilder/HBuilderX開發應用時實時在真機/模擬器上查看運行效果。
在打包原生工程里找到 control.xml文件,在HBuilder節點里查看是否有這2個: debug="true" syncDebug="true" 配置(注意-打AppStore包的時候,這個配置需要去掉,否則會導致熱更新失敗!),沒有的話增加上,然后保存。
確保Xcode工程的Bundle identifier不為 io.dcloud.HBuidler。
在原生工程里找到info.plist文件并增加一項,如下圖:
確保原生工程里Pandora文件夾下的apps文件夾里只有一個文件夾(文件夾的名稱和里面的manifest的id值相同);
確保control.xml文件里的appid的值和apps目錄下的第一個文件夾的名稱一致;
確保HBuilderX里要調試的代碼的appid和control.xml的appid值一致;
使用Xcode的Product下的archive 打包,然后生成ipa,并把ipa名稱命名為:iOS_debug.ipa;
在js工程里主目錄下新建一個名稱為unpackage的文件夾(如果有不用新建),再在unpackage文件夾下新建一個名稱為debug文件夾,并把生成的iOS_debug.ipa包放入debug文件夾下。
在HBuilderX里,找到之前appid相同的js工程準備調試,點擊“運行” --“運行到手機或模擬器“--“使用自定義基座運行(iOS)”,等待連接成功之后就可以了。
運行
連接手機,編譯運行,如果App成功跑起來了,說明原生工程配置完成。
注意??:iOS僅支持真機運行自定義基座,不能使用xcode模擬器運行自定義基座!
五、遇到的問題及解決措施
5.1 IOS簽名證書p12無法導入
未復現,待復現后再給出解決方案。
5.2 描述文件不包含當前設備
Xcode本地離線打包,選擇描述文件后,報如下錯誤信息:
Provisioning profile "****" doesn't include the currently selected device "huaqiang的MacBook Air" (identifier 00008103-000964343AD2001E).
被此問題折騰了2天,后來細心閱讀文檔,認真操作后發現是選擇目標編譯設備是默認選擇了Mac設備導致,正確的選項應該是Any iOS Device!
5.3 “HBuilder” requires a provisioning profile. Select a provisioning profile in the Signing & Capabilities editor.
出現以上問題是由于Signing(Release)部分需要導入描述文件。
5.4 ‘PDRCore.h’ file not fond
出現以上問題是由于HBuilderX版本與iOS離線打包SDK版本不一致造成的,一定要確保HBuilderX版本與iOS離線打包SDK版本保持一致。
5.5 請確保自定義基座的iOS證書已添加iOS設備的UDID
出現以上問題的原因是Devices中未添加聯調設備UDID。
解決方案,使用開發者賬號登陸app developer。增加設備的UDID到Devices中。
如何查看設備的uuid【點擊查看】。
增加之后下載新的Provisioning Profiles。
在xcode中導入新的Provisioning Profiles,ok,不報錯了,可以放心的打包了。
介紹一下Provisioning Profiles文件:
Provisioning Profiles,該文件將appID,開發者證書,硬件Device綁定到一塊兒,在開發者中心配置好后可以添加到Xcode上,也可以直接在Xcode上連接開發者中心生成,真機調試時需要在PP文件中添加真機的udid。
六、拓展閱讀
iOS原生工程配置
iOS 離線SDK 升級
極光推送官方SDK
極光JCore官方SDK
極光官網平臺
極光官方demo
《跨平臺應用開發進階(八) :uni-app 實現Android原生APP-云打包集成極光推送(JG-JPUSH)詳細教程》
《跨平臺應用開發進階(九) :uni-app 實現Android原生APP-本地打包集成極光推送(JG-JPUSH)詳細教程》
《跨平臺應用開發進階(十一) :uni-app 實現IOS原生APP-云打包集成極光推送(JG-JPUSH)詳細教程》
《跨平臺應用開發進階(十二) :uni-app 實現應用桌面圖標角標提示及應用跳轉》
Android iOS 移動APP
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。