問題描述:
ionic項目,windows下正常,打包android可正常運行;
因為需要打包到iPhone (ios 11.0.1)上測試,將代碼拿到Mac OS環境下(重新npm install、platform add ios等)測試的時候,
build ios正常、ionic serve正常,但是打包運行到iPhone上的時候,出現應用crash閃退的問題。
打開XCode連接設備,調試發現具體的錯誤信息如下:
工程本身編譯是沒有問題的,可以編譯成功:
問題排查:
開始懷疑是項目代碼的問題,或者使用了不支持ios的插件,但是逐一排查后問題並沒有消除;
后來懷疑是ionic工程本身的原因,於是重新創建ionic工程,在不添加plugins之前,一切OK;
但是在添加完我需要的Background Mode和Local Notifications之后,問題就出現了。
所以,問題可以定位到Background Mode或者是Local Notifications身上了。
中間排查過程不贅述,直接介紹如何解決。
解決辦法:
問題是由於Background Mode插件在ios下的一個bug所致:
在IOS升級到11版本之后,KeyName由_requiresUserActionForMediaPlayback變更成requiresUserActionForMediaPlayback。
修改辦法如下:
按圖所示修改插件代碼,並保存。
注意保存的時候,因為文件權限的問題,需要使用iTerm修改一下文件夾權限,如圖:
重新編譯,安裝到手機,問題解決,應用可以正常運行:
並且可以正常測試消息推送: