- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 iOS -> Watch 发送数据,当事件 Controller 实现了 didReceiveApplicationContext
时,这工作正常。我可以接收上下文对象并且一切正常。
但是,我不清楚如何“全局”实现 didReceiveApplicationContext
,以便 Watch 从 iOS 捕获上下文数据更改,而不管用户使用哪个 Controller 。我有几个用户可以在其中导航的 Controller ,因此当它们位于没有此委托(delegate)方法的 Controller 上时,不会捕获任何数据。
我尝试将此委托(delegate)方法添加到 ExtensionDelegate.m
以尝试在全局范围内捕获来自 iOS 的数据,但当我尝试输出到日志时它似乎没有捕获任何内容。
我假设有一种方法可以实现这一点,而无需在每个 Watch Controller 中实现 didReceiveApplicationContext
?
谢谢
最佳答案
您可以创建一个委托(delegate)类来监听新数据,然后将新数据通知所有感兴趣的接口(interface) Controller 。如果你有多个接口(interface) Controller 需要在新数据到达时更新,你可以将这个委托(delegate)实现为单例,以便能够从你的扩展的任何部分添加观察者(就像 Apple 对其 NSNotificationCenter 类所做的那样):
class SessionDelegate {
static let sharedDelegate = SessionDelegate()
private override init() {}
....
}
定义一个所有感兴趣的接口(interface) Controller 都可以实现的观察者协议(protocol):
protocol DataObserver {
func dataDidChange(data: AnyObject)
}
将一个观察者数组添加到您的委托(delegate)类中,并添加两个方法来添加和删除观察者:
private var observers = [DataObserver]()
func addObserver(observer: DataObserver) {
// add the observer to observers
}
func removeObserver(observer: DataObserver) {
// remove the observer from observers
}
当您收到新数据时,遍历观察者并调用协议(protocol)中定义的方法:
func didReceiveData(data: AnyObject) {
for observer in observers {
observer.dataDidChange(data)
}
}
现在所有需要刷新的 WKInterfaceController
类都可以将自己添加为观察者:
SessionDelegate.sharedDelegate.addObserver(self)
并实现协议(protocol)中的方法:
func dataDidChange(data: AnyObject) {
// update UI
}
最后,您必须通知您的委托(delegate)类新数据已到达,以便它可以通知其观察者。因此,在您的 ExtensionDelegate
中实现 didReceiveApplicationContext
并在您的委托(delegate)类上调用 dataDidChange
:
extension ExtensionDelegate: WCSessionDelegate {
func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) {
SessionDelegate.sharedDelegate.dataDidChange(applicationContext)
}
}
关于ios - WatchConnectivity - 检测所有 Controller 中的应用程序上下文更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33310170/
我正在使用 WatchConnectivity 将图像从 iOS 传输到 Watch OS。在模拟器中调试时遇到问题 如我在(发件人端,即 iOS)中所见,文件已成功传输 public func se
我有一个 watchOS 应用程序,它使用 WatchConnectivity 框架在 Safari 中打开 URL。当我的应用程序在 iPhone 上运行并同时在 Apple Watch 上运行时,
我想在 Today Extension 中显示在 watch OS 2 应用程序上输入的数据,而无需先启动 iPhone 应用程序。 Today Extensions 是否支持通过 WatchConn
借助新的 Watch OS 2 和新的 Watch Connectivity,不再需要使用应用程序组在 watch 和 iOS 应用程序之间共享数据。但是如何避免应用程序和扩展程序中重复字符串呢? 例
我正在访问一个用户的联系人,以便将联系人姓名和生日从 iPhone 发送到 AppleWatch。我可以访问联系人并可以在手机上显示数据,但我无法使用 WatchConnectivity 发送信息。我
我目前正在尝试将 CoreData 数据从我的 iOS 应用程序获取到 watchOS 扩展程序。我正在使用 WatchConnectivity 框架通过 sendMessage(_ message:
我正在尝试使用 Swift 中的 WatchConnectivity API 在 Apple Watch(版本 2.0.1)和我的 iPhone(运行 iOS 9.1)之间建立连接。 我关注了this
我正在开发我的第一个 Apple Watch 应用程序(我的 iOS 应用程序的扩展)。我在将数据从一个 WKInterfaceController 发送到另一个时遇到了一个小问题。 我的第一个 Co
我一直在为 WCSession 使用 NatashaTheRobot 单例,但无法使 sendMessage 正常工作。 我的目标是从 Watch 应用程序向 iOS 应用程序发送一条消息,并将字典从
我希望我的复杂功能通过 Watch Connectivity 从 iPhone 获取数据。我正在使用 sendMessage 即时消息技术。 我不想在尝试获取数据时打开我的 iPhone 应用程序,因
当使用 WatchConnectivity 框架发送数据时,无论是从手机到 watch 还是反之亦然,在框架给我 WCErrorCodePayloadTooLarge 错误之前负载有多大? 我无法在
Apple 是否表明对于 sendMessage(_ message: [String : AnyObject]...) 从 watch 到 iPhone 的传输时间的实际预期是多少?对于单个字符串的
我正在尝试将数据从我的 iOS 应用发送到 Watch 应用。我为此使用 updateApplicationContext。 我有一个在 NSDictionary 中转换的 json 文件并尝试发送它
我正在尝试从 iOS -> Watch 发送数据,当事件 Controller 实现了 didReceiveApplicationContext 时,这工作正常。我可以接收上下文对象并且一切正常。 但
我试图将我的 swift 对象从 iOS 应用程序传递到 watch 。但是,我发现它适用于 NSString 等基本类型,但适用于我的自定义对象类型。 我的自定义对象能够转换为 NSData 我已经
我一直致力于从我的 iOS 应用向我的 WatchOS 发送 ApplicationContext 形式的 int notificationCount。 func session(_ session:
我正在开发我们应用程序的 WatchOS 2 版本,并且坚持这样一个事实,即我只能发送一个带有函数“updateApplicationContext:(NSDictionary *)”的字符串。 我希
我想使用 WatchConnectivity 和设置 WCSession 将在 watch 上创建的文件发送到 iOS 配套应用程序,但它无法通过 iPhone。当我改为使用发送包含字典的消息时,数据
创建独立的watchOS应用程序时是否可以使用WatchConnectivity框架? 文档 https://developer.apple.com/documentation/watchkit/cr
我有一个 iOS 应用程序,它使用 WatchConnectivity 与配对的 watch 进行通信。在大多数情况下,它可以在模拟器和设备上正常运行。 问题: 在模拟器上的开发过程中,当我尝试使用
我是一名优秀的程序员,十分优秀!