SDK 연동

안드로이드 SDK를 초기화하고 시작하는 방법을 배웁니다.

시작하기 전에

  • 안드로이드 SDK를 인스톨해야 합니다.
  • 확인할 것은 앱 build.gradle 파일에서 applicationId의 값( defaultConfig 블록에서)은 앱스플라이어의 앱 ID와 일차하는 가 하는 것입니다.
  • 앱스플라이어 dev key를 받습니다. SDK를 성공적으로 초기화하기 위해 필요합니다.
  • 이 문서의 코드는 예제로 구현한 것입니다. 필요에 따라 <YOUR_DEV_KEY> 및 기타 자리 표시자를 변경해야 합니다.
  • 달리 언급하지 않는 한, 이 문서의 모든 단계는 필수 단계입니다.

안드로이드 SDK 초기화하기

글로벌 애플리케이션 클래스/하위클래스 내에서 SDK를 초기화하는 것이 권장됩니다. 이는 SDK가 임의의 시나리오(예를 들면, 딥 링크)에서 시작할 수 있도록 보장하기 위한 것입니다.

1단계: AppsFlyerLib 불러오기
글로벌 애플리케이션 클래스에서 다음을 가져옵니다: AppsFlyerLib:

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

2단계: SDK 초기화하기
글로벌 애플리케이션에서 onCreate, call init 다음 인수 사용:

AppsFlyerLib.getInstance().init(<YOUR_DEV_KEY>, null, this);
AppsFlyerLib.getInstance().init(<YOUR_DEV_KEY>, null, this)
  1. 첫 인수는 귀하의 앱스플라이어 dev key입니다.
  2. 두 번째 인수는 null 입력이 가능한 AppsFlyerConversionListener입니다. 변환 데이터가 필요하지 않다면 두 번째 인수로 null 를 전달하는 것이 좋습니다. 더 자세한 정보는 전환 데이터를 참조하십시오.
  3. 세 번째 인수는 애플리케이션 컨텍스트입니다.

안드로이드 SDK 시작하기

애플리케이션의 onCreate 메서드에서 init, call start 을 호출한 후에 애플리케이션의 컨텍스트를 첫 번째 인수로 전달합니다:

AppsFlyerLib.getInstance().start(this);
AppsFlyerLib.getInstance().start(this)

Deferring SDK start

선택 가능
애플리케이션 클래스에서 호출하는 대신 액티비티 클래스에서 start 를 호출하여 SDK 초기화를 연기할 수 있습니다. init 는 여전히 애플리케이션 클래스에서 호출해야 합니다.

디퍼드 SDK 는 앱시작은 일반적으로 기본 의 데이액티비티에서 수집을 위해 사용자에게 동의를 요청하고 사용자의 동의를 얻은 후 start 에 전화를 걸 때 사용됩니다.

⚠️

중요 공지

앱이 액티비티에서 start 를 호출하는 경우, 액티비티 컨텍스트를 SDK로 전달해야 합니다.
액티비티 컨텍스트를 전달하지 못하면 SDK가 트리거되지 않으므로 어트리뷰션 데이터 및 인앱이벤트가 손실됩니다.

Starting with a response listener

SDK가 성공적으로 시작되었음을 확인하려면 AppsFlyerRequestListener 객체를 생성하여 start:

AppsFlyerLib.getInstance().start(getApplicationContext(), <YOUR_DEV_KEY>, new AppsFlyerRequestListener() {
  @Override
  public void onSuccess() {
    Log.d(LOG_TAG, "Launch sent successfully, got 200 response code from server");
  }
  
  @Override
  public void onError(int i, @NonNull String s) {
    Log.d(LOG_TAG, "Launch failed to be sent:\n" +
          "Error code: " + i + "\n"
          + "Error description: " + s);
  }
});
AppsFlyerLib.getInstance().start(this, <YOUR_DEV_KEY>, object : AppsFlyerRequestListener {
  override fun onSuccess() {
    Log.d(LOG_TAG, "Launch sent successfully")
    }
  
  override fun onError(errorCode: Int, errorDesc: String) {
    Log.d(LOG_TAG, "Launch failed to be sent:\n" +
          "Error code: " + errorCode + "\n"
          + "Error description: " + errorDesc)
    }
})
  • The onSuccess() 콜백 메서드의 세 번째 인수가 SDK에 의해 생성된 속성 요청에 대한 모든 200 응답에 대해 호출될 때 전달하십시오.
  • The onError(String error) 콜백 메서드가 다른 응답에 대해 호출되고 오류 메시지를 반환합니다.

전체 예제

다음 예제에서는 애플리케이션 클래스에서 SDK를 초기화하고 시작하는 방법을 설명합니다.

import android.app.Application;
import com.appsflyer.AppsFlyerLib;
// ...
public class AFApplication extends Application {
    // ...
    @Override
    public void onCreate() {
        super.onCreate();
        // ...
        AppsFlyerLib.getInstance().init(<YOUR_DEV_KEY>, null, this);
        AppsFlyerLib.getInstance().start(this);
        // ...
    }
    // ...
}
import android.app.Application
import com.appsflyer.AppsFlyerLib
// ...
class AFApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        // ...
        AppsFlyerLib.getInstance().init(<YOUR_DEV_KEY>, null, this)
        AppsFlyerLib.getInstance().start(this)
        // ...
    }
    // ...
}

