Programing

iOS 애플리케이션간에 키 체인 데이터를 공유하는 방법

crosscheck 2021. 1. 8. 21:17
반응형

iOS 애플리케이션간에 키 체인 데이터를 공유하는 방법


나는 답을 배우는 데 꽤 시간이 걸린 문제를 설명하고 있습니다.

" GenericKeychain "예제는 init에서 accessGroup을 사용할 때 애플리케이션간에 키 체인 데이터를 공유하기위한 래퍼를 제공하는 좋은 시작입니다.

그러나 내 앱에서이를 구현하면 모호한 오류 코드 (위치를 찾는 데 영원히 걸림) -25243이 발생했습니다. 즉, 액세스 제어가 없습니다.

동일한 오류가 발생하기 위해 iPad에서 Apple의 예제 앱 (GenericKeychain)을 실행했습니다. 어?

Apple의 문서가이를 수행하는 데 필요한 사항을 제공하지 않습니까?


웹을 많이 파헤친 후에 답을 찾았습니다. KeychainItemWrapper 클래스를 구성 할 때 사용하는 액세스 그룹은 "keychain-access-groups"섹션에있는 각 애플리케이션의 Entitlements.plist 파일에도 지정되어야합니다.

이제 " keychain-access-groups "가 표시되는 것이 거의 분명해 보입니다 . 그러나 나는 거기를 보는 것조차 몰랐다. 이것이 다른 사람들에게 도움이되기를 바랍니다.


실제로는 어렵지 않습니다. 단계를 따르십시오.

App1 :

  1. 앱의 대상 기능을 열고 키 체인 공유를 활성화합니다.
  2. 식별자를 추가합니다. (예 : com.example.sharedaccess)
  3. 프로젝트에 " UICKeyChainStore "를 추가하십시오 .
  4. App1 프로젝트에 팀 ID가 추가되어 있는지 확인하십시오.
  5. App1 프로젝트에 Security.framework를 추가합니다.
  6. 그리고이 코드를 필요한 곳에 추가하십시오.

    [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

반응형