在今日扩展中更改时观察用户默认值
问题描述:
我正在开发一个可以播放多个流的广播播放器应用程序。这个应用程序有一个今天的扩展,它通过使用应用程序组“com.myname.myapp”共享用户默认的一些数据。现在,只要用户数据发生变化,我都会得到通知。更改可以来自包含应用程序和今天的扩展。我在容器应用程序中添加了一个观察者来观察NSUserDefaultDidChangeNotification
。每当我做的应用程序本身的变化,但不是在同一个chages在扩展作出在今日扩展中更改时观察用户默认值
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
selector:@selector(defaultsChanged:)
name:NSUserDefaultsDidChangeNotification
object:nil];
- (void)defaultsChanged:(NSNotification *)notification {
// do the needful
}
该方法被调用。
你有什么想法什么是错的,当扩展更改用户默认设置时,需要做些什么才能在包含应用程序中获得通知?不幸的是,没有直接告诉容器应用程序用户正在改变的东西。谢谢!
答
当扩展更改用户默认设置时,无法在应用中获取该通知。它没有实现,所以没有办法做出这个通知发生。
您可以执行下列操作之一:
- 在你的应用观察
UIApplicationDidBecomeActiteNotification
。每当该应用程序变为活动状态时,检查用户默认值以查看是否有任何更改。 - 使用MMWormhole设置标志,以便您的扩展程序可以告诉您的应用程序用户默认设置已更改。