Сценарий довольно прост: есть старое приложение, написанное с использованием Cordova, которое должно быть обновлено новым приложением, написанным с нуля с использованием React Native.
Я не являюсь разработчиком и сопровождающим приложения написано с использованием Cordova, но я мог бы положить руки на его исходный код. Мне нужно переписать приложение и выполнить «тихое» обновление, т. Е. Новое приложение не должно «сбрасывать» данные, хранящиеся в KeyStore (Android) и Keychain (iOS), и оно должно повторно использовать эти данные.
Когда я «обновляю» приложение на моих тестовых устройствах, я пытаюсь получить доступ к данным, сгенерированным старым приложением, используя:
и попытаться получить данные, но безуспешно. Проблема одинакова на iOS и на Android.
Сосредоточившись на данный момент на iOS, я использую Xcode для создания обоих приложений. Сначала я создаю старую версию приложения, генерирую данные и сохраняю их в связке ключей. Затем я создаю новую версию приложения, заменяя предыдущую. Я убедился, что в Xcode Идентификатор пакета и Сертификат подписи одинаковы для обеих версий. Но из новой версии приложения я все еще не могу получить доступ к связке ключей. Чтобы сделать лакмусовый тест: I downgrade приложение перекомпилирует старую версию в другой раз, поэтому старое приложение заменяет новую, и в этом случае из старого приложения я могу получить доступ к данным цепочки для ключей.
Я подозреваю, что даже если Идентификатор пакета , два приложения используют две разные цепочки для ключей зоны . Итак, что мне нужно сделать, чтобы получить доступ к данным, сохраненным старым приложением, из нового?
Идея, что обновление приложения не должно влиять на пользователя, поэтому связка ключей (и хранилище ключей) старого приложения должна быть повторно использована новым приложением.
Примечание: я вижу, что в старом приложении функция, используемая для хранения данных в связке ключей / хранилище ключей:
var ss = new cordova.plugins.SecureStorage(callback)
Примечание: я уже прочитал это с веб-сайта Apple Developer , но я полагаю, что это может быть не в моем случае, потому что я не могу настроить общий доступ к связке ключей в старом приложении , поскольку нам не разрешено выпускать обновление приложения Cordova-base. Но, тем не менее, мы попытались внутренне использовать общий доступ без успеха.