当 Apple Watch 处于后台状态或睡眠模式时,我们如何从 iphone 向 Apple Watch 发送消息?
Posted
技术标签:
【中文标题】当 Apple Watch 处于后台状态或睡眠模式时,我们如何从 iphone 向 Apple Watch 发送消息?【英文标题】:How can we send a message from iphone to AppleWatch when AppleWatch in backgroundstate or sleepmode? 【发布时间】:2016-12-19 13:29:54 【问题描述】:我正在开发示例手表套件应用程序(Apple Watch + iPhone)。在这里,我的应用程序同步正常。我还使用数据传输(iPhone 到 Apple Watch)在 WCSession 上工作。当两者都处于活动状态时,它工作正常。但是如果 Applewatch 处于非活动状态(后台状态、睡眠模式或前台状态),我无法将数据传输到它。委托方法未调用。
- (void)applicationDidBecomeActive
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
if ([WCSession isSupported])
WCSession *session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
这是我的委托方法。
- (void)session:(nonnull WCSession *)session didReceiveMessage:(nonnull NSDictionary<NSString *,id> *)message replyHandler:(nonnull void (^)(NSDictionary<NSString *,id> * __nonnull))replyHandler
请帮帮我。
【问题讨论】:
iWatch 假设只能以这种方式工作。您不应该期望它立即被 iPhone 打开,而是相反,因为它们仅在用户与其界面之一交互时运行。有一些例外,但这些例外不包括从 iPhone 唤醒。您必须找到其他方式与 iWatch 交互或稍微调整应用功能。 【参考方案1】:如果 ios 设备和 Apple Watch 已配对。然后通过WCSession发送消息时,会自动唤醒应用。
【讨论】:
【参考方案2】:通过使用以下代码,我解决了我的问题。
在视图控制器中:
// Sending data to iphone to applewatch
WCSession *session = [WCSession defaultSession];
NSError *error;
[session updateApplicationContext:@@"counterValue":@"counter", @"userId":@"id" error:&error];
Applewatch:(接口控制器)
//Receiving data in applewatch from iphone
- (void) session:(nonnull WCSession* )session didReceiveApplicationContext:(nonnull NSDictionary<NSString * ,id> *)applicationContext
【讨论】:
以上是关于当 Apple Watch 处于后台状态或睡眠模式时,我们如何从 iphone 向 Apple Watch 发送消息?的主要内容,如果未能解决你的问题,请参考以下文章
iPhone应用程序处于终止状态时Apple Watch应用程序不起作用?