Как использовать ‘initWithSuiteName’ из плагина Cordova в Ionic4

#cordova #ionic-framework #ionic4 #ionic-native #cordova-nativestorage

#кордова #ionic-framework #ionic4 #ionic-native #cordova-nativestorage

Вопрос:

Я хочу обмениваться данными между приложением Ionic4 и собственным виджетом today. Для этого я использую этот плагин

В документации плагина Cordova вы найдете «специфичные для iOS функции», где упоминается NativeStorage.initWithSuiteName. Но это отсутствует в плагине Ionic.

Итак, я изменил свой код следующим образом:

 if (this.platform.is('ios')) {
  window['plugins'].NativeStorage.initWithSuiteName('group.com.test.test');
}
  

и

 this.nativeStorage.setItem(key, val);
  

Но когда я хочу получить данные в виджете today, ключ не установлен.

 let preferences = UserDefaults(suiteName: "group.com.test.test");

        if let test = preferences!.string(forKey: "test") {
            print(test);
        } else {
            print("No");
        }
  

Кто-нибудь знает, как с этим справиться? Спасибо за вашу помощь!

Ответ №1:

Если вы используете общие данные в том же идентификаторе приложения, не используйте initWithSuiteName()

this.nativeStorage.setItem(key, val);

 if let test = UserDefaults.standard.string(forKey: "test") as? String {
    print(test);
} else {
    print("No");
}
  

Если вы делитесь данными между приложениями или расширением, вам необходимо использовать App Group
https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_application-groups

перед setItem()

 if (this.platform.is('ios')) {
    NativeStorage.initWithSuiteName(APP_GROUP_ID);
}