【问题标题】:Communication between App and iWatch: is using app group the only way?App和iWatch之间的通信:使用app group是唯一的方式吗?
【发布时间】:2015-04-15 10:19:46
【问题描述】:

我有一个执行某些计算的 iPhone 应用程序。它运作良好。现在我想创建一个 WatchKit 扩展和目标,以控制计算的开始并在计算完成后显示结果以及更新进度(例如,显示 Watch 应用程序时完成的百分比,并发送通知当进度达到显着百分比时,从 iPhone 应用程序转移到 iWatch)。

我发现 some tutorials 解释使用 NSUserDefaults 和 initWithSuitName 提供 app 组,然后添加数据对象进行同步。我可以使用 KVO 在 Watch 上显示百分比标签。

当我在这里探索可能的架构时,您是否知道一些替代方法来实现这一点?使用 app group 是 Apple 推荐的方法吗?

【问题讨论】:

标签: ios nsuserdefaults watchkit ios-app-group


【解决方案1】:

您可以使用打开的应用程序来启动您的计算。然后您可以通过切换发送信息。

【讨论】:

  • 感谢您的回答。什么是交接?我想要一个按钮来触发已经打开的应用程序上的操作。您能否提供一些示例代码或教程链接?
【解决方案2】:

您可以按照以下步骤操作

设置 Watch kit 会话并创建数据字典后,您可以使用发送消息

[[WCSession defaultSession] sendMessage:<Your Dictionary> 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
{
     //Handle the received data
}

你已经完成了

【讨论】:

    【解决方案3】:

    应用组在 watchOS 1 上不再工作。您需要使用WatchConnectivity 框架。在 watch 中获取值后,您可以使用 Reactive 或 Rx 来更新值而不是 KVO。

    有用的链接:

    https://developer.apple.com/documentation/watchconnectivity

    https://kristina.io/watchos-2-how-to-communicate-between-devices-using-watch-connectivity/

    https://www.natashatherobot.com/watchconnectivity-application-context/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 2020-11-14
      • 2013-10-07
      相关资源
      最近更新 更多