J'ai une application iOS avec une extension Aujourd'hui. Nous sommes en test (TestFlight) en ce moment, et avons testé sur une dizaine d'appareils. Le widget associé s'affiche correctement sur tous ces périphériques, sauf un. Sur un appareil, le Widget affiche le message redoutable "Impossible de charger". Nous avons essayé de redémarrer l'appareil, la suppression/réinstallation de l'application, etc.Aujourd'hui Extension "Impossible de charger" sur des périphériques limités
En regardant le journal de l'appareil, j'ai vu cela comme la première référence gênante:
container: WGMajorListViewController> Unable to load widget view controller with service (com.mycompany.MyApp.myApp-Today-Extension): Couldn\M-b\M^@\M^Yt communicate with a helper application.
container: WGMajorListViewController> No longer waiting on connection semaphore (<OS_dispatch_semaphore: 0x174c85410>)
container: WGMajorListViewController> Severed remote view controller connection
container: WGMajorListViewController> Widget disconnected unexpectedly
container: WGMajorListViewController> Aborting active life cycle sequence: <WGWidgetLifeCycleSequence: 0x175035460; sequenceID: com.mycompany.MyApp.myApp-Today-Extension.WGMajorListViewController.7/11/17, 3:13:00 PM; currentState: WGWidgetLifeCycleSequenceStateDidRequestRemoteView>
container: WGMajorListViewController> Remote view controller disconnected unexpectedly
container: WGMajorListViewController> Attempting to reconnect to remote view controller
code de l'extension ne fait aucune tentative pour ouvrir l'application hôte, donc l'erreur m'a étonné. Peut-être cela fait référence à une application d'aide interne (iOS)?
Les caractères d'échappement impair de cette première ligne figurent dans le journal. Après ces lignes, il essaie à nouveau, peut-être deux fois de plus, puis échoue. Finalement, je vois Can't request remote view controller that is blacklisted
et l'appareil ne pas essayer à nouveau jusqu'à ce que le redémarrage:
mediaserverd(CoreMedia)[27] <Notice>: -CMSessionMgr- cmsmHandleApplicationStateChange: CMSession: Client com.mycompany.MyApp.myApp-Today-Extension with pid '257' is now Terminated. Background entitlement: NO
mediaserverd(CoreMedia)[27] <Notice>: -CMSessionMgr- cmsmHandleApplicationStateChange: CMSession: Client com.mycompany.MyApp.myApp-Today-Extension with pid '259' is now Terminated. Background entitlement: NO
symptomsd(SymptomEvaluator)[121] <Notice>: 257 com.mycompany.MyApp.myApp-Today-Extension: Terminated (most elevated: Terminated)
symptomsd(SymptomEvaluator)[121] <Notice>: 259 com.mycompany.MyApp.myApp-Today-Extension: Terminated (most elevated: Terminated)
symptomsd(SymptomEvaluator)[121] <Notice>: Entry, display name com.mycompany.MyApp.myApp-Today-Extension uuid (null) pid 257 isFront 0
symptomsd(SymptomEvaluator)[121] <Notice>: Duplicate removal of display name com.mycompany.MyApp.myApp-Today-Extension
symptomsd(SymptomEvaluator)[121] <Notice>: Entry, display name com.mycompany.MyApp.myApp-Today-Extension uuid (null) pid 259 isFront 0
symptomsd(SymptomEvaluator)[121] <Notice>: Duplicate removal of display name com.mycompany.MyApp.myApp-Today-Extension
container: WGMajorListViewController> End sequence '(null)' with reason: disappearance transition
container: WGMajorListViewController> Can't end sequence as argument sequence ((null)) doesn't match active sequence ((null)), or there's no active sequence
container: WGMajorListViewController> Begin sequence with reason: appearance transition
container: WGMajorListViewController> Initiating new life cycle sequence: '<WGWidgetLifeCycleSequence: 0x17522b6e0; sequenceID: com.mycompany.MyApp.myApp-Today-Extension.WGMajorListViewController.7/11/17, 3:13:12 PM; currentState: WGWidgetLifeCycleSequenceStateQuiescent>'
container: WGMajorListViewController> Connection requested with reason: 'appearance transition'
container: WGMajorListViewController> Will request remote view controller
container: WGMajorListViewController> Can't request remote view controller that is blacklisted
Je ne vois aucune exploitation forestière à partir du code d'extension lui-même, ni aucun signe qu'il est en fait le lancement.
L'appareil en question est un iPhone 7 Plus, exécutant la version publique d'iOS 10.3.2. Le widget fonctionne bien sur tous les autres périphériques, dont beaucoup sont également 10.3.2. Aucun des autres n'est l'iPhone 7 Plus. Le widget fonctionne très bien dans le simulateur iPhone 7 Plus.
Le même périphérique exécute la version App Store du widget, bien que cette version soit construite avec iOS 9 avec Xcode 7. La nouvelle version utilise 10.3 comme base SDK, en utilisant Xcode 8.3.3.
Des pensées?
J'ai trouvé un autre iPhone 7 Plus (iOS 10) et un iPhone 6 Plus (iOS 11 dev seed) - tous les deux ont connu le même problème. Plusieurs iPhones «plus petits» (6 etc.) exécutent bien le Widget. L'iPhone 7 Plus Simulator fonctionne également très bien. –
J'aurais dû ajouter: Lorsque vous connectez le Xcode sur un appareil défaillant, le code ne s'exécute jamais. J'ai mis un point d'arrêt sur la première ligne de viewDidLoad du ViewController de Today Extension, et il ne frappe jamais. La seule note dans la console de Xcode est '' '' Le programme s'est terminé avec le code de sortie: 0'''''. –
J'ai également reçu l'erreur "Impossible de demander le contrôleur de vue à distance qui est sur liste noire" sur un iPhone 6s (et en utilisant PaintCode) et cela m'a aidé à installer une autre version de mon application via TestFlight. Erreur. Cependant, cette fois, cela a fonctionné sans l'erreur. Je ne sais pas ce qui l'a causé, mais peut-être que cette information aide à comprendre le vrai problème à l'avenir. – Dominique