#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);
}