首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Swift中使用MMWormhole?

如何在Swift中使用MMWormhole?
EN

Stack Overflow用户
提问于 2015-04-24 15:45:02
回答 2查看 3.8K关注 0票数 4

我有一个iPhone应用程序,并添加了一个WatchKitExtension。从iPhone应用程序中,我想将一个String传递给WatchApp,它应该改变手表上的图像。

  • 我已经做的是下载源文件并导入MMWormhole.m & .h。它们是用Obj编写的,所以Xcode会自动为我连接它们。
  • 我还为我的WatchExtension &我的iPhone目标添加了一个应用程序组并激活了它

在关于https://github.com/mutualmobile/MMWormhole的教程中,它说我必须用以下方法初始化虫洞:

代码语言:javascript
复制
self.wormhole = [[MMWormhole alloc] initWithApplicationGroupIdentifier:@"group.com.mutualmobile.wormhole"
                                                                          optionalDirectory:@"wormhole"];

...and使用以下方法发送消息:

代码语言:javascript
复制
[self.wormhole passMessageObject:@{@"titleString" : title} 
                         identifier:@"messageIdentifier"];

但是实际上我不知道该把它放在哪里,我正在使用Swift在我的iPhone应用程序 WatchExtension中。

有人能帮帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-24 16:14:38

我想这取决于不同的应用程序,但是对于一个应用程序,我将侦听器放在我的应用程序委托的didFinishLaunchingWithOptions方法中,在主iOS应用程序中。这是因为用户会使用手表,他们会把信息传送到电话上。

有很多听众..。

代码语言:javascript
复制
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方法中。这真的取决于你的应用程序的流量。

代码语言:javascript
复制
var wormhole = MMWormhole(applicationGroupIdentifier: "group", optionalDirectory: nil)
    @IBAction func buttonPushed(){            
        wormhole.passMessageObject("object", identifier: "identifier1")
    }

不过,这两种方式都可以工作,我可以很容易地将一个侦听器放在我的手表中,等待某个接口控制器在电话上发起的消息。

票数 5
EN

Stack Overflow用户

发布于 2015-05-20 20:14:51

这是我的指示。希望它们能帮助您使用最简单的用例,然后您就可以从那里扩展。(请记住构造代码以使代码具有实际意义!)

  • 将MMWormhole ( .h和.m)添加到项目中。如果您知道如何使用Cocoapods,请这样做,否则,只需使用git子模块即可。(我使用git子模块)
  • 因为您需要从Swift中看到.h,所以需要使用桥接头。
  • 设置App,这需要使用Developer。链接在这里
  • 在iPhone中构建目标->功能,->应用程序组并添加组。如果所有三个复选框都不完美,请返回到Developer,确保一切正常或重新启动。

MMWormhole,iPhone Side

把虫洞放在你能到达的地方。注意:您的组ID必须是从上面的!

代码语言:javascript
复制
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应用程序发送字符串

代码语言:javascript
复制
wormhole.passMessageObject("message from phone to watch", identifier: "wormholeMessageFromPhone")

iPhone应用程序通过MMWormhole (异步但很酷)注册接收并再次发送回调。

代码语言:javascript
复制
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必须是从上面的!

代码语言:javascript
复制
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,查看应用程序注册以接收

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

MMWormhole,手表应用程序发送

代码语言:javascript
复制
// 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")
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29851903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档