#iphone #ios #app-store #keychain #ios-provisioning
#iPhone #iOS #app-store #брелок #ios-подготовка
Вопрос:
В руководстве по программированию служб Keychain указано следующее:
«На iPhone права Keychain зависят от профиля подготовки, используемого для подписи вашего приложения. Обязательно последовательно используйте один и тот же профиль подготовки в разных версиях вашего приложения.»
С этим у меня нет проблем, но я хотел бы проверить, что если я предоставлю обновление для своего приложения в AppStore, оно по-прежнему сможет получить доступ к старым значениям, хранящимся в keychain. Я попытался протестировать, обновив приложение версией, подписанной с помощью специального профиля распространения, который содержал тот же идентификатор пакета и название продукта, что и оригинал, но не смог получить доступ к старому значению в keychain.
Это единственный вариант отправить обновление в AppStore и надеяться, что оно сработает?
Ответ №1:
Это хороший вопрос.
Одна из основных причин, по которой вы можете захотеть сохранить некоторые данные в keychain, заключается в том, чтобы предотвратить доступ к ним злоумышленников. Это само по себе довольно сухое предложение, поэтому я рекомендую прочитать о том, как кто-то может получить доступ к этим данным.
Другим способом доступа к данным keychain было бы создать вредоносное приложение с тем же идентификатором приложения, что и у целевого приложения. Apple обеспечила этот маршрут, потребовав, чтобы профиль подготовки был таким же.
Итак, отвечая на ваш вопрос, вы можете протестировать данные keychain в update только из того же профиля подготовки, т.Е.
- От случая к случаю
- Из App Store в app store.
Перевод из App Store в App Store на самом деле невозможен, поскольку к тому времени будет слишком поздно (ваше обновление появится в продаже). Итак, вместо этого вам нужно удалить свое приложение из App Store и установить специальную версию. Затем воссоздайте свои данные в keychain, затем обновите до последней специальной версии и проверьте, что она работала.
Конечно, для этого требуется, чтобы у вас была архивированная специальная версия приложения, которая в настоящее время есть в App Store. Если у вас этого нет, то протестировать обновление невозможно.
Ответ №2:
Если я не ошибаюсь, для обновления приложения в App Store вам необходимо использовать тот же профиль подготовки. Следовательно, поскольку вы будете использовать тот же профиль, у вас должен быть доступ к тем же элементам keychain.
Ответ №3:
На самом деле важен не файл подготовки, а идентификатор приложения. В частности, начальный идентификатор пакета, который вы задаете при создании идентификатора приложения. Доступ к Keychain регулируется им. Таким образом, пока ваш профиль использует идентификатор приложения с тем же начальным идентификатором пакета, вы можете продолжать получать доступ к информации в keychain. У меня есть несколько приложений, которые делают это.
Это позволяет вам создать набор приложений, которые могут получать доступ к одним и тем же элементам keychain, если вы настроили их на использование одного и того же начального идентификатора пакета. Итак, если вы используете версии light и pro, они оба могут получить доступ к одной и той же информации о keychain, сохраняя при этом отдельные идентификаторы пакета для таких вещей, как пользовательские настройки по умолчанию.
Комментарии:
1. Как настроить ваше приложение на использование того же идентификатора приложения, что и в предыдущей версии. Я пробовал методы, упомянутые в примере кода GenericKeychain, но поскольку предыдущая версия не использовала атрибут безопасности группы доступа, похоже, он не работает. Я по-прежнему не могу получить доступ к паролю, который был установлен в keychain, из приложения, которое было установлено из App Store.
2. Я также попытался установить для ключа идентификатора приложения в Entitlements.plist значение ##########. com.companyname.etc Но, похоже, это не помогает.
3. Этот ответ прямо противоречит документам Apple : На iPhone права Keychain зависят от профиля подготовки, используемого для подписи вашего приложения. Убедитесь, что вы последовательно используете один и тот же профиль подготовки в разных версиях вашего приложения. Что из этого правильно, профиль подготовки или идентификатор приложения?
Ответ №4:
SFHFKeychainUtils может быть вашим хорошим выбором. Это оболочка для доступа к keychain. Подробнее о SFHFKeychainUtils:http://www.ioslib.com/archives/sfhfkeychainutils
Комментарии:
1. Это не ответ на вопрос Шейна. Он хочет знать, как проверить, что новое обновление приложения по-прежнему сможет получать доступ к старым значениям, хранящимся в keychain. Использование оболочки не решит вопрос.