web-dev-qa-db-fra.com

Ionic se bloque sur iOS 12.2 à cause de '_alwaysRunsAtForegroundPriority'

Sur iOS 12.2, mon application se termine juste après le démarrage, avec ce message dans xcode:

Arrêt de l'application en raison d'une exception non interceptée 'NSUnknownKeyException', raison: '[setValue: forUndefinedKey:]: cette classe n'est pas conforme au codage des valeurs de clé pour la clé _alwaysRunsAtForegroundPriority.'

Quelqu'un qui peut me diriger dans la bonne direction pour celui-ci? Je vois qu'il y a eu quelques avertissements à ce sujet plus tôt:

Comment résoudre la validation de l'application "L'application fait référence aux sélecteurs non publics dans Payload/MyApp.app/MyApp: _setAlwaysRunsAtForegroundPriority:"?

La réponse à ce message est que c'est un avertissement de sécurité de la vue Web qui peut être ignoré. Mais quand ça plante mon application, on ne peut plus vraiment l'ignorer :)

Merci d'avance pour votre aide.

Lars

Mise à jour du 2 février 2019: Il semble que ce soit le mode cordova-plugin-background-mode qui cause l'erreur. Mais je dois admettre que je n'ai aucune idée de comment résoudre ce problème. Cela fonctionne lorsque je supprime ce plugin de mon projet. Mais j'ai besoin de ce plugin, ou du moins de la fonctionnalité en mode arrière-plan, donc je dois y remédier, d'une manière ou d'une autre.

Mise à jour du 5 février 2019: @coderroggie: J'ai également la version 2.3.2 du plugin cordova-plugin-ionic-webview. C'est étrange que cela ne fonctionne pour moi que lors de la suppression du mode cordova-plugin-background-mode (version 0.7.2)

Je publierai mes informations ionic, si cela peut vous fournir des informations utiles.

Ionique:

ionique (Ionic CLI): 4.9.0 (/ usr/local/lib/node_modules/ionic)
Cadre ionique: ionique-angulaire 3.9.2 @ ionic/app-scripts: 3.2.1

Cordoue:

cordova (Cordova CLI): 8.1.2 ([email protected]) Plateformes Cordova: ios 4.5.5 Plugins Cordova: cordova-plugin-ionic 5.2.9, cordova-plugin-ionic-keyboard 2.1.3, cordova- plugin-ionic-webview 2.3.2, (et 22 autres plugins)

Système:

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 version 10B61

Mettre à jour le 2 février (à nouveau)

Mes plugins:

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 "Badge"
cordova-plugin-camera 4.0.3 "Caméra"
cordova-plugin-console 1.1.0 "Console"
cordova-plugin-customurlscheme 4.3.0 "Schéma d'URL personnalisé"
cordova-plugin-device 2.0.2 "Appareil"
cordova-plugin-file 6.0.1 "Fichier"
cordova-plugin-file-transfer 1.7.1 "Transfert de fichiers"
cordova-plugin-geolocation 4.0.1 "Géolocalisation"
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 "Informations réseau"
cordova-plugin-safariviewcontroller 1.5.4 "SafariViewController"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-vibration 3.1.0 "Vibration"
cordova-plugin-whitelist 1.3.3 "Liste blanche"
cordova-support-google-services 1.1.0 "cordova-support-google-services"
cordova.plugins.diagnostic 4.0.7 "Diagnostic"
clavier-plug-in ionique 2.2.1 "Clavier"
phonegap-plugin-Push 2.1.3 "PushPlugin"

6
larschla

J'ai eu un problème similaire avec notre application ionic 3 qui plantait au démarrage avec iOS beta 12.2. J'ai également la dernière version de cordova-plugin-background-mode.

J'ai résolu mon problème en passant à version 2.3.2 du plug-in cordova-plugin-ionic-webview.

Essayez ça. Si cela ne résout pas le problème, veuillez publier vos plugins et versions afin que je puisse comparer.

Mise à jour du 5 février 2019
J'ai foiré en répondant plus tôt. J'utilise actuellement [email protected] qui est un fork de [email protected].

Essayez de passer à celui-là. Si cela ne fonctionne pas, je publierai le reste des différences que nous pourrions avoir.

2
coderroggie

Pour trouver lequel des plugins que vous utilisez est à l'origine de l'exécution de l'erreur:

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

Une fois que vous l'avez trouvé, recherchez une mise à niveau qui résout le problème ou remplacez-la par un autre plugin.

Dans notre cas, le plugin était WKWebView. Une recherche rapide sur Google a trouvé ils ont eu une erreur et l'ont corrigée . Nous avons mis à jour le plugin et cela a fonctionné sans problème.

1
mikelin

Je pense que votre problème de base est que vous exécutez dans un WKWebView, qui n'est pas autorisé à fonctionner en arrière-plan de manière fiable. Je suis confronté à un problème similaire et je crains que la meilleure solution à court terme que je puisse trouver était d'utiliser UIWebView. UIWebView n'est pas une bonne solution à long terme car il est marqué comme obsolète maintenant. Il semble que vous n'utilisez pas encore Ionic 4 pour le moment, ce qui est vraiment bien dans ce cas. Je pense que vous pouvez supprimer les 2 ionic plugins, utilisez cordova @ 6.5.0 et cordova engine ios 4.5.4. Si tout va bien, lorsque vous exécutez dans Xcode, tout fonctionnera et vous verrez un message vers le début sur "Utiliser UIWebView". Ce problème fait partie des preuves que j'ai a constaté que WKWebView ne devrait pas fonctionner en arrière-plan: https://issues.Apache.org/jira/browse/CB-10657https://issues.Apache.org/jira/Parcourir/CB-11561

0
Chris J