AppsFlyer SDK 연동 - 안드로이드

android.pngSDK Version:  4.8.15 (Release Notes)

1. 개요

AppsFlyer SDK는 앱 설치 및 이벤트를 트래킹하는 기능을 제공합니다. 지금까지 70억 건 이상 설치되었으며, 매우 강력하고 안전하며 가벼우면서도 임베드하기 쉽도록 개발되었습니다.

AppsFlyer SDK를 통해 설치, 업데이트, 세션을 트래킹할 수 있고, 또한 앱 설치 이외에도 인앱 구매나 게임 레벨과 같은 인앱이벤트를 추가로 트래킹하여 ROI 및 사용자 인게이지먼트 수준을 평가할 수 있습니다.

The AppsFlyer Android SDK is compatible with Android OS version 2.3 and above.

AppsFlyer 안드로이드 SDK V.3.3.x에서 마이그레이션하는 경우는 여기를 클릭하세요.

 

  • Chapters 2 and 3 are MANDATORY to implement BASIC SDK integration, i.e. install attribution only
  • Tracking in-app events chapter is HIGHLY RECOMMENDED to implement
  • The rest of the described features are OPTIONAL to implement, although some of them may be necessary for you, depending on your app's business logic. For example, tracking revenue or getting the conversion data on first launch may be vital for your app's flow

2. 빠른 시작

2.1 SDK Download

최신버전의 AppsFlyer 안드로이드 SDK jar 파일을 다운로드 하시려면, 여기를 클릭하세요.

다운로드한 SDK 파일의 무결성을 확인하시려면 여기를 클릭하세요.

AppsFlyer 샘플 앱에 대한 자세한 내용은 여기를 클릭하세요.

2.2 앱에 SDK 임베딩하기

Gradle의 Dependency Management 를 사용하면서 AppsFlyer SDK를 자동으로 연동할 수도 있고, SDK.jar를 사용하여 수동으로 연동할 수도 있습니다.

2.3 프로젝트에 SDK 추가하기

SDK를 연동하는 가장 쉬운 방법은 Gradle의 Dependency Management를 사용하는 것입니다. 버전 정보는 여기에서 확인할 수 있습니다.

Gradle을 사용하지 않는 경우에는 AF-Android-SDK.jar를 다운로드하여 프로젝트 클래스 경로에 추가합니다.

AppsFlyer의 안드로이드 SDK Dependency 추가하기:

  1.  프로젝트를 열거나 새 프로젝트를 만들고, your_app | build.gradle을 엽니다.
  2.  Add this to Module-level /app/build.gradle before dependencies:
repositories { 
    mavenCentral()
}
  1. Add the implementation dependency with the latest version of the AppsFlyer SDK.
  2. Add this to Module-level /app/build.gradle after repository:
dependencies {
	implementation 'com.appsflyer:af-android-sdk:4+@aar'
	implementation 'com.android.installreferrer:installreferrer:1.0'
}

 중요!

  • 'com.android.installreferrer:installreferrer:1.0' Dependency는 Google Play 설치 리퍼러 API(referrer API)를 지원하기 위해서 필요합니다. 이 API를 사용하여 어트리뷰션의 정확도를 높일 수 있고, Install Fraud로부터 보호할 수 있습니다.
  • 이 API는 AppsFlyer 안드로이드 SDK 4.8.6 버전 이상에서 지원합니다. 이전 버전의 SDK로부터 업데이트하는 경우에는 SDK의 init 메소드를 업데이트하여 새 Dependency 연동을 완료합니다.
  • Developers who are using ProGuard and want to use Google's new referrer API must set the following ProGuard rule: -dontwarn com.android.installreferrer
  • Developers who are not using gradle build or aar and want to use Google's new referrer API must manually add com.android.installreferrer jar as a file, and ensure that the following permission is added: com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE

2.4 필요 권한 설정

AndroidManifest.xml 파일은 다음 권한을 포함해야 합니다.

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- Optional : -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

2.5 AndroidManifest.xml 파일에서 BroadcastReceiver 설정

설치 Broadcast Receiver는 다음 두가지 방법으로 구현할 수 있습니다.

싱글 브로드캐스트 리시버 멀티 브로드캐스트 리시버

