我有一个iPhone应用程序并添加了WatchKitExtension。在iPhone应用程序中,我想将String
传递给WatchApp,后者应该更改手表上的图像。
MMWormhole.m
& .h
。它们是用Obj-C编写的,所以Xcode 会自动为它们桥接在 GitHub 的教程中,它说我必须用以下内容初始化虫洞:
self.wormhole = [[MMWormhole alloc] initWithApplicationGroupIdentifier:@"group.com.mutualmobile.wormhole"
optionalDirectory:@"wormhole"];
...并使用以下方式发送消息:
[self.wormhole passMessageObject:@{@"titleString" : title}
identifier:@"messageIdentifier"];
但是我实际上不知道该把它放在哪里,我在我的iPhone应用程序和 WatchExtension中使用Swift。
有人可以帮助我吗?
答案 0 :(得分:5)
我认为这取决于不同的应用程序,但是对于一个应用程序,我将监听器放在我的app appate的didFinishLaunchingWithOptions
方法中。这是因为用户将使用手表,他们会将信息转发到手机
有多个听众......
var wormhole = MMWormhole(applicationGroupIdentifier: "group", optionalDirectory: nil)
wormhole.listenForMessageWithIdentifier("identifier", listener: { (message) -> Void in
//do stuff
})
wormhole.listenForMessageWithIdentifier("identifier2", listener: { (message) -> Void in
//do stuff
})
wormhole.listenForMessageWithIdentifier("identifier3", listener: { (message) -> Void in
//do stuff
})
然后在WKInterfaceController
中,我发了一条消息。有时在动作中,有时在willActivate
方法中。这真的取决于你的应用程序的流程
var wormhole = MMWormhole(applicationGroupIdentifier: "group", optionalDirectory: nil)
@IBAction func buttonPushed(){
wormhole.passMessageObject("object", identifier: "identifier1")
}
这可以兼顾两种方式,我可以很容易地在我的手表中放置一个监听器,它会等待手机上某个接口控制器发出的消息。
答案 1 :(得分:3)
以下是我的指示。希望他们能帮助您使用最简单的用例,然后您可以从那里扩展。 (请记住构建代码以使其真正有意义!)
MMWormhole,iPhone Side
将虫洞设置在可以到达的地方。 注意:您的论坛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 App发送字符串
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 Side
将虫洞设置在可以到达的地方。 注意:您的论坛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,观看app注册接收
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
universe.initWormhole(.watch, messageHandler: { (message) -> () in
println("MMWormhole Message Came to Watch: \(message)")
})
}
MMWormhole,观看app发送
// 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")