4

iPhone アプリケーションがあり、WatchKitExtension を追加しました。StringiPhone アプリから、Watch の画像を変更することになっている WatchAppに渡したいと思います。

  • 私がすでに行ったことは、ソースファイルをダウンロードしてMMWormhole.m&をインポートすること.hでした。これらは Obj-C で記述されているため、Xcodeによって自動的にブリッジされました。
  • また、アプリ グループを追加し、WatchExtension と iPhone ターゲットに対して有効にしました

GitHubのチュートリアルでは、次のようにワームホールを初期化する必要があると書かれています。

self.wormhole = [[MMWormhole alloc] initWithApplicationGroupIdentifier:@"group.com.mutualmobile.wormhole"
                                                                          optionalDirectory:@"wormhole"];

...そして、次を使用してメッセージを送信します。

[self.wormhole passMessageObject:@{@"titleString" : title} 
                         identifier:@"messageIdentifier"];

しかし、実際にはそれをどこに置くべきかわかりません。iPhoneアプリケーションWatchExtensionでSwiftを使用しています。

誰でも私を助けてもらえますか?

4

2 に答える 2

5

これが私の指示です。うまくいけば、それらが最も単純なユースケースであなたを助け、そこから拡張することができます. (実際に意味をなすようにコードを構成することを忘れないでください!)

  • MMWormhole (.h および .m) をプロジェクトに追加します。Cocoapods の使用方法を知っている場合はそれを行いますが、それ以外の場合は git サブモジュールを使用してください。(私は git submmodules を使用しています)
  • .h が Swift から見えるようにする必要があるため、ブリッジング ヘッダーを使用する必要があります。
  • 開発者ポータルを使用する必要があるアプリ グループを設定します。リンクはこちら
  • iPhone のビルド ターゲット -> 機能 -> アプリ グループで、グループを追加します。3 つのチェックボックスすべてが完全に機能しない場合は、開発者ポータルに戻り、すべてが正しいことを確認するか、最初からやり直してください。

MMWormhole、iPhone 側

到達できる場所にワームホールを設置します。注:グループ ID は上記の ID でなければなりません!

let wormhole = MMWormhole(applicationGroupIdentifier: "group.testMe.now", optionalDirectory: nil)
wormhole.listenForMessageWithIdentifier("wormholeMessageFromWatch", listener: { (message ) -> Void in
    if let messageFromWatch = message as? String {
          // do something with messageFromWatch
    }
})

iPhone アプリが文字列を送信

wormhole.passMessageObject("message from phone to watch", identifier: "wormholeMessageFromPhone")

iPhone アプリは、MMWormhole を介してコールバックで受信および再送信するように登録します (非同期ですがクールです)。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    universe.initWormhole(.phone, messageHandler: { (message) -> () in
        universe.wormhole.passMessageObject("the phone got \(message)", identifier: "wormholeMessageFromPhone")
    })
    return true
}

MMWormhole、Apple Watch 側

到達できる場所にワームホールを設置します。注:グループ ID は上記の ID でなければなりません!

let wormhole = MMWormhole(applicationGroupIdentifier: "group.testMe.now", optionalDirectory: nil)
wormhole.listenForMessageWithIdentifier("wormholeMessageFromPhone", listener: { (message ) -> Void in
    if let messageFromPhone = message as? String {
          // do something with messageFromPhone
    }
})

MMWormhole、時計アプリが登録して受け取る

override func awakeWithContext(context: AnyObject?) {
    super.awakeWithContext(context)
    universe.initWormhole(.watch, messageHandler: { (message) -> () in
        println("MMWormhole Message Came to Watch: \(message)")
    })
}

MMWormhole、アプリの送信を見る

// force open the parent application because otherwise the message goes nowhere until the app is opened
WKInterfaceController.openParentApplication(["":""], reply: nil) 
universe.wormhole.passMessageObject("[from watch to phone]", identifier: "wormholeMessageFromWatch")
于 2015-05-20T20:14:51.550 に答える