2017-06-08 3 views
0

In meinem Viewcontroller, ich habe eine varible für eine AVAudioPlayerPass Variable von iOS watchOS

var audioPlayer = AVAudioPlayer() 

ich diesen varible in meiner watchKit App Acess wollen, so dass ich die AVAudioPlayer von der watchKit App abspielen und anhalten kann . Wie

audioPlayer.play() 
audioPlayer.pause() 

Wie kann ich diese Variable aus meiner WatchKit App zugreifen? Danke für die Hilfe! Ich verwende Swift 3 und Xcode 8.

Antwort

1

Seit watchOS 2 können Sie AppGroups nicht verwenden, um Daten direkt zwischen Ihrer iOS App und der WatchKit App freizugeben.

Die einzige Möglichkeit, zwischen den beiden zu kommunizieren, ist das WatchConnectivity Framework. Mit WatchConnectivity können Sie der iOS-App signalisieren, dass Instant Messaging zum Starten/Stoppen der Wiedergabe verwendet wird. Auf iOS-Geräten in Ihrem AppDelegate so etwas wie dies umzusetzen:

func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) { 
     if let content = message["play"] as? [String:Any] { 
      audioPlayer.play() 
      replyHandler(["startedPlaying":true]) 
     } else if let content = message["pause"] as? [String:Any] { 
      audioPlayer.pause() 
      replyHandler(["pausedMusic":true]) 
     } 
} 

Und in Merk App benötigen Sie Nachrichten mit dem Inhalt in Ihrem AppDelegate des session(_:didReceiveMessage:replyHandler:) angegeben zu senden. Wenn Sie keine Antwort an die Watch-App senden müssen, können Sie einfach session(_:didReceiveMessage:) verwenden und den replyHandler-Teil loswerden.