- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试将信息从我的 WatchKit 应用程序发送到我的主要父应用程序,据我所知,我应该只能使用 openParentApplication
在我的 watchkit 扩展中,handleWatchKitExtensionRequest
会收到它在 AppDelegate.swift 中,但我似乎无法获得 handleWatchKitExtensionRequest
被触发。
我一直遇到一些问题,所以在这一点上,我只是在担心实际传递的信息之前尝试建立任何连接。所以目前在我的 Watchkit ViewController 中我有以下内容:
let testDict = [
"value1" : "Test 1",
"value2" : "Test 2"
]
@IBAction func saveButtonFunction() {
openParentAppForBalance(testDict)
}
private func openParentAppForInfo(Dict: [String: String]) {
WKInterfaceController.openParentApplication(testDict,
reply: {(reply, error) -> Void in
println("openParentApplication called in button function")
})
}
在输出中显示函数正在被调用,但是 handleWatchKitExtensionRequest
只是不会回应。目前它在 AppDelegate.swift 中设置为以下永远不会被调用的内容:
func application(application: UIApplication!, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]!, reply: (([NSObject : AnyObject]!) -> Void)!) {
println("we made it!")
var retValues = Dictionary<String,String>()
retValues["retval1"] = "return Test 1"
retValues["retval1"] = "return Test 2"
reply(retValues)
}
我敢肯定,在我对这一切如何运作的理解中,我可能只是遗漏了一些真正基础的东西,但是关于如何获得 handleWatchKitExtensionRequest
的任何帮助被触发将不胜感激!
最佳答案
啊,我认为这里发生的事情是你的代码是正确的,并且完全按照它应该的方式工作,你在这里解释的是两个完全可以理解的假设重叠的结果,实际上是不正确的并一直把你引入歧途。好消息是,您的代码已经可以正常工作了。
你说,
...which shows in the output that the function is being called...
如果您的意思是您在控制台中看到消息,openParentApplication called in button function
,那么这就是正在发生的事情:
这部分代码是 Swift 闭包:
{(reply, error) -> Void in
println("openParentApplication called in button function")
}
当您的 WatchKit Extension 调用 WKInterfaceController.openParentApplication
时,它会向您的父 iPhone 应用程序传递一个字典(您的 testDict
),iPhone 应用程序可以使用它向您返回数据——前提是数据已经序列化。它还会返回给您传递给它的闭包。这使您的 WatchKit 扩展能够在稍后收到回复时运行它自己定义的代码。您可以在此闭包中使用 testDict
中返回的数据以及调用 openParentApplication
时可在本地访问的其他变量。您的 WatchKit Extension 在收到返回时自动执行闭包中的代码。
因此,当您看到 openParentApplication 在按钮函数中调用
时,这表明已收到来自 iPhone 应用程序的回复,并且已执行闭包。因此,您的 WatchKit 测试代码应该真正将 println 语句更改为:
WKInterfaceController.openParentApplication(testDict,
reply: {(reply, error) -> Void in
println("Reply to openParentApplication received from iPhone app")
})
现在,您完全可以理解的是,您没有意识到代码正在正确执行的原因是因为您期望在控制台中看到拒绝此代码已在您的 iPhone 应用程序中执行:
println("we made it!")
但是,Xcode 不支持同时附加到两个进程。因此,当您附加到您的 WatchKit 应用程序时,您将看不到您的 iPhone 应用程序的任何日志消息。如果不是附加进程,您的 iPhone 应用程序也不会响应断点。无论它是在后台运行(由 openParentApplication
唤醒)还是在前台运行(如果您在 WatchKit 应用程序运行后在模拟器中手动启动它),这两者都是正确的。您可以看到iPhone 应用程序事件的影响,但当您连接到 WatchKit 应用程序时无法直接反省它。
首先,您的代码工作正常。你可以移过去你的测试代码!关于在响应您的 WatchKit 应用程序时反射(reflection) iPhone 端的工作方式,有一个部分解决方案。从模拟器启动 WatchKit 应用程序,一旦它运行,在 Xcode 中激活菜单选项 Debug > Attach to process... 并在 Likely targets 下选择您的 iPhone 应用程序进程> 在顶部。现在您将看到您的 iPhone 应用程序控制台消息,并且您的 iPhone 应用程序将响应断点——但是您当然不会再从 WatchKit 应用程序端看到这些。您继续能够在模拟器中与这两个应用程序进行交互,并且可以在执行期间在您所连接的应用程序之间来回切换。
关于ios - handleWatchKitExtensionRequest 不响应 Watchkit 扩展中的 openParentApplication (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28112445/
我正在尝试创建一个 iOS WatchOS5 复杂功能,并且看到了许多教程和苹果文档。他们谈论: WatchKit 应用 WatchKit 应用扩展 iOS WatchKit 应用程序和 WatchK
我正在 Storyboard 中设置一个菜单和菜单项,并且希望一个菜单项在两种状态之间切换,例如开/关、摄氏度/华氏度等 但是,从菜单项按住控制拖动到界面 Controller 并不能让我创建导出,而
我必须将数据从我的 watchkit 发送到另一个 watchkit。可能吗 ?如果是,那么实现它的方法是什么? 我知道如何通过 [WKInterfaceController openParentAp
我在编译 watchkit 应用程序时遇到此错误 嵌入式二进制验证实用程序错误 error: WatchKit Extension contains multiple WatchKit apps wh
我们有一个分层的 watch 应用程序。 根 Controller 是一个菜单项表。该项目列表由服务器控制。数据被检索并存储在核心数据中。第一次进入应用程序时会填充菜单。 但我希望这张表保持最新。我的
我的应用程序显示各种倒数计时器,用户将查看这些计时器以了解何时执行各种任务。当应用程序位于前台时,我希望此屏幕继续显示在 watch 上。目前,屏幕会自动关闭,如果我不甩手腕,应用程序甚至会暂停。 这
谁能帮我编写一份示例代码,以便在 Apple Watchkit 应用中添加语音到文本转换功能。 最佳答案 是的,这是可能的。这是文档: https://developer.apple.com/libr
关于这个问题有几篇文章,但没有一个建议的解决方案适用于我的情况。我正在尝试按照 Apple 提供的说明将 WatchKit 集成到一个简单的示例应用程序中(我现在已经尝试了几个)。编译时出现以下错误消
昨天我saw this post并让我意识到我有问题。 在商店中有 WatchOS1 应用程序后,我创建了一个 WatchOS2 应用程序。当我尝试运行该应用程序时 made me upgrade m
iOS可以使用layer.cornerRadius打个圆UIButton . 是否WKInterfaceButton有这个属性吗? 如果没有,我怎么才能圆WKInterfaceButton在 Watc
错误信息: This app contains multiple WatchKit 2.0 apps. Only a single WatchKit 2.0 app is allowed. Watch
好吧,这是非常基本的,但我已经一遍又一遍地阅读了文档,并想确保我做对了。用通俗易懂的语言来说,我的 watchkit 应用程序将因退出我的代码外部应用程序的某些用户交互而关闭,对吗?我不需要使用任何类
在具有 WatchKit 扩展和 WatchKit 应用程序 - 目标的 xcode 项目中。如果我重命名目标 - 从例如:“Sample WatchKit App”和“Sample WatchKit
如果我将界面 Storyboard 的自定义类放在 WatchKit 或 WatchKist 扩展中,会有什么不同。 (以 myInterfaceController 为例) 最佳答案 您的 Watc
我有一个支持 Watchkit 的应用程序。当我在 iPhone 上运行该应用程序时,它构建良好,但在 Xcode 中显示警告“WatchKit 应用程序具有无效的 stub 可执行文件”。我已正确使
我在 WKExtensionDelegate 和 WKInterfaceController 上都添加了日志。 这是我在玩启动和退出应用程序时得到的结果 观看操作系统模拟器。 (模拟器运行 watch
验证 WatchKit 应用的 Info.plist 中 WKWatchKitApp 的值是否设置为 YES。 最佳答案 经过数周又数周的调查,我终于发现了问题所在。 Iphone App的产品名称与
我今天尝试将我的应用程序加载到 iTunesConnect,但在重新构建期间出现错误。没有找到配置文件(当我只为我的 iPhone 应用程序运行它时,它工作得很好并且已经有一段时间了)。所以我认为这是
我正在尝试将我的 Apple Watch 应用上传到 iTunes,每次我上传我的二进制文件时,我都会收到来自苹果团队的以下邮件。我已经完成了我的以下 list 。 为 watchapp 和扩展程序创
好的。在经典 iOS 中做到这一点很容易,但 WatchKit 不提供任何 block /闭包,并且在带/不带动画之间没有选择。 我有一个根 Controller ,其中有一个选项列表。触摸其中一个选
我是一名优秀的程序员,十分优秀!