2016-03-28 8 views
0

Ich habe eine Funktion in iOS-Code, der das Audio vom iPhone aufzeichnet.Verwenden Sie WatchKit Schaltfläche zum Aufzeichnen von iPhone

Jetzt möchte ich mit der Aufnahme beginnen, sobald ich einen Knopf aus der WatchKit App gedrückt habe. Die Aufnahme wird auf dem Handy gemacht, nicht Apple Watch.

Ich verwende den folgenden Code auf WatchKit, um das Signal an das iPhone zu senden, um die Aufnahme zu starten.

[self.session sendMessage:@{"command": "start"} replyHandler:nil errorHandler:nil] 

Und ich habe den folgenden Handler auf iOS-Code.

Sobald ich den Befehl von WatchKit erhalte, rief ich meine Aufnahmefunktion auf iOS-Code.

Es wird erfolgreich ausgeführt. Die Ausgabedatei ist jedoch leer und die Datenlänge ist 0.

Ist es möglich, dies zu tun? Oder muss ich separat von WatchKit aufzeichnen?

Danke.

+0

Vielleicht ist es ein Berechtigungsproblem, bei dem Ihre App nur Audio im Vordergrund aufnehmen kann. watchOS 'sendMessage' bringt die iOS App nicht in den Vordergrund. Zeichnet deine iOS App den Ton im Vordergrund oder im Hintergrund auf? –

+0

@PetahChristian, meine App hat Hintergrundaufnahmen jetzt. Ich kann die rote doppelte Statusleiste sehen, als ich auf WatchKit drückte. Die Datenlänge meiner Datei ist jedoch immer noch Null. Danke ... – moeseth

+0

@PetahChristian, ich konnte es lösen. Es ist, weil ich die Funktion von Hintergrundthread anrufe. Die Verwendung von GCD zum Aufrufen von Haupt-Thread löste es. Vielen Dank. – moeseth

Antwort

0

Die Funktionalität ist ausschließlich ein Nachrichtenübermittlungssystem. Sobald Ihre iPhone-Anwendung die Nachricht erhalten hat, kann die iPhone-Anwendung jeden Code ausführen, den sie normalerweise ausführen kann. Wenn Sie angeben, dass Sie die Nachricht erfolgreich empfangen, liegt das Problem nicht bei dem Code . Beachten Sie jedoch, dass alle von Ihrer App empfangenen Nachrichten seriell an den Sitzungsdelegaten in einem Hintergrundthread gesendet werden. Die obigen Kommentare weisen darauf hin, dass die Erkennung in Ihrem speziellen Anwendungsfall entscheidend dafür war, dass der Prozess, den Sie einleiten wollten, im Hauptthread war.

Kurz gesagt, um die spezifische Frage in Ihrer Frage zu beantworten, ja, können Sie die Aufnahme auf einem iPhone mit einem Knopf auf der Apple Watch beginnen - vorausgesetzt, die iPhone App läuft zum Zeitpunkt der Schaltfläche angetippt ist, als das ist eine Voraussetzung für das Protokoll .

Vor diesem Hintergrund wäre eine offensichtliche Ergänzung, wenn Sie dies nicht bereits haben, in Ihrer WatchKit App Extension nach if (session.reachable) zu suchen und die Schaltfläche zu deaktivieren, wenn dies nicht der Fall ist, sowie Benachrichtigungen für die Erreichbarkeit der Sitzung zu registrieren ändert sich, so dass Sie die Schaltfläche wieder aktivieren können.

Verwandte Themen