如何在 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 应用的推送通知?