I'm creating a Watch app just to display a value on the watch when the user taps on a table view in the iPhone/host app.
I would like to get a notification the value changes on a shared UserDefault
. It is shared between WatchKit app and the iOS (host) app, so when the user makes any changes in the host app I'm expecting to get the notification. I've done the following:
When user do some action in application (host app):
NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.app"];
id object = [self.plantsArray objectAtIndex:[self.plantsTable indexPathForSelectedRow].row];
[shared setObject:object forKey:@"data"];
[shared synchronize];
In the Watchkit extension have registered for the notification:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(print) name:NSUserDefaultsDidChangeNotification object:nil];
but unfortunately I'm not getting any notification, has anyone a solution?
I don't think iOS has capability of distributed notifications
between app and extension, notifications will not work between both, instead you need to find a way in which both can monitor changes. For example files.
As you already have created group
, you can keep a file in the group folder and add a filewatcher
in extension, update the file from app, and filewatcher
will catch the change, and your work is done.
For filewatcher
see code here.
Hope it helps.
Cheers.
Update
Find File watcher Swift version
here. Thanks @rivera
for adding.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With