如何在 iPhone 应用程序和 Apple Watch 之间共享数据?

Posted

技术标签:

【中文标题】如何在 iPhone 应用程序和 Apple Watch 之间共享数据?【英文标题】:How to Share data between iPhone app and applewatch? 【发布时间】:2017-04-10 13:27:34 【问题描述】:

我在将数据从 iPhone 应用程序共享到 Apple Watch 时遇到问题。我尝试使用以下代码将 NSMutablearray 共享给 Apple Watch,但它不起作用。

NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:arrStartScore];
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.test.StartScore"];
[defaults setObject:encodedObject forKey:@"WatchHomeViewTableList"];
[defaults synchronize];

用于将数据检索到 Apple Watch

NSUserDefaults *myDefaults = [[NSUserDefaults alloc]                                 initWithSuiteName:@"group.com.test.StartScoreCheck"];

arrStartScore = [myDefaults objectForKey:@"WatchHomeViewTableList"];
NSLog(@"dict....%@",arrStartScore);

【问题讨论】:

使用AppGroups功能启用gist.github.com/daniellevass/8eef7c022dff30d730df, techotopia.com/index.php/… 您好,但它崩溃了,我的操作与您给定的链接相同。我将数组存储在 viewcontroller 上的 viewdidload 中。它的崩溃。由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“尝试插入非属性列表对象( 【参考方案1】:

要将数据从手机发送到手表,请使用此代码。

WCSession *session = [WCSession defaultSession];
NSError *error;

[session updateApplicationContext:@@"message": yourArray error:&error];

在手表上接收手机数据:

 - (void) session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,NSMutableArray *> *)applicationContext    
 

您可以使用在 didReceiveApplicationContext 中访问您的数组

  [applicationContext objectForKey:@"message"];

【讨论】:

【参考方案2】:

watchOS3 在手表和手机上分离了 UserDefaults。 AppGroups 可以在一台设备内的一个开发人员的应用程序之间共享数据。为了在设备之间传输数据,请使用 WatchConnectivity 框架。

Documentation

【讨论】:

【参考方案3】:

您可以使用 WatchKit 连接框架共享数据。有不同的方式可以用于背景或交互。

查看苹果的video,它解释了 iPhone 和 Watch 之间所有不同的通信方式。

此外,您可以创建一个单例类的手表连接,并在 ios 和 WatchOS 中使用它。在两个设备中建立会话并集成委托方法,您就完成了。您现在可以在 iOS 和 WatchOS 之间来回发送和接收消息。

【讨论】:

以上是关于如何在 iPhone 应用程序和 Apple Watch 之间共享数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone 应用程序和 Apple Watch 之间共享数据?

Apple 推送通知如何在 iPhone 应用程序中传递给用户?

如何在 Apple-Watch 上获取 iPhone 日历事件提醒

如何在没有 iPhone 的情况下测试 Apple 推送通知服务?

如何在没有 Apple Watch 应用的情况下使用 cordova 在 Apple Watch 上获取 iPhone 应用的推送通知?

如何从 iPhone 应用程序测试 Apple 推送通知?