问题标签 [watchconnectivity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 通过 WatchConnectivity 的 sendMessageData 将自定义对象的 NSArray 作为 NSData 传递
一旦 WKInterfaceController 的 didAppear 函数被触发,我就会使用 sendMessageData 回调函数将一个空的 NSData 发送到 WCSession 的默认会话:
发送 emptyData NSData 对象是因为 sendMessageData: 是一个非空参数。我只使用它来触发 WCSession 的 Delegate 方法,即 iOS 应用程序上的 didReceiveMessageData。然后该函数中的replyHandler 将适当的数据发送回replyHandler 到WKInterfaceController。
我遇到的问题是我在 WKInterfaceController 中的以下行崩溃了
这是我得到的错误:
*由于未捕获的异常'NSInvalidUnarchiveOperationException'而终止应用程序,原因:'* - [NSKeyedUnarchiver decodeObjectForKey:]:无法解码类(提示)的对象以获取密钥(NS.objects);该类可以在源代码或未链接的库中定义'
到目前为止我发现了什么:
- 我试图传递的 NSArray 由自定义对象 (Tip.m) 组成。我知道 NSArray 中的所有对象都必须符合 NSCoding 协议(如何将 NSArray 转换为 NSData?),我认为这是正确的。我已经使用 initWithCoder 和 encodeWithCoder 对对象中的每个变量和对象进行了编码和解码。
- 我的 Tip.m 对象应该添加到我的 WatchKit 扩展中(NSInvalidUnarchiveOperationException cannot decode object error in Apple Watch extension)。添加 Tip.m 文件只会给我:来自其他对象的“体系结构 i386 的未定义符号”。
对不起,很长的帖子,但我已经尝试了一切来解决这个问题,但没有成功。希望这可以帮助更多遇到 WatchConnectivity Framework 问题的人。
watchkit - ApplicationContext 属性总是返回一个空字典
我正在尝试从 a 获取最新数据,WCSession
即使我刚刚接到didReceiveApplicationContext
电话,我也不明白为什么。更多详细信息可直接在代码中获得:
我希望applicationContext
属性始终使用最新的信息集更新,updateApplicationContext
因为我总是使用iOS 和 Watch 应用程序WCSession
获得的相同信息。WCSession.defaultSession
我对连接有什么误解吗?!
watchkit - WCSession 错误域代码 7005:设备未配对
通过使用 WCSession sendMessage,我在我的一个项目中不断收到 ErrorDomainCode 7005。
在使用所有模拟器以及在真实 iPhone 和配对的 Apple Watch 上进行测试时,我会收到此错误。设备肯定是配对的。
完全相同的代码适用于我从头开始与 Watch Extension 一起创建的其他(较新)项目。
我确实只有在最近添加了手表扩展的旧项目中才会遇到这个问题。
手表应用程序根本不与 iPhone 应用程序通信。
以下是我的代码:
didFinishLaunchingWithOptions 中的 AppDelegate:
AppDelegate:消息的接收者
观看扩展接口控制器:awakeWithContext
这是我到目前为止所尝试的:
- 重置所有模拟器的内容和设置
- 从手表和 iPhone 中删除了手表应用
- 通过手机手表应用程序中的设置:删除手机应用程序的手表扩展并重新安装
- 尝试在 AppDelegate INIT 方法中设置 iPhone WCSession
我现在在这个问题上挣扎了很多天。因此,每一个提示都受到高度赞赏。
watchkit - 使用单例 WCSession 委托而不是实例方法
我在使用 WatchOS 时遇到了一个奇怪的问题(但我想这个问题与 iOS 和 OSX 类似)。
我正在使用单例来处理WCSession
委托(完整代码由 NatashaTheRobot 提供,我在这里只粘贴了她的一部分代码,完整代码在这里)。此类具有一个startSession
功能,其中单例关联为会话的委托:
并且所有委托函数都在同一个类中定义,例如session:didReceiveMessage:replyHandler:
我希望能够在 Watch 应用程序每次接收到当前 InterfaceController 独立的消息时调用委托。
我认为实现这个目标的好地方可能是ExtensionDelegate
类:
似乎这段代码不起作用,并且从未调用过委托函数。
然后我决定采用一种不太通用的方式,并开始在所有 InterfaceController 中添加对单例实例的引用……但它再次不起作用,并且从未调用过委托方法。然后,在我最后一次尝试中,我直接在 InterfaceController 代码中实现了会话委托协议。在那种情况下,我会收到来自 iOS 应用程序的消息......它工作正常(显然只有当手表应用程序呈现特定的 InterfaceController 时)。
我的问题是:为什么实现一个通用的单例对象不起作用?为什么我必须直接在 InterfaceController 上实现委托才能使其工作?
apple-watch - 当 Apple Watch 在后台时,未收到 sendMessage 的回复处理程序
我正在为 Apple Watch OS2 制作我的应用程序,其中我使用 sendMessage:replyHandler 进行黑白 iPhone 和 Watch 的通信。现在的问题是,当我从手表向 iPhone 发送消息并进入手表后台时,我没有收到任何回复处理程序返回手表。当手表应用程序处于前台时,这工作正常。任何建议将不胜感激。
ios - 无法从动态通知控制器发送 Watch Connectivity 消息
我写这条消息是因为我们在混合动态通知控制器和监视连接调用时遇到了一个奇怪的问题。
您可以在此处找到我们重现问题的示例项目:https ://gitlab.6minutecanoe.com/baptiste.leguelvouit/watch-connectivity-issue
这个问题似乎与类的didReceiveRemoteNotification
方法有关NotificationController
。如果我们重写此方法,并且如果我们尝试在through类中发送Watch Connectivity消息,则除非我们按下Digital Crown 按钮,否则 Watch 应用程序会卡住。handleActionWithIdentifier
ExtensionDelegate
这真的很奇怪,因为如果我们不重写这个方法,一切都会正常工作。我们也尝试WKUserNotificationInterfaceTypeDefault
在这个方法中直接返回,但没有任何改变。
有人遇到这个问题吗?
谢谢。
重现步骤: 在真实设备(iPhone + Watch)上启动示例项目,并向其特定设备令牌发送带有自定义类别的远程通知。单击自定义操作按钮时,会出现问题。
版本: Apple Watch 38mm on watchOS 2.0.1 (13S428) + iPhone 5S on iOS 9.1 (13B143)
配置:
尤其是当我们尝试使用在其方法中返回的动态通知控制器时会出现问题。WKUserNotificationInterfaceTypeCustom
didReceiveRemoteNotification
ios - 使用 Swift 将数据从 Apple Watch 同步到 iPhone
我正在为 iOS 和 Apple Watch 编写应用程序,需要在 Apple Watch 和 iPhone 之间同步数据。
我这样做是为了将 dat 从 iPhone 发送到这里提到的苹果手表:http: //telliott.io/2015/08/11/how-to-communicate-between-ios-and-watchos2.html
另一种方式,如果我更改我的手表应用程序上的数据并将更新的数据发送到我的 iPhone,如果打开接收消息的 ViewController,则会出现一个奇怪的警告。当它关闭并且我从手表发送更新的数据时,我的控制台上没有警告,如果我打开 ViewController,数据会更新:
任何人都可以帮助我解决这个奇怪的警告吗?
这是我收到消息的方法
ios - 在 Apple Watch 中调用 URL 的最佳做法是什么?
从 Apple Watch 调用 API 的最佳做法是什么
- 使用从 Apple watch 到 iPhone 的 sendMessage "watchConnectivity" 调用 API
或者
- 使用 NSURLSession 从手表本身调用 API?
ios - 为已经存在的 iPhone 应用程序实现 WatchApp,并希望 api 调用在 iPhone 应用程序上以后台模式发生
我正在为已经存在的 iPhone 应用程序实现 WatchApp,并希望 api 调用在 iPhone 应用程序上以后台模式发生。请建议如何做。我的 iPhone 代码在 Obj-C 中,并且希望 Watch 代码在 Swift 中。对于来自 Watch 的网络查询,应该在 iPhone 上在后台处理。有可能吗?怎么做?
core-data - 如何最好地将 NSManagedObjects 从 iPhone 传输到 Watch
我正在从 Swift 1.2 到 Swift 2 重新创建我的应用程序,在前者中我使用了共享组等。
我现在正在尝试使用新的 WatchConnectivity,但遇到了一堵主要的砖墙..!!
在手机上,我的应用程序正在下载 json 并填充到我的数据存储中的 NSManagedObjects 中,并且一切正常……在手机上。
我愚蠢地虽然我可以使用 session.updateApplicationContext(dictionary) 方法.....但现在发现了
- 我必须使用 NSCoding
- NSCoding 和 NSManagedObjects 不是很好的搭配!
那么,请问 iOS9 和 Swift 2 中如何将 CoderData 数据从手机传输到手表的首选方式是什么?
请注意,手表无需修改、更新等数据,因为这一切都发生在手机上。手表只是显示它。
提前致谢....