如何将 MMWormhole 与 Swift 一起使用?
How do I exactly use MMWormhole with Swift?
我有一个 iPhone 应用程序并添加了一个 WatchKitExtension。我想从 iPhone 应用程序传递一个 String
到 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应用程序中使用Swift和 WatchExtension.
有人可以帮我吗?
我想这取决于不同的应用程序,但对于一个应用程序,我将侦听器放在主 iOS 应用程序中我的应用程序委托的 didFinishLaunchingWithOptions
方法中。这是因为用户会使用手表,他们会将信息转发给 phone
有多个听众...
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")
}
虽然这可以双向工作,但我可以很容易地在我的手表中放置一个侦听器,它会等待 phone 上的某个接口控制器发起的消息。
这是我的指示。希望它们能帮助您处理最简单的用例,然后您可以从那里进行扩展。 (请记住构建您的代码,使其真正有意义!)
- 将 MMWormhole(.h 和 .m)添加到您的项目中。如果你知道如何使用 Cocoapods,那就去做吧,否则,只需使用 git 子模块。 (我使用 git 子模块)
- 因为您需要 .h 从 Swift 可见,所以您需要使用桥接 header。
- 设置应用组,需要使用开发者门户。 Link is here
- 在你的 iPhone build target -> Capabilities -> App Groups 中添加你的组。如果所有三个复选框都没有完美匹配,请返回开发人员门户并确保一切正确或重新开始。
MM虫洞,iPhone边
在你能到达的地方设置虫洞。 注意:您的组 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 必须是上面的那个!
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
}
})
MM虫洞,看app注册接收
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
universe.initWormhole(.watch, messageHandler: { (message) -> () in
println("MMWormhole Message Came to Watch: \(message)")
})
}
MM虫洞,看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")
我有一个 iPhone 应用程序并添加了一个 WatchKitExtension。我想从 iPhone 应用程序传递一个 String
到 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应用程序中使用Swift和 WatchExtension.
有人可以帮我吗?
我想这取决于不同的应用程序,但对于一个应用程序,我将侦听器放在主 iOS 应用程序中我的应用程序委托的 didFinishLaunchingWithOptions
方法中。这是因为用户会使用手表,他们会将信息转发给 phone
有多个听众...
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")
}
虽然这可以双向工作,但我可以很容易地在我的手表中放置一个侦听器,它会等待 phone 上的某个接口控制器发起的消息。
这是我的指示。希望它们能帮助您处理最简单的用例,然后您可以从那里进行扩展。 (请记住构建您的代码,使其真正有意义!)
- 将 MMWormhole(.h 和 .m)添加到您的项目中。如果你知道如何使用 Cocoapods,那就去做吧,否则,只需使用 git 子模块。 (我使用 git 子模块)
- 因为您需要 .h 从 Swift 可见,所以您需要使用桥接 header。
- 设置应用组,需要使用开发者门户。 Link is here
- 在你的 iPhone build target -> Capabilities -> App Groups 中添加你的组。如果所有三个复选框都没有完美匹配,请返回开发人员门户并确保一切正确或重新开始。
MM虫洞,iPhone边
在你能到达的地方设置虫洞。 注意:您的组 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 必须是上面的那个!
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
}
})
MM虫洞,看app注册接收
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
universe.initWormhole(.watch, messageHandler: { (message) -> () in
println("MMWormhole Message Came to Watch: \(message)")
})
}
MM虫洞,看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")