handleWatchKitExtensionRequest 未响应 Watchkit 扩展中的 openParentApplication (Swift)

2024-01-01

我正在尝试将信息从我的 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被触发将不胜感激!


啊,我认为这里发生的事情是你的代码是正确的,并且完全按照它应该的方式工作,而你在这里解释的是两个完全可以理解的假设重叠的结果,这些假设实际上是不正确的并且已经被让你误入歧途。好消息是,您的代码已经可以运行了。

你说,

...在输出中显示正在调用该函数...

如果您的意思是在控制台中看到该消息,openParentApplication called in button function,那么这是发生了什么:

这部分代码是 Swift Closure:

{(reply, error) -> Void in
        println("openParentApplication called in button function")
}

当您的 WatchKit 扩展调用时WKInterfaceController.openParentApplication它会向你的父 iPhone 应用程序传递一本字典(你的testDict),iPhone 应用程序可以使用它向您返回数据 — 前提是数据已序列化。它还会将您传递给它的闭包返回给您。这使您的 WatchKit 扩展能够在收到回复后运行它自己定义的代码。您可以在此闭包中包含使用返回的数据testDict以及当时可在本地访问的其他变量openParentApplication被称为。当您的 WatchKit 扩展收到返回时,它会自动执行闭包中的代码。

所以当你看到openParentApplication called in button function,这表明reply已收到来自 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 应用程序时反思 iPhone 端的工作情况,有一个部分解决方案。从模拟器启动 WatchKit 应用程序,运行后,在 Xcode 中激活菜单选项调试 > 附加到进程...并在下面选择您的 iPhone 应用程序进程可能的目标在顶部。现在,您将看到 iPhone 应用程序控制台消息,并且您的 iPhone 应用程序将响应断点,但当然您将不再从 WatchKit 应用程序端看到这些消息。您继续能够与模拟器中的两个应用程序进行交互,并且可以在执行期间在附加的应用程序之间来回交换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

