共享NSUserDefaults或共享钥匙串中存储的值未及时更新

时间:2019-06-01 11:49:31

标签: ios objective-c nsuserdefaults keychain userdefaults

我尝试在我的应用及其通知扩展之间共享一些数据。我设置了一个应用程序组,并使用NSUserDefaults共享数据。一开始它工作正常。但是后来我发现,当我将值从A更新为B时,扩展将无法获取更新的值,从扩展的角度来看,该值仍为A。直到重新启动我的应用程序后,该值才会更新,这不是我的方式希望可以共享数据。

我尝试对NSUserDefaults进行“同步”。(我知道此api已弃用)。不工作 我试图使用钥匙串访问组并使用钥匙串存储数据。但是似乎钥匙串中的项目也没有及时更新。

//  save value in my app

- (void)onButtonClicked:(UIButton *)sender {
    NSUserDefaults *groupUserDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"myAppGroup"];
    [groupUserDefaults setObject:@"A" forKey:@"key"];
}
...

//  read value from notification extension

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
    NSUserDefaults *groupUserDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"myAppGroup"];
    NSString *value = [groupUserDefaults stringForKey:@"key"];

    // modify notification content

    self.contentHandler(modifiedContent)
}

我需要在应用程序和通知扩展之间实时共享数据,而不是每次启动都同步一次(据我观察)。真的需要一些建议。

0 个答案:

没有答案