한국어 한국어   Englilsh English

.

Skip to end of metadata
Go to start of metadata

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 앱 제출 방법        

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 에 나와 있습니다.

  • 안드로이드의 경우 하이브리드 앱에서 GAID를 반환해주기 위해 @JavascriptInterface로 지정한 함수를 WebView의 웹페이지에서 호출해서 GAID 값을 구한 후,
    • 아래 표의 전송 방식 가이드에 따라, WebView로 보여지는 페이지의 <script> 안에서 recoPick('setGAID',  'GAID값'); 와 같이 호출하면 GAID 값이 레코픽에 전달 됩니다.
    • 예) 하이브리드 앱의 WebView에 추가한 JavascriptInterface 이름을 Android라 하고, 그 안에 @JavascriptInterface로 지정된 GAID를 반환하는 함수를 getGaid() 라고 하면,

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

  • iOS의 경우
    • 하이브리드 앱에서 WebView 내의 JavaScript를 호출할 수 있으므로, 하이브리드 앱에서 직접 window.recoPick('setIDFA', 'IDFA값'); 를 호출하면 IDFA 값이 레코픽에 전달 됩니다.
    • WebView 내에서 하이브리드 앱의 메서드를 호출할 수 있으므로, WebView로 보여지는 페이지의 <script> 안에서 recoPick('setIDFA',  IDFA를반환하는하이브리드앱의메서드호출); 와 같이 호출하면 IDFA 값이 레코픽에 전달 됩니다.
    • 애플의 정책에 따라 idfa수집이 불가능할 경우가 있으니 idfa 획득에 실패할 경우를 확인하셔서 recopick uid를 셋팅하여 전송하셔야합니다.
      참고) permission policy : https://developer.apple.com/app-store/user-privacy-and-data-use/


  • No labels