AndroidManifest.xml 파일에 INSTALL_REFERRER를 수신하는 리시버가 없으면, application tag 안에 다음 리시버를 추가합니다.

<application
...
...

	<receiver android:name="com.appsflyer.SingleInstallBroadcastReceiver" android:exported="true">
		<intent-filter>
			 <action android:name="com.android.vending.INSTALL_REFERRER" />
		 </intent-filter>
	</receiver>

...
...
</application>

 

If you get the error "Unresolved class SingleInstallBroadcastReceiver" after adding the receiver to AndroidManifest.xml, make sure to build the app first.

3. SDK Initialization

Initialization of the SDK is completed in two stages. In the first stage the DevKey is supplied along with an optional conversionDataListener. In the second stage the call to startTracking indicates that all relevant preparations are complete (e.g. call setCustomerUserId) and the SDK can start tracking all events.

SDK를 초기화하려면 앱의 onCreate() 안에 다음 코드를 추가합니다.

import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerConversionListener;

public class AFApplication extends Application {
   private static final String AF_DEV_KEY = "";
   @Override
   public void onCreate() {
       super.onCreate();
       AppsFlyerConversionListener conversionDataListener = 
       new AppsFlyerConversionListener() {
           ...
       };
       AppsFlyerLib.getInstance().init(AF_DEV_KEY, conversionDataListener, getApplicationContext());
       AppsFlyerLib.getInstance().startTracking(this);   }
}

 참고

다른 방법으로는 startTracking 호출을 나중으로 미루고, 관련 액티비티의 OnCreate() 기능 안에 넣을 수도 있습니다.

 

다음의 dependancy compile 'com.android.installreferrer:installreferrer:1.0'AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext()); 메소드로 전달한 getApplicationcontext()는 AppsFlyer에 Google의 새로운 리퍼러 API를 보고하는 전제 조건입니다.

Dev key는 AppsFlyer 대시보드의 Configuration 항목 아래 Apps Settings 에서 액세스할 수 있습니다.

이 API로 AppsFlyer가 설치, 세션, 업데이트를 감지할 수 있습니다.

4. 인앱이벤트 트래킹

In-App Events provide insight on what is happening in your app. It is recommended to take the time and define the events you would like to measure to allow you to track ROI (Return on Investment) and LTV (Lifetime Value).

Tracking in-app events is performed by calling trackEvent with event name and value parameters. See In-App Events documentation for more details.

 참고

인앱이벤트 이름으로 45자 이상은 사용할 수 없습니다. 45자 이상의 이벤트 이름은 대시보드에 나타나지 않고 로데이터나 Pull API 및 Push API에서만 표시됩니다.

//context - use getApplicationContext()
//eventName is any string to define the event name.
//eventValues is a map of event parameters that comprise a rich event.  
public static void trackEvent(Context context, String eventName, Map eventValues);


: 레벨 달성 인앱이벤트

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.LEVEL,9);
eventValue.put(AFInAppEventParameterName.SCORE,100);
AppsFlyerLib.getInstance().trackEvent(context,AFInAppEventType.LEVEL_ACHIEVED,eventValue);

이 코드는 af_level_achieved 타입의 이벤트를 다음 이벤트 값과 함께 생성합니다.
{af_level: 9, af_score: 100}

 참고

  • AppsFlyer는 안드로이드 SDK 버전 4.8.1부터 인앱이벤트나 다른 SDK API에서 표준 영문자가 아닌 문자도 사용할 수 있도록 지원합니다.
  • 통화 기호나 쉼표는 인식하지 못하므로, 이 기호들을 숫자와 함께 사용하지 마세요.

 사용 예

Map<String,Object> eventValues = new HashMap<>();
eventValues.put(AFInAppEventParameterName.REVENUE, 1200);
eventValues.put(AFInAppEventParameterName.CURRENCY, "JPY");
AppsFlyerLib.getInstance().trackEvent(this, AFInAppEventType.PURCHASE, eventValues);

5. 딥 링킹 트래킹

 

앱에서 딥 링킹 연동을 하는 것을 강력하게 추천합니다. 딥 링킹은 리타게팅 캠페인의 중요한 부분이며, 리타게팅 캠페인을 실시할 때에 반드시 사용하도록 권장합니다.

딥 링킹에서 사용될 각 액티비티에 대해서(필요시, 메인 액티비티 포함) onCreate() 안에 다음 라인을 추가하세요.