Github 링크

고객 사용자 ID 설정

선택 가능

The Customer User ID (CUID) is a unique user identifier created by the app owner outside the SDK. It can be associated with in-app events if provided to the SDK. Once associated with the CUID, these events can be cross-referenced with user data from other devices and applications.

Set the customer User ID

Once the CUID is available, you can set it by calling  setCustomerUserId.


...
AppsFlyerLib.getInstance().init(<YOUR_DEV_KEY>, conversionListener, this);  
AppsFlyerLib.getInstance().start(this , <YOUR_DEV_KEY> );
...
// Do your magic to get the customerUserID...
...
AppsFlyerLib.getInstance().setCustomerUserId(<MY_CUID>);

The CUID can only be associated with in-app events after it was set. Since start was called before setCustomerUserID, the install event will not be associated with the CUID. If you need to associate the install event with the CUID, see the below section.

Associate the CUID with the install event

If it’s important for you to associate the install event with the CUID, you should set it before calling start.

You can set the CUID before start in two ways, depending on whether you start the SDK in the Application or the Activity class.

When starting from the application class

만일 Application class (see: Starting the Android SDK) and you want the CUID to be associated with the install event, put the SDK in waiting mode to prevent the install data from being sent to AppsFlyer before the CUID is provided.

To activate the waiting mode, set waitForCustomerUserId to true after init and before start.

📘Important

It's important to remember that putting the SDK in a waiting mode may block the SDK from sending the install event and consequently prevent attribution. This can occur, for example, when the user launches the application for the first time and then exits before the SDK can set the CUID.

AppsFlyerLib.getInstance().init(<YOUR_DEV_KEY>, getConversionListener(), getApplicationContext());
AppsFlyerLib.getInstance().waitForCustomerUserId(true);
AppsFlyerLib.getInstance().start(this);

사용자가 start, you can add your custom code that makes the CUID available.

Once the CUID is available, the final step includes setting the CUID, releasing the SDK from the waiting mode, and sending the attribution data with the customer ID to AppsFlyer. This step is performed using the call to setCustomerIdAndLogSession.

AppsFlyerLib.getInstance().setCustomerIdAndLogSession(<CUSTOMER_ID>, this);

이 setCustomerIdAndLogSession기능 외에 setCustomerUserId 또는 다른 앱스플라이어 SDK 기능은 대기 중인 SDK가 이를 무시하므로 사용하지 마십시오.

Note

If you wish to remove the waiting mode from the SDK initialization flow, it is not enough to delete the call to waitForCustomerUserId(true)에 대한 호출을 삭제하는 것만으로는 충분하지 않습니다. 이것을 waitForCustomerUserID(false)로 교체해야 합니다. 호출을 제거하는 것만으로는 'waitForCustomerUserId' 부울 플래그가 Android Shared Preferences에 저장되므로 충분하지 않습니다.

예제 코드

public class AFApplication extends Application {
  @Override
  public void onCreate() {
    super.onCreate();
    AppsFlyerConversionListener conversionDataListener = 
    new AppsFlyerConversionListener() {
      ...
    };
    AppsFlyerLib.getInstance().init(<YOUR_DEV_KEY>, getConversionListener(), getApplicationContext());
    AppsFlyerLib.getInstance().waitForCustomerUserId(true);
    AppsFlyerLib.getInstance().start(this);
    // Do your magic to get the customerUserID
    // any AppsFlyer SDK code invoked here will be discarded
    // ...
    // Once the customerUserID is available, call setCustomerIdAndLogSession(). 
    // setCustomerIdAndLogSession() sets the CUID, releases the waiting mode,
    // and sends the attribution data with the customer ID to AppsFlyer.
    AppsFlyerLib.getInstance().setCustomerIdAndLogSession(<CUSTOMER_ID>, this);
  }
}

When starting from the Activity class

만일 Activity (see: Deferring SDK start) class and you want the CUID to be associated with the install event, set the CUID beforestart.

Log sessions

The SDK sends an af_app_opened message whenever the app is opened or brought to the foreground. Before the message is sent, the SDK makes sure that the time passed since sending the last message is not smaller than a predefined interval.

Setting the time interval between app launches

통화 setMinTimeBetweenSessions to set the minimal time interval that must lapse between two af_app_opened messages. The default interval is 5 seconds.

Logging sessions manually

You can log sessions manually by calling logSession.

디버그 모드 활성화하기

선택 가능
다음을 호출하여 디버그 로그를 사용할 수 있습니다: setDebugLog:

AppsFlyerLib.getInstance().setDebugLog(true);
AppsFlyerLib.getInstance().setDebugLog(true)

📘

참고

전체 디버그 로그를 보려면 다음 메서드를호출하십시오: setDebugLog 를 설정해야 합니다.

를 참조하십시오.

🚧

경고

민감한 정보의 누출을 방지하려면 앱을 배포하기 전에 디버그 로그를 비활성화하십시오.

연동 테스트하기

선택 가능
자세한 연동 테스트 지침은 안드로이드 SDK 연동 테스트 가이드를 참조하십시오.