본문 바로가기
Swift 개발 이야기

iOS14 이상에서 IDFA 가져오기

by 방화동한량 2020. 10. 28.
728x90

굿데이 여러분 투데이는 IDFA 에 대해서 포스팅을 해보도록 하게씀니다

 

일단 IDFA 가 무엇인지 알아보는게 좋겠져?

 

IDentifier For Advertisers 의 약자로, 광고를 위해서 사용되는 식별자라고 보면 되겠슴니다

 

앱 심사 제출할때 맨 마지막 단계에서 애플이 시뻘겋게 으름장놓는 그것이죠

 

iOS 13까지는 이 idfa 를 사용할때는 아래와 같이 처리하면 되었는데여

 

import AdSupport

let idfa = ASIdentifierManager.shared().advertisingIdentifier

 

iOS14 부터는 이렇게 하면 0000-00000,... 이렇게 나옵니다

 

못 긁어온다는 것이죠 까다롭게 말이지 갑자기 바꿔버리고,,,

 

그럼 이제 어떻게 해야 하는가?

 

인류는 답을 찾을 것입니다 늘 그랬듯이

 

바로  AppTrackingTransparency 를 사용하면 되는데여

 

앱추적투명도...? 이전까지는 불투명하게 추적했던것을 반성하나봅니다 

 

자 그럼 코드를 볼게영

 

    
      var idfa: UUID {
        return ASIdentifierManager.shared().advertisingIdentifier
      }
    
    
    func requestIDFAPermission(completion: @escaping (String)->()) {

        if #available(iOS 14, *) {
            ATTrackingManager.requestTrackingAuthorization { (status) in
                switch status {

                case .authorized:
                    print("Authorized")
                    print("IDFA: ", self.idfa)
                    completion(self.idfa.uuidString)
                case .denied, .notDetermined, .restricted:
                    print("Not Authorized")
                    print("IDFA: ", self.idfa)
                    completion(self.idfa.uuidString)
                @unknown default:
                    print("UNKNOWN")
                    print("IDFA: ", self.idfa)
                    completion(self.idfa.uuidString)
                }
            }
        } else {
            print("Under 14.0")
            print("IDFA: ", self.idfa)
            completion(self.idfa.uuidString)
        }
    }

 

참 쉽죠? 그냥 14.0 이상일때는 ATTrackingManager 로 권한을 요청하면 됩니다

 

그런데 음 이렇게 하면 앱이 펑 터지네요,,, 바로바로 권한요청에 대한 설명이 없기 때문인데여 이건 다 아시죠? 카메라 권한이나 위치권한 받아올 때 쓰는 그거랑 똑같은 겁니다

 

NSUserTrackingUsageDescription 을 Info.plist 에 넣어주고 다시 실행하게 되면?

 

 

요렇게 권한 팝업이 뜨고, 추적을 허용하게 되면 기기의 IDFA 가 똭 하고 나오게 됩니다

 

추적금지를 하게 되면 IDFA 는 기존처럼 0000-0000...이렇게 나오게 되구영

 

앱 내에서 IDFA 를 사용하시는 분들은 다음 업데이트에 해당 사항을 꼭 넣어주셔야 하니 참고하심 되게씀다

 

그러면 다음시간에 또 만나여 안녕~~~~~