在今日扩展中更改时观察用户默认值

时间:2015-02-12 08:01:30

标签: ios widget today-extension

我正在开发一个可以播放几个流的无线电播放器应用程序。此应用程序具有今天的扩展,通过使用应用程序组" com.myname.myapp"在用户默认值上共享一些数据。现在,只要用户数据发生变化,我就会收到通知。更改可以来自包含应用和今天的扩展。我在容器应用程序中添加了一个观察者来观察NSUserDefaultDidChangeNotification

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
           selector:@selector(defaultsChanged:)  
               name:NSUserDefaultsDidChangeNotification
             object:nil];

- (void)defaultsChanged:(NSNotification *)notification {
    // do the needful
}

只要我在应用程序本身进行更改,就会调用该方法,但在扩展程序中创建相同的chages时则不会。

您是否了解哪些内容出现问题?当扩展程序更改用户默认值时,需要采取哪些措施才能在包含应用中收到通知?不幸的是,没有直接的方法告诉容器应用程序用户正在改变某些东西。谢谢!

1 个答案:

答案 0 :(得分:0)

当扩展程序更改用户默认值时,无法在应用程序中获取该通知。它没有实现,所以你无法做任何事情来发生通知。

您可以执行以下操作之一:

  • 在您的应用中观察UIApplicationDidBecomeActiteNotification。每当应用程序变为活动状态时,请检查用户默认值以查看是否有任何更改。
  • 使用MMWormhole设置一个标记,以便您的扩展程序可以告诉您的应用用户默认值已更改。