在 Apple Watch 和 iPhone 之间使用 WCSession 共享数据
Posted
技术标签:
【中文标题】在 Apple Watch 和 iPhone 之间使用 WCSession 共享数据【英文标题】:Share data using WCSession between apple Watch and iPhone 【发布时间】:2017-12-01 13:01:05 【问题描述】:尝试使用 updateApplicationContext 将数据从 iPhone 共享到 Apple Watch,Watch 连接 (WCSession) 的传输用户信息在模拟器中工作,但在设备上尝试相同但无法正常工作。
设备:iPhone 6 plus(OS 11.1)、apple watch-Series 2(Watch OS 4.1)。
处理 defaultSession 并为 watchConnectivity 实现必要的委托方法。
iPhone 端:
步骤:1
if ([WCSession isSupported])
[[WCSession defaultSession] setDelegate:self];
[[WCSession defaultSession] activateSession];
步骤:2
[[WCSession defaultSession] transferUserInfo:dataDict];
Apple Watch 方面:处理 defaultSession 步骤:1
if ([WCSession isSupported])
[[WCSession defaultSession] setDelegate:self];
[[WCSession defaultSession] activateSession];
步骤:2
-(void)session:(WCSession *)session didReceiveUserInfo:(NSDictionary<NSString *,id> *)userInfo
// code for data parsing which get from userInfo dictionary.
【问题讨论】:
【参考方案1】:我已经为我的项目做了这个
设置会话并创建数据字典后,您可以使用发送消息
[[WCSession defaultSession] sendMessage:dataDict replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage)
//You task on completion
errorHandler:^(NSError * _Nonnull error)
if (error)
//Handle the error
];
在手表应用代码中 您可以设置委托方法
- (void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *, id> *)message replyHandler:(void(^)(NSDictionary<NSString *, id> *replyMessage))replyHandler
你已经完成了
【讨论】:
感谢您的回复..我已经尝试了上述解决方案,但它也无法在真实设备上运行。以上是关于在 Apple Watch 和 iPhone 之间使用 WCSession 共享数据的主要内容,如果未能解决你的问题,请参考以下文章
iPhone 和 Apple Watch 应用之间的核心数据共享
iPhone 和 Apple Watch 之间的 WatchConnectivity 超时错误
Watch OS 2:是不是可以获得配对的 iPhone 和 Apple Watch 之间连接的蓝牙信号强度?
iPhone 和 Apple Watch 应用之间的 Core Data SQLite 存储更改通知