iOS 애플리케이션간에 키 체인 데이터를 공유하는 방법
나는 답을 배우는 데 꽤 시간이 걸린 문제를 설명하고 있습니다.
" GenericKeychain "예제는 init에서 accessGroup을 사용할 때 애플리케이션간에 키 체인 데이터를 공유하기위한 래퍼를 제공하는 좋은 시작입니다.
그러나 내 앱에서이를 구현하면 모호한 오류 코드 (위치를 찾는 데 영원히 걸림) -25243이 발생했습니다. 즉, 액세스 제어가 없습니다.
동일한 오류가 발생하기 위해 iPad에서 Apple의 예제 앱 (GenericKeychain)을 실행했습니다. 어?
Apple의 문서가이를 수행하는 데 필요한 사항을 제공하지 않습니까?
웹을 많이 파헤친 후에 답을 찾았습니다. KeychainItemWrapper 클래스를 구성 할 때 사용하는 액세스 그룹은 "keychain-access-groups"섹션에있는 각 애플리케이션의 Entitlements.plist 파일에도 지정되어야합니다.
이제 " keychain-access-groups "가 표시되는 것이 거의 분명해 보입니다 . 그러나 나는 거기를 보는 것조차 몰랐다. 이것이 다른 사람들에게 도움이되기를 바랍니다.
실제로는 어렵지 않습니다. 단계를 따르십시오.
App1 :
- 앱의 대상 기능을 열고 키 체인 공유를 활성화합니다.
- 식별자를 추가합니다. (예 : com.example.sharedaccess)
- 프로젝트에 " UICKeyChainStore "를 추가하십시오 .
- App1 프로젝트에 팀 ID가 추가되어 있는지 확인하십시오.
- App1 프로젝트에 Security.framework를 추가합니다.
그리고이 코드를 필요한 곳에 추가하십시오.
[UICKeyChainStore setString:@"someValue" forKey:@"someKey" service:@"someService"];
App2 :
- 앱의 대상 기능을 열고 키 체인 공유를 활성화합니다.
- 식별자를 추가합니다. (예 : com.example.sharedaccess)
- 프로젝트에 " UICKeyChainStore "를 추가하십시오 .
- App2 프로젝트에 팀 ID가 추가되어 있는지 확인하십시오.
- App2 프로젝트에 Security.framework를 추가합니다.
그리고이 코드를 필요한 곳에 추가하십시오.
NSString *string = [UICKeyChainStore stringForKey:@"someKey" service:@"someService"];
귀하의 TeamIDs는 두 프로젝트에 대한 동일해야합니다.
- 실제 iPhone 장치 에서이 단계를 시도했습니다 .
- 또한 자동 및 iOS 개발 프로비저닝 프로파일로 이러한 단계를 시도했습니다 .
- 내 앱의 번들 식별자는 com.example.app1, com.example.app2와 같았습니다.
참조 URL : https://stackoverflow.com/questions/4115744/how-to-share-keychain-data-between-ios-applications
'Programing' 카테고리의 다른 글
계속하기 전에 여러 비동기 호출이 완료 될 때까지 대기 (0) | 2021.01.08 |
---|---|
IStructuralEquatable 및 IStructuralComparable은 어떤 문제를 해결합니까? (0) | 2021.01.08 |
동일한 프로젝트에 대해 동시에 여러 git 브랜치를 볼 수 있습니까? (0) | 2021.01.08 |
int main ()과 int main (void)의 차이점은 무엇입니까? (0) | 2021.01.08 |
$ resource에 전달 된 @id는 무엇입니까? (0) | 2021.01.08 |