AppsFlyerLib.getInstance().sendDeepLinkData(this);

딥 링킹에서 열리는 액티비티는 manifest 파일의 액티비티 정의에 아래와 같은 인텐트 필터(intent filter)를 포함해야 합니다. 

<intent-filter>
   <action android:name="android.intent.action.VIEW" />
   <category android:name="android.intent.category.DEFAULT" />
   <category android:name="android.intent.category.BROWSABLE" />
   <data android:scheme="yourUniquescheme" />
</intent-filter>


Scheme는 트래킹 링크에 포함시킨 af_dp 값과 관련있습니다.

딥 링크 데이터를 받으려면 AppsFlyer SDK가 호출하는 onAppOpenAttribution 콜백을 구현해야 합니다. 이것은 앱을 여는 원링크/트래킹 링크 파라미터를 반환합니다. 이 값을 분석한 후, 관련 앱 페이지를 열 때 이 논리를 적용할 수 있습니다.

void onAppOpenAttribution(Map<String,String> attributionData);

더 자세한 정보는 여기를 클릭하거나 전환 데이터 획득 섹션에서 확인할 수 있습니다.

6. 수익 트래킹

af_revenue (AFInAppEventParameterName.REVENUE)이벤트 파라미터를 사용하여 수익을 인앱이벤트의 일부로서 계산할 수 있습니다. 양수 또는 음수의 어떤 숫자라도 입력할 수 있습니다.

 참고

af_revenue는 AppsFlyer가 로데이터와 대시보드에서 실제 수익으로 계산하는 유일한 이벤트 파라미터입니다. 더 자세한 내용을 보려면 여기를 클릭하세요.

: 인앱이벤트 수익

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE,200);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE,"category_a");
eventValue.put(AFInAppEventParameterName.CONTENT_ID,"1234567");
eventValue.put(AFInAppEventParameterName.CURRENCY,"USD");
AppsFlyerLib.getInstance().trackEvent(getApplicationContext() , AFInAppEventType.PURCHASE , eventValue);

위 코드는 다음 이벤트 값과 함께 af_purchase 타입의 이벤트를 생성합니다.

{af_content_id: “1234567”, af_content_type: “category_a”, af_revenue: 200, af_currency: “USD”}

이 구매 이벤트는 $200 수익이 포함되고, 대시보드에 수익으로 표시됩니다. 

 참고

Setting user local currency code for in-app purchases - the currency code should be a 3 character ISO 4217 code. (default is USD). 

다음 메소드를 호출하면 모든 이벤트의 통화 코드를 설정할 수 있습니다. AppsFlyer.setCurrencyCode("GBP");

 중요!

Do NOT format the revenue value in any way. It should not contain comma separators, currency sign, or text. A revenue event should be similar to 1234.56, for example.

7. 전환 데이터 가져오기

AppsFlyer에서는 SDK 레벨에서 모든 신규 설치의 사용자 어트리뷰션 데이터를 실시간으로 직접 액세스할 수 있습니다. 이를 통해서 사용자에게 맞춤형 콘텐츠를 제공하거나 앱 내부의 특정 액티비티를 전송하여 앱에 대한 사용자의 인게이지먼트를 높일 수 있습니다.

안드로이드 SDK에서 AppsFlyer의 전환 데이터에 액세스하기 위해서는 ConversionDataListener를 구현해야 합니다.

public interface AppsFlyerConversionListener {
       void onInstallConversionDataLoaded(Map<String,String> conversionData);
        void onInstallConversionFailure(String errorMessage);
}


예시:

AppsFlyerLib.getInstance().registerConversionListener(this, new AppsFlyerConversionListener() {
  @Override
  public void onInstallConversionDataLoaded(Map<String, String> conversionData) {
      for (String attrName : conversionData.keySet()) {
          Log.d(AppsFlyerLib.LOG_TAG, "attribute: " + attrName + " = " + conversionData.get(attrName));
      }
  }
  @Override
  public void onInstallConversionFailure(String errorMessage) {
      Log.d(AppsFlyerLib.LOG_TAG, "error getting conversion data: " + errorMessage);
  }
  @Override
  public void onAppOpenAttribution(Map<String, String> conversionData) {
  }
  @Override
  public void onAttributionFailure(String errorMessage) {
      Log.d(AppsFlyerLib.LOG_TAG, "error onAttributionFailure : " + errorMessage);
  }
});

