web-dev-qa-db-ja.com

Ionic iOS 12.2で「_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)を削除した場合にのみ機能するのは奇妙です

私のionic情報を投稿します。役立つ情報を提供できる場合。

イオン:

ionic(Ionic CLI):4.9.0(/ usr/local/lib/node_modules/ionic)
Ionic Framework:ionic-angular 3.9.2 @ ionic/app-scripts:3.2.1

コルドバ:

cordova(Cordova CLI):8.1.2([email protected])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ビルドバージョン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 "ジオロケーション"
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 "スプラッシュスクリーン"
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"

6
larschla

IOSベータ12.2で起動時にionic 3アプリがクラッシュするという問題がありましたが、cordova-plugin-background-modeの最新リリースも持っています。

Cordova-plugin-ionic-webviewプラグインの バージョン2.3.2 にアップグレードして問題を修正しました。

やってみて。それでも問題が解決しない場合は、比較できるようにプラグインとバージョンを投稿してください。

2019年2月5日更新
以前に答えを台無しにしました。私は現在 [email protected] を使用しています。これは[email protected]のフォークです。

それに切り替えてみてください。それがうまくいかない場合は、残りの違いを投稿します。

2
coderroggie

使用しているプラ​​グインのうち、エラーの原因となっているものを見つけるには、次のコマンドを実行します。

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

見つかったら、問題を解決するアップグレードを探すか、別のプラグインに置き換えます。

私たちの場合、プラグインはWKWebViewでした。グーグルでクイック検索が見つかりました 彼らはエラーがあり、修正しました 。プラグインをアップグレードし、スムーズに動作しました。

1
mikelin

あなたの基本的な問題は、バックグラウンドで確実に実行することが許可されていないWKWebViewで実行していることだと思います。私は同様の問題に直面しており、私が思いつくことができる最良の短期的な解決策はUIWebViewを使用することでした。 UIWebViewは非推奨としてマークされているため、長期的な解決策としては適していません。 Ionic 4をまだ使用していないようです。これはこの場合は本当に良いことです。2ionicプラグインを削除して、cordovaを使用できます。 @ 6.5.0とcordova engine ios 4.5.4。うまくいけば、Xcodeで実行すると、すべてが機能し、最初に「UIWebViewの使用」に関するメッセージが表示されます。この問題は、私が確認した証拠の一部ですWKWebViewがバックグラウンドで動作することが期待されていないことがわかりました: https://issues.Apache.org/jira/browse/CB-10657https://issues.Apache.org/jira/browse/CB-11561

0
Chris J