handleWatchKitExtensionRequest 未响应 Watchkit 扩展中的 openParentApplication (Swift) 的相关文章

  • 奇怪的父/子NSManagedObjectContext现象

    我创建了两个这样的上下文 create writer MOC privateWriterContext NSManagedObjectContext alloc initWithConcurrencyType NSPrivateQueueC
  • 如何在 NSDate 变量中仅设置时间?

    我有 NSDate 变量 只想更改时间 不应更改日期 是否可以 例如 用户在 DatePicker 日期中选择日期间隔 如果是开始日期 我想将时间设置为 00 00 00 如果是结束日期 我将时间设置为 23 59 59 感谢你的帮助 问候
  • 在 Swift 中使用 commitEditingStyle 动态删除 UITable 部分

    我正在处理一个无法解决的问题 我有一个来自客户数据库数组的名称表 每个客户在其他数据成员中都有一个名称属性 我可以成功删除某个部分中的行 但我不能删除该部分 当该部分中的最后一行被删除时 该部分必须消失 I got NSInternalIn
  • 如何在 SQLite 中替换字符串?

    如何更新具有以下内容的表列 var mobile 233KKFSDK3234 Documents Page jpg 并将其替换为 Documents Page jpg 在 SQLite 中 注意 所有文字 除了 Documents 是动态的
  • 以编程方式向 UIButton 标签添加阴影

    我试图向按钮标签添加 1px 黑色阴影 但没有成功 我试过这个 self setTitleShadowOffset CGSizeMake 0 1 但我得到 请求非结构或联合中的成员 setTitleShadowOffset 任何建议都会很棒
  • 检查系统时间是自动还是用户设置

    我需要在当前的项目中设置用户证明时间 我围绕这个问题发现了很多不同的问题 但似乎没有一个问题有我正在寻找的答案 这些是我到目前为止看过的问题 XCODE 如何从设备获取 验证准确的时间戳 https stackoverflow com qu
  • 无法添加钥匙串项目。使用 KeychainItemWrapper 更改标识符后出现错误 - 25299?

    我想用 KeychainItemWrapper 将 UUID 保存在钥匙串中 所以我在中添加以下方法MyKeychainManager m define keychain idenentify com myapp bundle1 void
  • iOS 解析如何通过 URL 下载文件

    我正在将 parse 用于我的聊天应用程序 当我上传文件时 我保留该 url 并将该 url 发送给其他用户 然后其他用户可以通过该 URL 下载文件 这是我上传文件的代码 void uploadBlob NSData blob fileN
  • 使用 UIKeyCommand 检测删除键

    任何人都知道如何使用检测 删除 键UIKeyCommand在 iOS 7 上 当人们在使用 Swift 时遇到问题时 我认为用 Objective C 和 Swift 编写一个小型的 完整的例子可能是一个很好的答案 请注意 Swift 没有
  • 除非在后台线程中获取新的引用,否则存在潜在的引用计数问题

    我有一个second https stackoverflow com questions 28898966 prefer property accessor or kvc style for accessing core data prop
  • AFNetworking 上传图片

    我看过一些例子 但我认为我的问题可能出在 PHP 中 我正在尝试使用 AFNetworking 将图像从 iPhone 上传到服务器 这是我的 obj c 代码 IBAction uploadButtonClicked id sender
  • 你如何在react-native中实现捏合缩放?

    我一直在研究 PanResponder 我当前的工作假设是 我将检测是否有两个触摸正在向外移动 如果是 则增加元素大小onPanResponderMove功能 这似乎是一种混乱的方法 有没有更顺畅的方法呢 如果您只需要简单的捏缩放功能 只需
  • 如何在 Swift Playgrounds 中获得弹出对话框

    我想知道如何在 Swift 中弹出一个对话框游乐场 是的 必须在 Playgrounds 中 我尝试了以下代码 直接来自 AppleDevs 站点 然而 无论我如何尝试 self tag always抛出错误 谁能帮我这个 import U
  • NSDateFormatter:根据 currentLocale 的日期,不包含年份

    这不会太难吧 我想显示不带年份的日期 例如 8 月 2 日 美国 或 02 08 德国 它也必须适用于许多其他语言环境 到目前为止 我唯一的想法是对年份进行正常格式 然后从生成的字符串中删除年份部分 我认为你需要看一下 NSString d
  • iOS NSURLSession,如何在didCompleteWithError中重试

    我想在我的服务器上尝试一次调用 直到成功为止 我想每 30 秒尝试一次 所以我使用 NSURLSession 进行通话 NSURLSessionDownloadTask task self session downloadTaskWithR
  • 如何更改 UINavigationController 后退按钮名称?

    我有一个UIViewController我正在从第一个视图控制器导航到第二个视图控制器 我想更改显示在navigationcontroller为了回去 SecondViewController secondController Second
  • 我如何从 iPhone 设备获取电子邮件历史记录..?

    friends 我想从我的 iPhone 访问电子邮件历史记录 并且还希望在收到新邮件时收到通知 如果可能的话 请向我提供源代码片段 Thanks 简而言之 使用任何已记录的 API 都是不可能的
  • 如何从 Firebase 同步检索数据?

    我有两个集合 即用户和问题 根据使用 userId 登录的用户 我检索currQuestion价值来自users收藏 基于currQuestion值 我需要检索question来自 Firebase 的文档Questions收藏 我使用下面
  • 由于 2.23 导致 iOS 应用程序被拒绝 - iOS 数据存储指南

    以下是 Apple 关于拒绝的消息 2 23 应用程序必须遵循 iOS 数据存储指南 否则将被拒绝 2 23 详情 在启动和内容下载时 您的应用程序会存储 6 5 MB 这并不意味着 遵守 iOS 数据存储指南 下一步 请验证只有用户使用您
  • 进入后台时 Alamofire 请求卡住?

    我正在使用 Alamofire 调用 Web 服务 该服务需要相当长的时间才能加载 如果应用程序进入后台 当我返回应用程序时 我会被加载程序卡住 我想这是因为调用永远不会向我的完成处理程序返回任何内容 我该如何解决这个问题 您可以使用后台抓