8. 사용자 식별자

AppsFlyer 기기 ID 가져오기

앱의 모든 신규 설치에 대해서 AppsFlyer의 고유 기기 ID가 생성됩니다. AppsFlyer의 고유 ID를 얻기 위해서는 다음 API를 사용하세요.

public String getAppsFlyerUID(Context context);


사용 예:

String appsFlyerId = AppsFlyerLib.getInstance().getAppsFlyerUID(this);

고객 사용자 ID 설정

고객 ID를 설정하면 AppsFlyer의 고유 ID 및 다른 장치의 ID와 함께 이 고유한 ID를 상호 참조할 수 있게됩니다. 이 ID는 내부 ID와 상호 참조할 수 있도록 포스트백 API와 AppsFlyer CSV 보고서에 보여집니다.

고객 사용자 ID를 설정하려면 다음 코드를 사용하세요.

public void setCustomerUserId(String id);

 

사용 예:

AppsFlyerLib.getInstance().setCustomerUserId("myId");

 참고

It is recommended to set your Customer User ID as soon as possible as it is only associated to events reported after its setup. If setCustomerUserId is called before calling startTracking, you will have the Customer User ID in the raw export for installs and for events. If it is set after, you will see the value only for events tracked after calling this method.

Customer User ID can also be used to complete integrations with Analytics platforms such as Mixpanel and Swrve.

 

고객 사용자 ID 가져오기:

첫 번째 실행 후 고객 사용자 ID 값이 다시 설정되지 않도록 하기 위해 다음의 구문을 사용하여 값이 비어 있는지 여부를 확인할 수 있습니다

AppsFlyerProperties.getInstance().getString(AppsFlyerProperties.APP_USER_ID)

고객 사용자 ID에 대한 더 자세한 정보는 여기를 클릭하세요.

사용자 이메일 설정

AppsFlyer에서는 하나 이상의 기기와 연결된 이메일 주소를 보고할 수 있습니다. 이메일 주소를 수집한 후, 지정된 암호화 방식에 따라 AppsFlyer에 보고해야 합니다.

SHA1, MD5, SHA256, 그리고 평문의 암호화 방식을 지원합니다.

예:

public void setUserEmails(String... emails);


사용 예:

AppsFlyerLib.getInstance().setUserEmails(AppsFlyerProperties.EmailsCryptType.MD5, "email1@domain.com","email2@domain.com", ….);

 참고

AppsFlyer는 이메일 주소와 같은 개인 식별 정보(Personally Identifiable Information, PII)를 보관하지 않고, 어떤 보고서에도 이 정보를 표시하지 않습니다. 이 정보는 미디어 소스로 포스트백을 하기 위한 목적으로만 수집합니다.

Google 광고 ID

SDK 4.8.0 버전부터 AppsFlyer는 google_advertising_id를 자동으로 수집합니다. Google 광고 ID 수집에 관한 요구 사항은 SDK 4.7.x 버전 및 그 이하에만 적용됩니다.

IMEI 및 안드로이드 ID

OS 버전이 안드로이드 4.4 KitKat 이상이고 기기가 Google Play Services를 포함하고 있으면(SDK 버전 4.8.8 및 GPS가 필요한 특정 앱에서), 기본적으로 SDK가 IMEI 및 안드로이드 ID를 수집하지 않습니다. 

AppsFlyer에 해당 ID를 명시적으로 보내고자 하는 경우 개발자는 다음 API를 startTracking 코드 앞에 넣어 사용할 수 있습니다.

AppsFlyerLib.getInstance().setImeiData("IMEI_DATA_HERE");
AppsFlyerLib.getInstance().setAndroidIdData("ANDROID_ID_DATA_HERE");

앱이 Google Play Services를 포함하지 않는 경우 SDK가 IMEI 및 안드로이드 ID를 수집합니다. 하지만, Google Play Services가 포함된 앱은 IMEI를 수집하면 안됩니다. 이는 Google Play 정책 위반입니다.

다음 API를 사용하면 IMEI와 안드로이드 ID 수집을 옵트아웃할 수 있습니다.

