Значение, хранящееся в общих NSUserDefaults или общей цепочке для ключей, не обновляется вовремя - PullRequest
0 голосов
/ 01 июня 2019

Я пытаюсь поделиться некоторыми данными между моим приложением и расширением его уведомлений.Я устанавливаю группу приложений и использую 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)
}

Мне нужно обмениваться данными между моим приложением и расширением уведомлений в режиме реального времени, за исключением синхронизации один раз за запуск (как я заметил).Очень нужен совет.

...