1.안드로이드에서 GAID를 구하는 방법


GAID는 AdvertisingIdClient.Info 클래스를 통해서 구할 수 있습니다.

다만, 안드로이드 정책에 따라, 사용자가 '관심기반 광고 선택 해제' 또는 '광고 맞춤설정 선택 해제'로 설정해 둔 경우에는 GAID를 수집해서 광고 목적으로 사용해서는 안됩니다.  

AdvertisingIdClient.Info 클래스를 사용하려면 <<여기>>를 참고해서 프로젝트에 Google Play Services를 추가해야 합니다.

안드로이드 스튜디오는 다음과 같이 Google Play Services를 추가할 수 있습니다.

  1. 애플리케이션 모듈의 build.gradle 파일 열기
  2. dependencies 안에 Google Play Services 추가


    apply plugin: 'com.android.application'
        ...

        dependencies {
            ...
            compile 'com.google.android.gms:play-services:11.0.2'
        }


  3. Toolbar에서 Sync Project with Gradle Files 클릭

Google Play Services가 추가되면 다음과 같은 코드로 디바이스의 GAID를 읽어올 수 있습니다.


// Adid 값 저장용 객체
class Adid {
    String adid;
    public void setAdid(String adid) { this.adid = adid; }
    public String getAdid() { return this.adid; }
}
 
...
 
    final Adid adid = new Adid();
 
    // 별도의 스레드에서 실행하지 않고 메인 스레드에서 실행하면 IllegalStateException 발생
    AsyncTask.execute(new Runnable() {
        @Override
        public void run() {
            try {
                AdvertisingIdClient.Info advertisingIdInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
                if (!advertisingIdInfo.isLimitAdTrackingEnabled())
                    adid.setAdid(advertisingIdInfo.getId());
            } catch (IOException | GooglePlayServicesNotAvailableException | GooglePlayServicesRepairableException e) {
                e.printStackTrace();
            }
        }
    });
     
    ...
     
    // 이후 adid.getAdid()로 읽어서 사용 가능
    @JavascriptInterface
    public String getGaid() {
        return adid.getAdid();
    }
 
...



2. iOS에서 IDFA를 구하는 방법

IDFA는 ASIdentifierManager 클래스를 통해서 구할 수 있습니다.

프로젝트 설정 -> Linked Frameworks and Libraries에서 '+' 버튼을 눌러 -> 'AdSupport' 프레임워크 추가

다만, 애플의 정책에 따라, 사용자가 '관심기반 광고 선택 해제' 또는 '광고 맞춤설정 선택 해제'로 설정해 둔 경우에는 IDFA를 수집해서 광고 목적으로 사용해서는 안됩니다.


 2-1. Swift


import AdSupport
 
...
 
    var adid:String = ""
    if (ASIdentifierManager.shared().isAdvertisingTrackingEnabled) {
        adid = ASIdentifierManager.shared().advertisingIdentifier.uuidString
    }
 
    // 이후 adid 사용 가능
...



 2-2. Objective-C


#import <AdSupport/ASIdentifierManager.h>
 
...
 
- (NSString *)identifierForAdvertising {
    if([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
        NSUUID *IDFA = [[ASIdentifierManager sharedManager] advertisingIdentifier];
        return [IDFA UUIDString];
    }
    return nil;
}
 
...
 
// 이후 [self identifierForAdvertising]로 값을 읽어서 사용 가능
 
...


2.3 애플의 새로운 IDFA 가이드라인 - IDFA 관련 iOS 앱 제출 방법        

애플은 2015년 4월 앱 개발자들이 IDFA를 어떻게 쓸 수 있는지에 대한 아이튠즈 커넥트(iTunes Connect) 가이드라인을 업데이트하여 발표하였습니다. 
앱의 목적에 맞게 해당사항을 check 후 앱을 등록 해주시기 바랍니다.

3. ADID를 레코픽에 전송하는 방법

레코픽에서 제공하는 별도의 JavaScript SDK를 통해 ADID를 레코픽에 전송할 수 있습니다.

Notice

안드로이드 정책 또는 애플의 정책에 따라, 사용자가 '관심기반 광고 선택 해제' 또는 '광고 맞춤설정 선택 해제'로 설정해 둔 경우에는 ADID를 수집해서 광고 목적으로 사용해서는 안됩니다.

따라서, 다음의 경우에는 ADID를 전송해서는 안됩니다.

  1. 안드로이드의 경우 'AdvertisingIdClient.Info.isLimitAdTrackingEnabled()'가 true 일 때
  2. iOS의 경우 
    1. Swift 사용 시 'ASIdentifierManager.shared().isAdvertisingTrackingEnabled'가 false 일 때
    2. Objective-C 사용 시, '[[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]'가 false 일 때

 ADID를 보낼 수 있는 JavaScript API는 Client Library APIs 에 나와 있습니다.

                           recoPick('setGAID', window.Android.getGaid());  와 같이 호출