AppsFlyerLib.getInstance().setCollectIMEI(false);
AppsFlyerLib.getInstance().setCollectAndroidID(false);

 주의

올바른 어트리뷰션을 위해서는 GAID, 안드로이드 ID, IMEI와 같은 기기 식별자가 적어도 하나 이상 수집되어야 합니다.

9. 옵션 기능

앱삭제 트래킹

AppsFlyer에서 앱삭제를 트래킹할 수 있습니다.

이 프로세스를 모두 정확하게 완료하기 위해서는 여기를 읽으세요.

Tracking Push Notifications

AppsFlyer는 리타게팅 캠페인의 하나로 푸쉬 알림을 측정할 수 있습니다.

이 기능을 사용하기 위해서는 알림을 클릭하면 실행되는 각 액티비티의 onCreate 메서드 안에서 다음 메서드를 호출하세요.

AppsFlyerLib.getInstance().sendPushNotificationData(this);

데이터 페이로드는 관련 키-값 스트링과 함께 오브젝트 af를 포함해야 합니다.

:

{  
   "data":{  
      "score":"5x1",
      "time":"15:10",
      "af":{  
         "c":"test_campaign",
         "is_retargeting":"true",
         "pid":"push_provider_int"
      }
   }
}
{

{  
   "data":{  
      "score":"5x1",
      "time":"15:10",
      "click_action":"com.example.someAction",
      "af":{  
         "c":"test_campaign",
         "is_retargeting":"true",
         "pid":"push_provider_int"
      }
   }
}

 참고

푸쉬 알림 측정에 대한 더 자세한 정보는 여기 읽으세요.

Cross Promotion Tracking

AppsFlyer는 사용자가 기존에 가지고 있던 앱 중 하나의 크로스 프로모션에서 발생한 인스톨을 트래킹하고 어트리뷰션을 측정할 수 있습니다. 크로스 프로모션 앱은 앱의 추가 인스톨을 유도하는 주요 성장 요소가 될 수 있습니다.

자세한 내용은 여기에서 크로스 프로모션을 확인할 수 있습니다.

사용자 초대 트래킹

AppsFlyer는 앱에서 초대한 사용자의 인스톨을 트래킹하고 어트리뷰션을 측정할 수 있습니다. 기존 사용자가 친구나 아는 사람을 앱의 신규 사용자로 초대하도록 하는 것은 앱의 추가 인스톨을 유도하는 핵심 성장 요소입니다.

자세한 내용은 여기에서 사용자 초대 트래킹을 확인할 수 있습니다.

Set Currency Code

다음 API를 사용하여 국제 통화 코드를 설정할 수 있고, AppsFlyer로 전송되는 인앱이벤트를 사용하여 특정 통화 코드를 설정할 수도 있습니다. 인앱이벤트로 af_currency가 전송되지 않으면

AFInAppEventParameterName.CURRENCY

국제 통화 코드가 사용됩니다.

기본값은 USD입니다. 사용 가능한 ISO 통화 코드는 여기에서 확인할 수 있습니다.

통화 코드를 설정하려면 다음 API를 사용하세요.

public void setCurrencyCode(String currencyCode);

사용 예:

AppsFlyerLib.getInstance().setCurrencyCode("GBP");

인앱 구매 검증

AppsFlyer SDK는 인앱 구매에 대해서 서버 확인 기능을 제공합니다. 구매 검증 트래킹을 설정하려면 onActivityResult function에서 validateAndTrackInAppPurchase 메서드를 호출합니다.

이 호출은 자동으로 af_purchase 인앱이벤트를 생성합니다.

public static void validateAndTrackInAppPurchase(Context context, 
String publicKey, String signature, String purchaseData, 
String price, String currency, HashMap<String, String> additionalParameters);

이 호출은 '성공'한 경우와 검증 실패 등의 원인으로 '실패'한 경우에 대한 두 개의 콜백 블록을 가집니다.

AppsFlyerLib.getInstance().registerValidatorListener(this,new
     AppsFlyerInAppPurchaseValidatorListener() {
          public void onValidateInApp() {
              Log.d(TAG, "Purchase validated successfully");
          }
          public void onValidateInAppFailure(String error) {
              Log.d(TAG, "onValidateInAppFailure called: " + error);
          }
});


사용 예:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (requestCode == 1001) {
       String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
       String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
       if (resultCode == RESULT_OK) {
           HashMap<String,String> event = new HashMap<>();
           event.put(AFInAppEventParameterName.PRICE,"9");
           AppsFlyerLib.getInstance().validateAndTrackInAppPurchase(getApplicationContext(),publicKey, dataSignature, purchaseData, "3.00", "ILS", event);
       }
   }
} 

 참고

