요즘 애플로그인 작업을 하고 있습니다. 코드 자체는 길지도 않고 어렵지도 않은데... 인증서가 애드훅이라 테스트하는 과정이 힘드네요.
디바이스로 애플로그인을 해보면서 테스트를 해봤는데요. 애플로그인으로 앱에 접속한 상태일 때 계정 연결을 끊게 되었을 때 처리가 필요했습니다. 게임에서 로그아웃하는 게 아닌 아이폰 설정에서 하는 걸 말합니다.
아이폰 설정창으로 가보면 애플 계정에 연결된 앱들을 볼 수 있습니다. 계정에서 암호 및 보안을 눌러보면 내 Apple ID를 사용하는 앱을 볼 수 있습니다. 눌러줍시다.
현재 연결된 앱들인데요. 2번째는 애플 공식 예제입니다. 현재 작업하고 있는 앱은 가려뒀습니다. 앱을 눌러서 정보를 확인해 봅시다.
지금 애플계정으로 로그인된 상태입니다. 메일을 숨겼기 때문에 앱에서 수신한 이메일 주소가 privaterelay.appleid.com
으로 표시된 걸 볼 수 있습니다. 하단에 Apple ID 사용 중단을 누르게 되면 애플로그인이 해제 됩니다. 기존에 가지고 있던 user
를 통해서 확인을 하게 되면 revoke
가 나오는 걸 볼 수 있어요.
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(handleSignInWithAppleStateChanged:) name:ASAuthorizationAppleIDProviderCredentialRevokedNotification object:nil];
- (void)handleSignInWithAppleStateChanged:(id)noti {
NSLog(@"handleSignInWithAppleStateChanged");
NSLog(@"애플 로그인 앱에서 해제");
NSLog(@"%@", noti);
}
우선 Apple ID를 사용 중단했을 때에 노티를 받을 수 있게 등록을 해 주어야 합니다.
ASAuthorizationAppleIDProviderCredentialRevokedNotification
애플 로그인이 해제되었을 때에 노티가 잘 오는지 확인해봐야겠죠? 애플 로그인이 되어있는 앱을 실행시키고 앞에서 설명한 방식으로 로그인을 해제해 보았습니다.
앞의 코드에서 로그를 찍어봤습니다. 해제 후 노티를 받아 로그가 잘 찍힌 걸 확인할 수 있습니다. 앱마다 처리 방식은 다르겠지만 저는 로그아웃을 시키는 처리를 할 듯합니다. SDK API를 이용해서 로그아웃하는 방법은 없더라고요. 저희 게임 서버와 접속을 끊고 저장된 user 값을 지우는 형태로 작업할 듯합니다.