簡體   English   中英

由於'_alwaysRunsAtForegroundPriority',iOS 12.2上的離子應用程序崩潰

[英]Ionic app crashes on iOS 12.2 because of '_alwaysRunsAtForegroundPriority'

在iOS 12.2上,我的應用程序在啟動后終止,在xcode中顯示此消息:

由於未捕獲的異常'NSUnknownKeyException'而終止應用程序,原因:'[setValue:forUndefinedKey:]:此類不是鍵_alwaysRunsAtForegroundPriority的鍵值編碼兼容。

誰能指出我正確的方向? 我看到之前有一些警告:

如何解決應用驗證“該應用引用了Payload / MyApp.app / MyApp中的非公共選擇器:_setAlwaysRunsAtForegroundPriority:”?

該帖子的答案是,它是webview的安全警告,可以忽略。 但是當它崩潰我的應用程序時,它不能再被忽略了:)

在此先感謝您的幫助。

拉爾斯

更新2019年2月2日:看起來它是導致錯誤的cordova-plugin-background-mode。 但我必須承認,我不知道如何解決這個問題。 當我從我的項目中刪除該插件時,它的工作原理。 但我需要這個插件,或者至少是后台模式功能,所以我需要以某種方式解決這個問題。

更新2019年2月5日: @coderroggie:我還有cordova-plugin-ionic-webview插件的2.3.2版本。 奇怪的是,它僅在刪除cordova-plugin-background-mode(版本0.7.2)時適用於我

我會發布我的離子信息,如果它可以為您提供任何有用的信息。

離子型:

離子(離子CLI):4.9.0(/ usr / local / lib / node_modules / ionic)
離子框架:離子角3.9.2 @ ionic / app-scripts:3.2.1

科爾多瓦:

cordova(Cordova CLI):8.1.2(cordova-lib@8.1.1)Cordova平台:ios 4.5.5 Cordova插件:cordova-plugin-ionic 5.2.9,cordova-plugin-ionic-keyboard 2.1.3,cordova- plugin-ionic-webview 2.3.2,(和其他22個插件)

系統:

ios-deploy:1.9.2 NodeJS:v8.11.1(/ usr / local / bin / node)
npm:6.4.1 OS:macOS Mojave Xcode:Xcode 10.1 Build版本10B61

2月2日更新(再次)

我的插件:

cordova-android-firebase-gradle-release 1.0.2“cordova-android-firebase-gradle-release”
cordova-android-play-services-gradle-release 1.4.3“cordova-android-play-services-gradle-release”
cordova-android-support-gradle-release 1.4.4“cordova-android-support-gradle-release”
cordova-plugin-app-version 0.1.9“AppVersion”
cordova-plugin-background-mode 0.7.2“BackgroundMode”
cordova-plugin-badge 0.8.7“徽章”
cordova-plugin-camera 4.0.3“相機”
cordova-plugin-console 1.1.0“控制台”
cordova-plugin-customurlscheme 4.3.0“自定義URL方案”
cordova-plugin-device 2.0.2“設備”
cordova-plugin-file 6.0.1“文件”
cordova-plugin-file-transfer 1.7.1“文件傳輸”
cordova-plugin-geolocation 4.0.1“Geolocation”
cordova-plugin-ionic 5.2.9“cordova-plugin-ionic”
cordova-plugin-ionic-keyboard 2.1.3“cordova-plugin-ionic-keyboard”
cordova-plugin-ionic-webview 2.3.2“cordova-plugin-ionic-webview”
cordova-plugin-local-notification 0.9.0-beta.2“LocalNotification”
cordova-plugin-mauron85-background-geolocation 3.0.0-alpha.49“CDVBackgroundGeolocation”
cordova-plugin-network-information 2.0.1“網絡信息”
cordova-plugin-safariviewcontroller 1.5.4“SafariViewController”
cordova-plugin-splashscreen 5.0.2“Splashscreen”
cordova-plugin-vibration 3.1.0“振動”
cordova-plugin-whitelist 1.3.3“白名單”
cordova-support-google-services 1.1.0“cordova-support-google-services”
cordova.plugins.diagnostic 4.0.7“診斷”
ionic-plugin-keyboard 2.2.1“鍵盤”
phonegap-plugin-push 2.1.3“PushPlugin”

在插件中,底部有一個'setValue'來核實應用程序。 得到了12.2的版本。 嘗試

ionic cordova plugin add https://github.com/iowayankee/cordova-plugin-background-mode.git

的package.json

    "cordova-plugin-background-mode": "git+https://github.com/iowayankee/cordova-plugin-background-mode.git",

config.xml中

    <plugin name="cordova-plugin-background-mode" spec="git+https://github.com/iowayankee/cordova-plugin-background-mode.git" />

希望能幫助某人至少完成構建

嘗試這個。 在本地文件夾中下載插件cordova-plugin-background-modecordova-plugin-better-background-mode ,將其作為本地插件附加到項目中。 轉到插件文件src \\ ios \\ APPBackgroundMode.m並替換以下行

+ (NSString*) wkProperty
{
    NSString* str = @"X2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eQ==";
    NSData* data  = [[NSData alloc] initWithBase64EncodedString:str options:0];

    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

+ (NSString*) wkProperty
{
    NSString* str = @"YWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5";
    NSData* data  = [[NSData alloc] initWithBase64EncodedString:str options:0];

    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

要查找您使用的哪個插件導致錯誤運行:

cd %HOME%/src/myProject    
grep -r "_alwaysRunsAtForegroundPriority" node_modules

找到后,查找解決問題的升級或用備用插件替換它。

在我們的例子中,插件是WKWebView。 在谷歌上快速搜索發現他們有錯誤並修復它 我們升級了插件,它運行順暢。

我的離子3應用程序在iOS beta 12.2啟動時遇到了類似的問題。 我也有最新版本的cordova-plugin-background-mode。

我通過升級到cordova-plugin-ionic-webview插件的2.3.2版修復了我的問題。

試試吧。 如果它沒有修復它,請發布您的插件和版本,以便我可以比較。

2019年2月5日更新
我搞砸了早些時候回答。 我目前使用cordova-plugin-better-background-mode@0.7.5這是一個叉cordova-plugin-background-mode@0.7.2

嘗試切換到那個。 如果這不起作用,我會發布我們可能有的其他差異。

我認為你的基本問題是你在WKWebView中運行,不允許在后台可靠地運行。 我面臨着類似的問題,我擔心我能提出的最好的短期解決方案是使用UIWebView。 UIWebView不是一個好的長期解決方案,因為它現在被標記為已棄用。 看起來你還沒有使用Ionic 4,這在這種情況下確實很好。 我想你可以刪除2個離子插件,使用cordova@6.5.0和cordova引擎ios 4.5.4。 希望,當在Xcode中運行時,一切都會正常工作,你會看到一條關於“使用UIWebView”的消息。 這個問題是我發現WKWebView不會在后台運行的證據的一部分: https //issues.apache.org/jira/browse/CB-10657 https://issues.apache.org/ JIRA /瀏覽/ CB-11561

這對我有幫助:“部署信息主界面必須為空”來源: https//forum.ionicframework.com/t/app-crashes-when-i-try-to-open-in-it-on-tesflight-on -a-iphone /3分之21005

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM