2016-12-07 2 views
1

Ich habe eine Cordova App (geschrieben für Android und iOS), die in der Produktion mit einer guten Anzahl von Benutzern funktioniert, einschließlich iOS 10.0 nach der notwendigen Sicherheit zwickt einen Monat oder vor zwei. Jetzt mit den neuesten 10.1-Upgrades, (derzeit testen auf 10.1.1) finde ich, dass Versuche, die Video-Capture-Funktionalität vollständig abstürzt Cordova, ohne eine Option zum Debuggen aus einer JS-Perspektive. Es gibt kein Problem auf der Android-Seite. Dies ist nur mit dem neuesten Update für iOS, und es gab keine Code oder Plugin-Updates oder Änderungen.

Wir verwenden die neuesten cordova-plugin-media-capture Plugin, v1.4.0, mit ngCordova. Anrufe zu diesem Plugin, um ein Foto über $cordovaCapture.captureImage zu machen funktionieren gut in iOS 10.1.1. Es sind nur Anrufe an $cordovaCapture.captureVideo, die Cordova vollständig und sofort zum Absturz bringen. Ich habe Xcode für den Fall angesehen, dass es neue oder unvorhergesehene Einstellungen gibt und alles scheint korrekt zu sein, daher würde ich alle Vorschläge zur Lösung dieses Problems begrüßen.

Früher (ein Monat oder zwei Jahre) haben wir beschlossen, das neue iOS 10 Berechtigungsproblem mit der cordova-Plugin-Einstellungen-Haken Plugin mit diesen iOS-Einstellungen (Snippet gezeigt) in config.xml:

<platform name="ios"> 
    <config-file parent="NSLocationWhenInUseUsageDescription" platform="ios" target="*-Info.plist"> 
     <string>Reason goes here...</string> 
    </config-file> 
    <config-file parent="NSCameraUsageDescription" platform="ios" target="*-Info.plist"> 
     <string>Reason goes here....</string> 
    </config-file> 
    <config-file parent="NSPhotoLibraryUsageDescription" platform="ios" target="*-Info.plist"> 
     <string>Reason goes here...</string> 
    </config-file> 

Ich habe diese Einstellungen mit Xcode bestätigt. Die Parameter, die wir auf den eigentlichen Aufruf passieren in lauten wie folgt:

$cordovaCapture.captureVideo 
({ 
    limit:  1, // how many clips to record (iOS must be 1) 
    duration: 300 // maximum length (in seconds) = 5 minutes 
}) 

der Hoffnung, jemand anderes verwaltet das gleiche Problem zu lösen und ist bereit, die Abhilfe zu teilen.

+0

FYI wurde app ursprünglich Cordova V6.2.0 verwenden. Ich habe auf die neueste v6.4.0 aktualisiert und erneut getestet, bekomme aber das gleiche iOS-Problem. –

+0

Für die zwei Leute, die freundlicherweise vorschlagen, schaue ich mir die Mikrofonberechtigungen an. Ich habe weiter gegraben und das scheint der Grund dafür zu sein, dass es abstürzt (aus dem Absturzbericht.) Irgendetwas muss irgendwo versaut sein, da ich sowohl Ihre config.xml-Einstellungen eingeschlossen habe, als auch den Xcode Gegenwart, aber die App scheint es nicht zu haben. –

+0

Versucht, die Mikrofoneinstellungen in config.xml zu behalten, dann 'cordova clean ios', dann neu aufbauen und laufen. Habe den Trick gemacht, und ich kann jetzt wieder Videos aufnehmen. Das zu Grunde liegende Problem war die Mikrofoneinstellung, aber es gab auch noch etwas anderes im Build-Prozess. –

Antwort

1

Sie vermissen die NSMicrophoneUsageDescription, die benötigt wird, wenn Sie ein Video aufzeichnen.

Die seltsame Sache ist, 1.4.0 Version des Plugins sollte alle UsageDescriptions hinzufügen, sollten Sie nicht die Cordova-Plugin-Einstellungen-Hook, aber aus irgendeinem Grund funktioniert es nicht, wenn Sie das hinzufügen mussten Plugin.

Bei einem sauberen neuen Projekt mit nur dem 1.4.0 Medien-Plugin funktioniert es wie erwartet ohne Absturz.

+0

Danke für den Vorschlag. Sehr geschätzt! Werde das untersuchen und, falls es verrechnet wird, die Antwort akzeptieren. Irgendwie komisch, dass wir die Berechtigungen in 10.0 ansprechen mussten und alles funktionierte. Vielleicht wird diese Berechtigung nur in 10.1 erzwungen. –

+0

Leider wurde das Problem nicht behoben.(Stürzt immer noch ab.) Wird +1, da dies sowieso eine notwendige Erlaubnis ist. –

+0

Follow-up ... Absturzprotokoll (aus dem Xcode-Gerätemenü) zeigte, dass die fehlende Mikrofon-Verwendungs-Zeichenfolge für einen Absturz verantwortlich war, obwohl sie sich im Info-Bereich von Xcode befanden. Die Kombination aus dem Hinzufügen der Mikrofoneinstellung und dem Ausführen eines cordova clean ios-Befehls führte schließlich dazu. Da Sie als erster die Mikrofoneinstellung vorgeschlagen haben und Sie sogar das Wort "sauber" verwendet haben, wird dies als richtige Antwort gewertet. –

1

In iOS 10 Update, Plugin muss hinzugefügt werden zusammen mit Variablen mit Berechtigung Beschreibung zu ihm. Verwenden Sie den folgenden Code in Ihrer config.xml von Cordova-Projekt.

<plugin name="cordova-plugin-media-capture" spec="1.4.0"> 
    <variable name="CAMERA_USAGE_DESCRIPTION" value="To take videos"/> 
    <variable name="MICROPHONE_USAGE_DESCRIPTION" value="To record voice while taking videos"/> 
    <variable name="PHOTO_LIBRARY_USAGE_DESCRIPTION" value="To provide photo browsing."/> 
</plugin> 

Dies würde das Problem lösen.

siehe ios Macken: https://github.com/apache/cordova-plugin-media-capture

+0

Danke für das Teilen. Das machte leider keinen Unterschied. –

+0

Wie Sie an anderer Stelle in diesem Ticket sehen können, hat die Kombination aus Mikrofoneinstellung und einem cordova clean ios Befehl den Zweck erfüllt. jcesarmobile hat zuerst auf die Einstellung des Mikrofons hingewiesen, also wird es dort vergeben, aber das war auch eine nette Antwort, denn jemand, der das Settings-Hook-Plugin, das wir bereits verwenden, nicht verwenden möchte, tat +1. –