Как обмениваться данными между приложениями в iOS брелок
я описываю проблему, для которой мне потребовалось некоторое время, чтобы узнать ответ.
"GenericKeychain" пример является хорошим началом при предоставлении оболочки для обмена данными связки ключей между приложениями при использовании accessGroup в init.
однако реализация этого в моем приложении дала неясный код ошибки (который занял целую вечность, чтобы найти) -25243, что означает: нет контроля доступа.
Я запустил пример приложения Apple (GenericKeychain) на моем iPad только чтобы получить ту же ошибку. А?
документация Apple не может предоставить то, что необходимо для этого?
2 ответа:
после некоторого (много) копания в Интернете, я нашел ответ. Группа доступа, используемая при создании класса KeychainItemWrapper, также должна быть указана в каждом из прав приложения.plist-файл в разделе "keychain-access-groups".
теперь это кажется почти очевидным, что я вижу"keychain-access-groups". Тем не менее, я понятия не имел, чтобы даже посмотреть там. Надеюсь, это поможет другим.
на самом деле это не трудно сделать. Пожалуйста, следуйте инструкциям.
приложения app1:
- откройте целевые возможности вашего приложения и включите общий доступ к связке ключей.
- добавить идентификатор. (например, com.образец.sharedaccess)
- добавить "UICKeyChainStore " к вашему проекту.
- убедитесь, что в проект App1 добавлен идентификатор команды.
- Добавить Безопасности.фреймворк для вашего проекта App1.
и добавить эти коды там, где тебе нужно.
[UICKeyChainStore setString:@"someValue" forKey:@"someKey" service:@"someService"];
приложения app2:
- откройте целевые возможности вашего приложения и включите общий доступ к связке ключей.
- добавить идентификатор. (например, com.образец.sharedaccess)
- добавить "UICKeyChainStore " к вашему проекту.
- убедитесь, что в ваш проект App2 добавлен идентификатор команды.
- Добавить Безопасности.фреймворк для вашего проекта App2.
и добавить эти коды где-то вы необходимость.
NSString *string = [UICKeyChainStore stringForKey:@"someKey" service:@"someService"];
код TeamIDs должен быть одинаковым для обоих проектов.
- Я пробовал эти шаги на реальном устройство iPhone.
- Я также пробовал эти шаги с автоматическая и разработка iOs профиль подготовки.
- идентификаторы пакетов моих приложений были такими: com.образец.app1, com.образец.приложения app2.