当 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应用程序不起作用?

Apple Watch 让应用程序保持活跃几秒钟

如何在 Apple Watch 上禁用“转入睡眠”?

如何以编程方式禁用 Apple Watch 的睡眠模式

当应用程序处于活动状态时,phonegap 通用推送 ios 警报

设备处于睡眠模式时不会出现 Android GCM 通知