Calling validateAndTrackInAppPurchase automatically generates an af_purchase in-app event. There is no need to send this event yourself.

사용자 데이터 익명 처리

Appsflyer에는 특정 사용자의 식별자를 AppsFlyer 분석에서 익명 처리하는 메소드가 있습니다. 이 메소드는 최신 개인 정보 보호 요구 사항을 준수하며 Facebook 데이터 및 개인 정보 보호 정책을 준수합니다. 디폴트값은 익명 처리를 하지 않는 No입니다.

사용자의 설치, 이벤트, 세션의 익명 처리를 확실하게 하기 위해서는 SDK를 초기화할 때 다음 API를 사용하세요.

public void setDeviceTrackingDisabled(boolean isDisabled);


사용 예:

AppsFlyerLib.getInstance().setDeviceTrackingDisabled(true);

deviceTrackingDisabledfalse로 설정하고 다시 호출하면, 트래킹을 다시 시작할 수 있습니다.

 주의

사용자를 익명 처리하면 어트리뷰션 정보에 심각한 영향을 줄 수 있습니다.사용자 정보 수집이 법적으로 금지된 지역에서만 이 옵션을 사용하세요.

세션 사이 시간의 사용자정의

By default, at least 5 seconds must lapse between 2 app launches to count as separate 2 sessions (more about counting sessions).
However, you can use the following API to set your custom value for the minimum required time between sessions:
AppsFlyerLib.setMinTimeBetweenSessions(int seconds);

Note that setting a high value to the custom time between launches may badly impact APIs relying on sessions data, such as deep linking.

유틸리티 앱을 위한 백그라운드 세션

백그라운드에서 작동하는 유틸리티 앱인 경우에는 액티비티의 onCreate() 안에서 다음 API를 사용할 수 있습니다.

public void reportTrackSession(Context context);


사용 예:

AppsFlyerLib.getInstance().reportTrackSession(context);

Track Out-of-Store Apps

 참고

기본 스토어는 Google Play입니다. 만약 Google Play에서만 앱을 출시하는 경우는 이 항목을 건너뜁니다.

Google Play가 아닌 곳에서의 설치를 트래킹하기 위해서는 앱의 AndroidManifest.xml 파일에서 고유의 채널 또는 스토어 이름을 각 APK별로 설정합니다. 채널 값은 대소문자를 구분합니다.

:

<meta-data android:name="CHANNEL" android:value="Amazon" />
<meta-data android:name="CHANNEL" android:value="Standalone"/>
<meta-data android:name="CHANNEL" android:value="Verizon" />

 참고

AppsFlyer 대시보드에서 앱을 설정할 때 채널 값을 구성해야 합니다.

meta-data 태그를 </application> 태그 앞에 놓습니다.

스토어를 통하지 않는 앱의 인스톨 트래킹에 대한 더 자세한 내용은 여기에서 확인하세요.

Opt-Out

극단적인 경우 법률 및 개인 정보 보호 준수를 위해서 모든 SDK 트래킹을 중지해야 할 수도 있습니다. 이 작업은 isStopTracking API를 사용하여 수행할 수 있습니다. 이 API가 호출되면, SDK는 서버와 더 이상 통신하지 않고 기능이 중지될 것입니다.

AppsFlyerLib.getInstance().stopTracking(true, context);

There are several different scenarios for user opt-out. We highly recommend following the exact instructions for the scenario, that is relevant for your app.

In any event, the SDK can be reactivated by calling the same API, by passing false.

 중요

isStopTrackingtrue로 설정된 경우 trackAppLaunch를 호출하지 마십시오.

stopTrackingfalse로 설정하고 나서 트래킹을 다시 시작하려면 다음 SDK API를 사용합니다.

AppsFlyerLib.getInstance().trackAppLaunch(getApplicationContext(), AF_DEV_KEY);

 주의

