Tích hợp SDK
Tìm hiểu cách khởi tạo và khởi động SDK Android.
Được đề xuất
Get started with our SDK integration wizard
- Bạn phải cài đặt SDK Android.
- Đảm bảo rằng tệp tin
build.gradle
trong ứng dụng của bạn,applicationId
giá trị (trong khốidefaultConfig
) khớp với ID ứng dụng của ứng dụng trong AppsFlyer. - Lấy dev key của AppsFlyer. Bắt buộc phải có dev key này để khởi tạo thành công SDK.
Khởi tạo SDK Android
Bạn nên khởi tạo SDK trong lớp/lớp con Ứng dụng toàn cầu. Điều đó nhằm đảm bảo SDK có thể khởi động trong bất cứ trường hợp nào (ví dụ: liên kết sâu).
Bước 1: Nhập AppsFlyerLib
Trong lớp Ứng dụng toàn cầu của bạn, hãy nhập AppsFlyerLib
:
import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerLib
Bước 2: Khởi tạo SDK
Trong Ứng dụng toàn cầu onCreate
, call init
với các đối số sau:
AppsFlyerLib.getInstance().init(<YOUR_DEV_KEY>, null, this);
AppsFlyerLib.getInstance().init(<YOUR_DEV_KEY>, null, this)
- Đối số đầu tiên là dev key AppsFlyer của bạn.
- Đối số thứ hai có thể là Rỗng
AppsFlyerConversionListener
. Nếu không cần dữ liệu chuyển đổi, bạn nên chuyểnnull
làm đối số thứ hai. Để biết thêm thông tin, hãy xem Dữ liệu chuyển đổi. - Đối số thứ ba là Ngữ cảnh Ứng dụng.
Khởi động SDK Android
Trong phương thức onCreate
của Ứng dụng, sau khi gọi ra init
, call start
và chuyển cho nó Bối cảnh của Ứng dụng làm đối số đầu tiên:
AppsFlyerLib.getInstance().start(this);
AppsFlyerLib.getInstance().start(this)
Deferring SDK start
Tùy chọn
Bạn có thể trì hoãn quá trình khởi tạo SDK bằng cách gọi ra start
từ một lớp Hoạt động, thay vì gọi ra trong lớp Ứng dụng. init
sẽ vẫn được gọi ra trong lớp Ứng dụng.
Cách sử dụng điển hình của khởi động SDK trì hoãn là khi một ứng dụng cần yêu cầu quyết định đồng ý của người dùng để thu thập dữ liệu trong Hoạt động Chính và gọi ra start
sau khi nhận được sự đồng ý của người dùng.
Thông báo quan trọng
Nếu ứng dụng gọi
start
từ một Hoạt động, Ngữ cảnh Hoạt động sẽ được chuyển tới SDK.
Việc không chuyển ngữ cảnh hoạt động sẽ không kích hoạt SDK, do đó làm mất dữ liệu phân bổ và sự kiện trong ứng dụng.
Starting with a response listener
Để nhận được xác nhận rằng SDK đã được khởi động thành công, hãy tạo một đối tượng AppsFlyerRequestListener
và chuyển nó làm đối số thứ ba của 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()
phương thức gọi lại được gọi ra cho mỗi phản hồi200
đối với yêu cầu phân bổ do SDK thực hiện. - The
onError(String error)
phương thức gọi lại được gọi ra cho bất kỳ phản hồi nào khác và trả về phản hồi dưới dạng chuỗi lỗi.
Ví dụ đầy đủ
Ví dụ sau đây trình bày cách khởi tạo và khởi động SDK từ lớp Ứng dụng.
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)
// ...
}
// ...
}
Setting the Customer User ID
Tùy chọn
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
.
Quan trọng
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.
Example code
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
Gọi ra 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
.
Bật chế độ gỡ lỗi
Tùy chọn
Bạn có thể bật nhật ký gỡ lỗi bằng cách gọi ra setDebugLog
:
AppsFlyerLib.getInstance().setDebugLog(true);
AppsFlyerLib.getInstance().setDebugLog(true)
Lưu ý
Để xem toàn bộ nhật ký gỡ lỗi, hãy gọi ra
setDebugLog
trước khi gọi ra các phương thức SDK khác.Xem ví dụ.
cảnh báo
Để tránh rò rỉ thông tin nhạy cảm, hãy đảm bảo rằng nhật ký gỡ lỗi đã được tắt trước khi phân bố ứng dụng.
Thử nghiệm tích hợp
Tùy chọn
Để được hướng dẫn kiểm tra tích hợp chi tiết, hãy xem phần hướng dẫn kiểm tra tích hợp SDK Android.
Đã cập nhật 4 ngày trước