Невозможно получить доступ к паре значений ключей связки ключей ionic plugin в iOS из кода расширения общего доступа.

Я создал гибридное приложение, в которое мы загружаем файлы с помощью ionic.

Для iOS мы создали расширение общего ресурса для загрузки файла и прямо сейчас пытаемся передать учетные данные из приложения ionic в общее расширение в iOS.

Я использовал механизм связки ключей iOS, так как он поддерживается как встроенным, так и iOS.

Расширение общего доступа, которое я написал в быстрой реализации, и здесь реализация ключевой цепочки использует оболочку, подобную плагину ionic, в приложении ionic.

Я могу сохранять информацию в плагине ionic и получать в самом ionic. То же самое и с общим расширением.

хотя я не могу получить информацию, которая была передана общему расширению от ionic.

это то, что я использую в контроллере представления в общем расширении.

let keychainWrapper = KeychainWrapper.init(serviceName: "xxxx.xxx.xxx" )
let str = keychainWrapper.accessGroup
        let keyBool = keychainWrapper.accessibilityOfKey("key")
        let value = keychainWrapper.string(forKey: "key", withAccessibility:KeychainItemAccessibility.whenPasscodeSetThisDeviceOnly)
        let serviceName = keychainWrapper.serviceName

в ионном:

 this.keychain.set(key, value,false).then(() => {
      this.keychain.get(key)
        .then(value => console.log('Got value', value))
        .catch(err => console.error('Error getting', err));
    })
    .catch(err => console.error('Error setting', err));

Есть ли другой способ обмена информацией, такой как NSUserdefaults и т. Д., Который поддерживается как ionic, так и iOS Swift?

Это руководство - это то, что у меня есть следил.


person K.S    schedule 23.08.2018    source источник
comment
Вы можете использовать БД для обмена информацией как в приложении, так и в расширениях.   -  person CodeChanger    schedule 23.08.2018
comment
Я не могу сохранить базу данных в своем приложении iOS на iPhone, где данные используются совместно.   -  person K.S    schedule 24.08.2018
comment
какая-либо конкретная причина, поскольку я использую одну и ту же общую базу данных как в приложении iOS, так и в расширении.?   -  person CodeChanger    schedule 24.08.2018
comment
Мне нужно передать адрес электронной почты пользователя, я мог бы решить эту проблему сегодня, используя NSUserdefault. Я обновлю свой ответ тем же. Большое спасибо за то, что посмотрели @CodeChanger   -  person K.S    schedule 24.08.2018


Ответы (1)


В ionic мне пришлось использовать плагин настроек приложения. это дало мне доступ к пользовательским настройкам по умолчанию, хотя для получения группы пришлось изменить код плагина ionic, чтобы я мог поделиться пользовательскими настройками по умолчанию, сохраненными в ionic, и получить то же самое в расширении приложения.

Плагин https://ionicframework.com/docs/native/app-preferences/

//ionic code
let dict12 = this.appPref.suite('group.xxxxxxx')
        this.appPref.store('group.pmshare', 'keyNa', 'valueNa')
        console.log('dict: ' + dict12)
        this.appPref.fetch('group.pmshare', 'keyNa').then(str => {
        console.log('str: ' + str)
        })


// shared extension code
var defaults = UserDefaults.init(suiteName: "group.xxxxxxx")
        print(defaults?.string(forKey: "keyNa"))
        defaults?.set("fromExtValue", forKey: "fromExt")

Всегда не забывайте создавать группу в разделе target-> app groups-> ON

Одна и та же группа будет использоваться для обмена данными между обоими приложениями.

Фактически это можно использовать для взаимодействия между приложениями в iOS. Когда приложение разработано с использованием Ionic.

person K.S    schedule 24.08.2018