모든 트래킹에서 이 사용자를 완전히 무시하려는 경우에만 stopTracking API를 사용합니다. 이 API를 사용하면 보고서 및 어트리뷰션에 심각한 영향을 줄 수 있습니다.

고객 사용자 ID (Customer User ID)를 위한 SDK 초기화 지연

customerUserID가 설정될 때까지 SDK 초기화를 지연시킬 수 있습니다. 이 기능은 customerUserID를 얻기 전까지 SDK가 동작을 시작할 수 없도록 합니다. 이 API를 사용하면 customerUserID를 얻고 트래킹을 시작하기 전까지 모든 인앱이벤트 및 기타 SDK API 호출이 무시됩니다.

To indicate that the SDK should delay initialization for the customer user id call

AppsFlyerLib.getInstance().waitForCustomerUserId(true);

immediately before the init() method. The rest of the SDK initialization should remain unchanged.

Once the customerUserID has been provided, call

AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", this);

to provide the SDK with the relevant customer user id and trigger the SDK to begin its normal tracking.

코드는 다음과 같이 작성되어야 합니다.
public class AFApplication extends Application {
   private static final String AF_DEV_KEY = ;
   @Override
   public void onCreate() {
       super.onCreate();
       AppsFlyerConversionListener conversionDataListener = 
 new AppsFlyerConversionListener() {
           ...
       };
 AppsFlyerLib.getInstance().waitForCustomerUserId(true); 
       AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext());
 AppsFlyerLib.getInstance().startTracking(this);
       // customerUserID를 얻는 코드를 구현하세요. 
 // ...
 // 여기서 호출되는 모든 AppsFlyer SDK 코드는 무시됩니다.
 //customerUserID를 사용할 수 있게 되면 다음의 API를 호출하세요:
 AppsFlyerLib.getInstance().setCustomerIdAndTrack( "customer_id", this);⏎ }⏎}

 주의

이 API는 비즈니스 로직에 적합한 경우에만 사용하세요. 이 API를 사용하면 Discrepancy가 발생할 가능성이 커지고 앱이 fraud에 더 노출될 수도 있습니다.

추가 사용자 정의 데이터 설정

setAdditionalData API는 SDK 수준에서 Segment, Adobe 및 Urban Airship과 같은 몇몇 외부 파트너 플랫폼과 연동할 때 필요합니다. 이 API는 해당 플랫폼의 연동 관련 문서에서 setAdditionalData API가 필요하다고 특별히 명시된 경우에만 사용하세요.다음은 안드로이드에서 setAdditionalData를 구현하는 예시 코드입니다.

HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("custom_param_1","value_of_param_1");
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);

사전 설치된 앱의 어트리뷰션

사전 설치된 앱의 안드로이드 어트리뷰션을 위한 몇 가지 방법이 있습니다.

더 자세한 내용을 보려면 여기를 클릭하세요.

Setting a Tracking Request Listener

If you want to receive a confirmation that the tracking request was successfully received by the AppsFlyer servers, it is possible to implement the AppsFlyerTrackingRequestListener listener.

The onTrackingRequestSuccess() callback method is invoked for every 200 response to an attribution request made by the SDK.

The onTrackingRequestFailure(String error) callback method is invoked for any other response and returns the response as the error string.

Implementation Example

AppsFlyerLib.getInstance().startTracking(this.getApplication(),"devKey", myListener());
private AppsFlyerTrackingRequestListener myListener() {   
    return new AppsFlyerTrackingRequestListener() {  
        @Override public void onTrackingRequestSuccess() { 
            Log.d("Debug", "Got 200 response from server");    
        }   @Override public void onTrackingRequestFailure(String error) { 
            Log.d("Debug", error); 
            }   
        }; 
    }

10. SDK 연동 테스트

Google Play 스토어에 제출하기 전이나 제출한 후에 SDK 연동을 테스트하려면 여기를 클릭하세요.

Now you can start tracking the media sources you work with.

11. 알려진 문제

ProGuard를 사용하고 있으며 AFKeystoreWrapper 클래스에 관한 경고를 받았다면, ProGuard 규칙 파일에 다음 코드를 추가하세요.

-keep class com.appsflyer.** { *; }
도움이 되었습니까?
19명 중 17명이 도움이 되었다고 했습니다.

댓글

댓글 0개

댓글을 남기려면 로그인하세요.