随机推荐

  • 尝试返回父记录的子记录的所有列

    我正在寻找一种解决方案 通过该解决方案可以获得父记录的所有子记录 我找到了一个满足我的需求的解决方案 如下所示 https stackoverflow com a 28366310 726802 唯一的问题是上述解决方案是连接 ID 当前结
  • Google Now 类似于 iOS 上的界面

    所以 我非常喜欢 Android 上的 Google Now 卡片界面 最近它甚至登陆了 iOS 有没有任何教程或示例项目可以帮助我为我的 iOS 应用程序创建卡片界面 根据我的研究 我已经能够使用自定义 UICollectionViewF
  • Twitter Bootstrap:中心药丸

    我的问题是如何使药片居中 我尝试在周围添加中心块并更改float left to float center但没有任何帮助 这已经变得简单多了 你只需要使用text center容器上的类 并应用display inline block to
  • 致命异常:主要 - 我的应用程序不再在 Android 设备上运行,但可以在桌面上运行

    这是我第一次遇到这个问题 我完全不知道该怎么办 我曾经在虚拟设备以及手机和平板电脑上测试我的应用程序 我经常测试它 比如每 1 2 小时一次 有一次 它停止在所有 Android 设备上运行 但它仍然可以在桌面上运行 在 Android 设
  • 如何解决Chrome使用xhr轮询时的6个连接限制

    我最近发现Chrome似乎有6个连接限制 Chrome 在传输一定量的数据后挂起 等待可用的套接字 https stackoverflow com questions 23679968 chrome hangs after certain
  • jquery 选择除 div 及其子元素之外的所有元素

    我有这个 html css 代码 div div div div div div div div div div
  • 在调试过程中,单步执行程序时有时会出现“变量不可用”(Android Studio 3.5+)

    通常 变量在 Android Studio 版本 3 5 2 的调试模式下显示 但有时 当我单步执行程序时 我突然得到 变量不可用 见下图 这次我在存在错误的代码中得到了这个 所以我真的很想知道那里发生了什么 它是在调试模式下运行测试期间发
  • 使用 C++ 的简单 HTTP 请求

    在您将此标记为冗余之前 请注意我已经尝试了网上发布的许多方法 包括堆栈溢出 但它们都无法满足我的需求 另请注意 我对编程世界还很陌生 所以请原谅我滥用技术术语 现在我正在编写一个 C 程序 它计算来自用户计算机的一些数据 例如 IP 地址
  • std::string 类继承和繁琐的 C++ 重载解析

    我需要延长std basic string处理路径字符串和不同的operator include
  • 菜单图标未显示在操作栏中

    我需要在片段中膨胀自定义菜单 我只有一个菜单项 但图标未显示 有人可以告诉我的代码有什么问题吗 我的菜单 xml menu menu
  • 用于连接非映射表的 Hibernate HQL

    我有一个名为 Kurs 的实体 Entity public class Kurs Id GeneratedValue strategy GenerationType AUTO private long kursId private Stri
  • PACT - 使用提供者状态

    我正在尝试使用 pact 来验证 Spring Boot 微服务 我已经从消费者生成了契约文件 并使用契约经纪人在提供者端验证了它 我有另一个用例 我需要在根据实际服务响应验证协议文件之前执行一些代码 我阅读了有关状态更改 URL 和通过闭
  • 您对这个项目有什么建议? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何删除cumulo实例?

    我在通过调用初始化accumulo时创建了一个实例累积初始化但现在我想删除该实例 并且我想创建一个新实例 任何人都可以帮忙做到这一点吗 从 HDFS 中删除 ACCUMULO HOME conf accumulo site xml 中的 i
  • AgGrid 自定义 html 拖动

    我只是在考虑更改 ag 网格组件的拖动悬停 我找不到太多关于它的信息 有人知道如何在拖动模式下更改行的样式吗 我的目标是拥有不同的动画 整行 例如材质 UI UX https material io design components li
  • 为什么带有 EL 2.2 的 JSF 2.x 允许 MethodExpression 代替 ValueExpression?

    我看到几个问题询问如何将参数传递给 JSF 方法 在 EL2 2 和 servlet 3 0 中 它允许用户将参数传递到方法调用中 一个例子 如何从渲染的 h outputText 将参数传递给方法 https stackoverflow
  • C++11 std::thread 接受带有右值参数的函数

    我有一些作业 并且我很难理解 可能 如何将参数传递给 std thread 构造函数 假设以下代码 我删除了不需要的部分 template
  • 使用.net core 3.0进行脚本动态编译和运行代码

    我想提供在 NET core 3 中编译和运行代码 Csharp 类 的可能性 以用于脚本编写 脚本 类 应从文件系统加载并注入现有 静态 程序集中 https laurentkempe com 2019 02 18 dynamically
  • Javascript 函数将印度货币数字转换为支持 paise 的单词

    还有比这更快的解决方案吗 在花了一些时间谷歌搜索和玩弄其他人的代码之后 我做了一个快速修复 可重用函数适用于最大 99 99 99 999 的数字 number2text 1234 56 将返回ONE THOUSAND TWO HUNDRE
  • handleWatchKitExtensionRequest 未响应 Watchkit 扩展中的 openParentApplication (Swift)

    我正在尝试将信息从我的 WatchKit 应用程序发送到我的主要父应用程序 据我了解 我应该能够使用openParentApplication在我的 watchkit 扩展中 该扩展将由handleWatchKitExtensionRequ