SDKの実装
Android SDKを初期化し開始する方法を説明します。
始める前に
Get started with our SDK integration wizard
- Android SDKをインストールする必要があります
- Ensure that in your app
build.gradle
file,applicationId
's value (in thedefaultConfig
block) matches the app's app ID in AppsFlyer. - AppsFlyer Devキーを取得してください。SDKを正常に初期化するために必要です
Android SDKの初期化
グローバルApplicationクラス/サブクラス内でSDKを初期化することをお勧めします。これにより、全てのシナリオ(例:ディープリンク)でSDKが開始できます。
ステップ1:AppsFlyerLibのインポート
In your global Application class, import AppsFlyerLib
:
import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerLib
ステップ2:SDKの初期化
In the global Application onCreate
, call init
with the following arguments:
AppsFlyerLib.getInstance().init(<YOUR_DEV_KEY>, null, this);
AppsFlyerLib.getInstance().init(<YOUR_DEV_KEY>, null, this)
- 第一引数には、AppsFlyer Devキーを指定してください。
- The second argument is a Nullable
AppsFlyerConversionListener
. If you don't need conversion data, we recommend passing anull
as the second argument. For more information, see Conversion data. - 第三引数にはApplication Contextを指定します。
Android SDKの開始
In the Application's onCreate
method, after calling init
, call start
and pass it the Application's Context as the first argument:
AppsFlyerLib.getInstance().start(this);
AppsFlyerLib.getInstance().start(this)
Deferring SDK start
オプション
You can defer the SDK initialization by calling start
from an Activity class, instead of calling it in the Application class. init
should still be called in the Application class.
Typical usage of deferred SDK start is when an app would like to request consent from the user to collect data in the Main Activity, and call start
after getting the user's consent.
重要なお知らせ
アプリがアクティビティから
start
を呼び出す場合は、アクティビティコンテキストをSDKに渡す必要があります。
アクティビティコンテキストを渡さないと、SDKがトリガーされないため、アトリビューションデータとアプリ内イベントが失われます。
Starting with a response listener
To receive confirmation that the SDK was started successfully, create an AppsFlyerRequestListener
object and pass it as the third argument of 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()
callback method is invoked for every200
response to an attribution request made by the SDK. - The
onError(String error)
callback method is invoked for any other response and returns the response as the error string.
例
次の例は、Applicationクラスから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)
// ...
}
// ...
}
カスタマーユーザー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
If you started the SDK from the 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
.
重要
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);
After calling 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);
Other than setCustomerIdAndLogSession
, do not use setCustomerUserId
or any other AppsFlyer SDK functionality, as the waiting SDK will ignore it.
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)
. It is also required to replace it with waitForCustomerUserID(false)
. Simply removing the call is insufficient because the 'waitForCustomerUserId' boolean flag is stored in the 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
If you started the SDK from an 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
Call 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
.
デバッグモードの有効化
オプション
You can enable debug logs by calling setDebugLog
:
AppsFlyerLib.getInstance().setDebugLog(true);
AppsFlyerLib.getInstance().setDebugLog(true)
注意
To see full debug logs, make sure to call
setDebugLog
before invoking other SDK methods.例を参照してください。
警告
機密情報の漏洩を防ぐため、アプリをリリースする前にデバッグログが無効になっていることを確認してください。
連携のテスト
オプション
連携テストの詳細な手順は、Android SDK連携テストガイドに関する記事を参照してください。
更新済 2か月前