Ios 在watchAppExtension中处理NSUserDefault更改通知
我正在创建一个 Watch app仅用于在用户点击iPhone/host app中的表视图时显示手表上的值 我希望收到共享Ios 在watchAppExtension中处理NSUserDefault更改通知,ios,apple-watch,usergroups,Ios,Apple Watch,Usergroups,我正在创建一个 Watch app仅用于在用户点击iPhone/host app中的表视图时显示手表上的值 我希望收到共享UserDefault上的值更改通知。它在WatchKit应用程序和iOS(主机)应用程序之间共享,因此当用户在主机应用程序中进行任何更改时,我希望收到通知。我已经做了以下工作: 当用户在应用程序(主机应用程序)中执行某些操作时: 在Watchkit扩展中,已注册通知: [[NSNotificationCenter defaultCenter] addObserver:se
UserDefault
上的值更改通知。它在WatchKit应用程序和iOS(主机)应用程序之间共享,因此当用户在主机应用程序中进行任何更改时,我希望收到通知。我已经做了以下工作:
当用户在应用程序(主机应用程序)中执行某些操作时:
在Watchkit扩展中,已注册通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(print) name:NSUserDefaultsDidChangeNotification object:nil];
但不幸的是,我没有收到任何通知,有人有解决方案吗?我认为iOS没有在应用程序和扩展程序之间
分布式通知的功能,通知在两者之间不起作用,相反,你需要找到一种方法,让两者都可以监控更改。例如文件
由于您已经创建了组
,您可以在组文件夹中保留一个文件,并在扩展名中添加一个filewatcher
,从应用程序更新该文件,filewatcher
将捕获更改,您的工作就完成了
有关filewatcher
的信息,请参阅代码
希望能有帮助
干杯
更新
查找文件查看器Swift版本
。感谢您添加。您可以尝试提供以下功能:
- iOS设备和手表之间的通道,使您能够在它们之间来回发送数据
- 还提供了一种执行通知的方法,无需自行处理文件监视
使用它,这将是在你的应用程序中进行通知所需的所有代码
[self.wormhole passMessageObject:@{@"buttonNumber" : @(1)} identifier:@"button"];
[self.wormhole listenForMessageWithIdentifier:@"button"
listener:^(id messageObject) {
self.numberLabel.text = [messageObject[@"buttonNumber"] stringValue];
}];
您是否为您的应用程序和扩展启用了App Group
?@iphone是。扩展和应用程序都启用了它,我可以通过userdefault获取所选数据。但是我需要的是在userdefault更改时执行一个操作谢谢你的建议。但是,请告诉我如何在组中共享文件好吗?@manualography很简单,您只需在组文件夹中创建一个文件,并通过捕获应用程序中的NSUserDefaultNotification
进行更新即可。您可以使用[[NSFileManager defaultManager]ContainerUrlForSecurity Application group Identifier:GROUPKEY]访问组文件夹.道路代码>感谢@Rivera的添加。。如果有人遗漏了,我会更新我的答案。
[self.wormhole passMessageObject:@{@"buttonNumber" : @(1)} identifier:@"button"];
[self.wormhole listenForMessageWithIdentifier:@"button"
listener:^(id messageObject) {
self.numberLabel.text = [messageObject[@"buttonNumber"] stringValue];
}];