Tích hợp AppsFlyer SDK - Android

android.pngSDK Version:  4.8.9 (Release Notes)

1. Tổng quan

SDK của AppsFlyer cung cấp chức năng cài đặt ứng dụng và theo dõi sự kiện. Chúng tôi đã phát triển được một SDK rất mạnh mẽ (đến nay đã có hơn 7 tỷ lượt cài đặt SDK), an toàn, nhẹ và dễ dàng nhúng.

Bạn có thể theo dõi lượt cài đặt, cập nhật và các phiên làm việc, cũng như theo dõi thêm các sự kiện khác trong ứng dụng, chứ không chỉ các lượt cài đặt ứng dụng (bao gồm các hoạt động mua hàng trong ứng dụng, cấp độ trò chơi, v.v.) để đánh giá lợi tức đầu tư (ROI) và mức độ tham gia của người dùng.

AppsFlyer Android SDK tương thích với Android 2.3 trở lên.

Nếu bạn chuyển từ Android SDK V.3.3.x của AppsFlyer hãy nhấp vào đây.

2. Bắt đầu nhanh

2.1 Tải xuống SDK

Để tải tập tin Android SDK jar, hãy nhấp vào đây.

Để biết chi tiết về Ứng dụng mẫu của AppsFlyer, hãy nhấp vào đây.

2.2 Nhúng SDK vào ứng dụng

Bạn có thể tích hợp SDK của AppsFlyer tự động bằng cách sử dụng Gradle's Dependency Management hoặc theo cách thủ công dưới dạng SDK.jar.

2.3 Thêm SDK vào dự án

Cách đơn giản nhất để tích hợp SDK vào dự án của bạn là sử dụng Gradle's Dependency Management . Bạn có thể tìm thông tin phiên bản tại đây.

Nếu không sử dụng Gradle, hãy tải xuống và thêm AF-Android-SDK.jar vào đường dẫn lớp của dự án.

Thêm Sự phụ thuộc Android SDK của AppsFlyer:

  1.  Mở dự án của bạn (hoặc tạo dự án mới), sau đó mở your_app | build.gradle
  2.  Thêm phần này vào /app/build.gradle cấp độ mô-đun trước các phần phụ thuộc:
repositories {
mavenCentral()
}


Add the compile dependency with the latest version of the AppsFlyer SDK in the 
build.gradle file: 

dependencies {
compile 'com.appsflyer:af-android-sdk:4+@aar'
compile 'com.android.installreferrer:installreferrer:1.0'
}

 Quan trọng!

  • Phải có sự phụ thuộc 'com.android.installreferrer:installreferrer:1.0' để hỗ trợ Play Install referrer API của Google. Sử dụng API sẽ cải thiện độ chính xác của thuộc tính, bảo vệ khỏi lừa đảo cài đặt và nhiều hành vi lừa gạt khác.
  • API này được hỗ trợ từ Android SDK phiên bản 4.8.6 trở đi của AppsFlyer. Nếu cập nhật từ phiên bản SDK cũ hơn, hãy hoàn thành việc tích hợp sự phụ thuộc mới này bằng cách cập nhật phương thức init của SDK.
  • Các nhà phát triển đang sử dụng ProGuard và muốn sử dụng referrer API mới của Google phải thiết lập các quy tắc ProGuard sau:
    -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 Thiết lập các quyền bắt buộc

AndroidManifest.xml nên bao gồm các quyền sau đây:

<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 Thiết lập BroadcastReceiver trong AndroidManifest.xml

Hai lựa chọn sau đây khả dụng để thực hiện bộ thu truyền phát tham chiếu cài đặt:

Sử dụng Single Broadcast Receiver Sử dụng Multiple Broadcast Receiver

Nếu bạn không có bộ phận thu nhận nghe trên INSTALL_REFERRER, trong AndroidManifest.xml, hãy thêm thành phần thu nhận sau đây bên trong application tag:

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

3. Khởi tạo SDK

Initialization of the SDK is completed in two stages. In the first stage the DevKey is supplied along with your app ID and 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.

Để khởi tạo SDK, hãy thêm đoạn mã sau vào chức năng Application onCreate():

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

 Lưu ý

Ngoài ra, bạn có thể trì hoãn việc gọi startTracking và đặt nó vào trong chức năng Activity OnCreate() thích hợp bất kỳ.

 Lời khuyên

The following dependancy: compile 'com.android.installreferrer:installreferrer:1.0' And the getApplicationContext() passed in the following method: AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext()); are the prerequisite for reporting Google's New Referrer API to AppsFlyer.

Bạn có thể truy cập dev key từ Bảng điều khiển AppsFlyer trong phần Configuration bên trong App Settings:

API này cho phép AppsFlyer phát hiện các cài đặt, phiên làm việc và cập nhật.

4. Theo dõi sự kiện trong ứng dụng

Sự kiện trong ứng dụng cung cấp thông tin chi tiết về những gì đang xảy ra trong ứng dụng của bạn. Bạn nên dành thời gian định nghĩa các sự kiện mà bạn muốn đo lường để cho phép theo dõi ROI (Lợi tức đầu tư) và LTV (Giá trị vòng đời khách hàng).

Theo dõi các sự kiện trong ứng dụng bằng cách gọi trackEvent bằng tên sự kiện và các tham số giá trị. Xem tài liệu Sự kiện trong ứng dụng để biết thêm chi tiết.

 Lưu ý

Tên của Sự kiện trong ứng dụng không được dài quá 45 ký tự. Tên sự kiện dài hơn 45 ký tự sẽ không xuất hiện trong bảng điều khiển, mà chỉ xuất hiện trong Dữ liệu thô, Pull và Push API (API Kéo và Đẩy).

//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);


Example
: Level Achieved In-App Event

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);
 

This generates an event of type af_level_achieved with the following event values:
{af_level: 9, af_score: 100}

 Lưu ý

AppsFlyer supports non-English characters with in-app events, or with any other SDK API, starting from Android SDK version 4.8.1.

5. Theo dõi Liên kết sâu (Deep Linking)

 Lời khuyên

Chúng tôi đặc biệt khuyên bạn nên tích hợp Liên kết sâu trong ứng dụng của bạn. Liên kết sâu là một phần quan trọng của các chiến dịch xác định lại mục tiêu và rất được khuyên dùng khi chạy các chiến dịch xác định lại mục tiêu.

Với từng hoạt động có thể dùng cho liên kết sâu (bao gồm cả hoạt động chính, nếu cần), hãy thêm dòng sau trong onCreate():

AppsFlyerLib.getInstance().sendDeepLinkData(this);

Các hoạt động sẽ được mở bằng liên kết sâu nên có bộ lọc mục đích bên dưới cho các định nghĩa hoạt động trong tập tin manifest. 

<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>


The 
Scheme configured correlates with the af_dp value you include in your tracking link.

Để nhận dữ liệu liên kết sâu, bạn phải thực hiện việc gọi lại onAppOpenAttribution do AppsFlyer SDK gọi.  Nó sẽ trả về các tham số Onelink/liên kết theo dõi được dùng để kích hoạt ứng dụng mở. Sau đó, bạn có thể phân tích các giá trị và áp dụng logic để kích hoạt trang ứng dụng thích hợp.

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

Để biết thêm chi tiết, hãy nhấp vào đây, hoặc xem lại phần Get Conversion Data của bài viết này.

6. Theo dõi doanh thu

Use the af_revenue (AFInAppEventParameterName.REVENUE) event parameter to count revenue as part of an in-app event. You can populate it with any numeric value, positive or negative.

 Lưu ý

af_revenue is the ONLY event parameter that is counted on AppsFlyer as real revenue on the raw data and dashboard. For more details please click here.

Ví dụ: Sự kiện trong ứng dụng Doanh thu

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(context,AFInAppEventType.PURCHASE,eventValue);

Phần này tạo ra sự kiện loại af_purchase với các giá trị sự kiện sau đây:

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

Sự kiện mua ở trên có doanh thu $200, xuất hiện dưới dạng doanh thu trong bảng điều khiển. 

 Lưu ý

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

You can set the currency code for all events by calling the following method: AppsFlyer.setCurrencyCode("GBP");

7. Lấy dữ liệu chuyển đổi

AppsFlyer cho phép bạn truy cập dữ liệu thuộc tính người dùng trong thời gian thực cho mỗi cài đặt mới, trực tiếp từ cấp độ SDK. Bằng cách này, bạn có thể cung cấp cho người dùng nội dung được cá nhân hoá hoặc gửi họ đến các hoạt động cụ thể trong ứng dụng, việc này có thể cải thiện tương tác của họ với ứng dụng của bạn.

Để truy cập dữ liệu chuyển đổi của AppsFlyer từ Android , hãy thực hiện ConversionDataListener:

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


Example:

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. Bộ định danh người dùng

Nhận ID thiết bị AppsFlyer

ID thiết bị riêng của AppsFlyer được tạo cho mỗi lần cài đặt mới của ứng dụng. Hãy sử dụng API sau đây để thu được ID riêng của AppsFlyer:

public String getAppsFlyerUID(Context context);


Usage Example:

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

Thiết lập ID người dùng Customer User ID

Thiết lập customer ID riêng cho phép bạn tham chiếu ID riêng của bạn với ID riêng của AppsFlyer và ID khác của thiết bị. ID này hiển thị trong các báo cáo CSV của AppsFlyer cùng với các Postback API để tham chiếu với các ID nội bộ của bạn.

Để thiết lập ID người dùng Customer User ID:

public void setCustomerUserId(String id);


Usage Example:

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

 Lưu ý

customerUserID NÊN được thiết lập trước trackAppLaunch. Bạn nên thiết lập Customer User ID ngay khi có thể bởi ID này chỉ liên kết với các sự kiện được báo cáo sau khi thiết lập ID. Customer User ID cũng có thể được dùng để hoàn thành việc tích hợp với các nền tảng Phân tích như MixpanelSwrve.

Để biết thêm thông tin về Customer User ID, nhấp vào đây.

Thiết lập Email người dùng

AppsFlyer cho phép bạn báo cáo một hoặc nhiều địa chỉ email được liên kết của thiết bị. Bạn phải thu thập các địa chỉ email và báo cáo cho AppsFlyer theo phương thức mã hóa yêu cầu của bạn.

Các phương thức mã hóa khả dụng là: SHA1, MD5, SHA256 và thuần túy.

Ví dụ:

public void setUserEmails(String... emails);


Usage Example:

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

 Lưu ý

Thông tin Nhận dạng Cá nhân (PII), chẳng hạn như các địa chỉ email không được AppsFlyer giữ lại và thông tin này không xuất hiện trong bất kỳ báo cáo nào. Thông tin này chỉ được thu thập nhằm mục đích gửi dữ liệu đến nguồn phương tiện truyền thông.

ID quảng cáo Google

Kể từ SDK phiên bản 4.8.0, AppsFlyer tự động thu thập google_advertising_id. Yêu cầu thu thập ID Quảng cáo Google chỉ tương thích với SDK phiên bản 4.7.X trở xuống.

IMEI và Android ID

By default, IMEI and Android ID are not collected by the SDK if the OS version is higher than KitKat (4.4) and the device contains Google Play Services (on SDK versions 4.8.8 and below the specific app needed GPS). 

Để gửi một cách rõ ràng các ID này tới AppsFlyer, nhà phát triển có thể sử dụng các API sau:

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

If the app does NOT contain Google Play Services, the IMEI and Android ID are collected by the SDK. However, apps with Google play services should avoid IMEI collection as this is in violation of the Google Play policy.

Nhà phát triển có thể chọn không tham gia thu thập IMEI và Android ID bằng cách sử dụng các API này:

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

 Cảnh báo

Phải thu thập ít nhất một mã nhận dạng thiết bị, GAID, Android ID hoặc IMEI để đảm bảo phân bổ thuộc tính đúng.

9. Tính năng tùy chọn

Theo dõi Gỡ cài đặt

AppsFlyer cho phép bạn theo dõi hoạt động gỡ cài đặt ứng dụng.

Để hoàn thành quy trình này chính xác và đầy đủ, bạn phải đọc thông tin tại đây.

Theo dõi Thông báo đẩy 

AppsFlyer cho phép bạn đo số lượng thông báo đẩy như một phần của chiến dịch xác định lại mục tiêu.

Để kích hoạt tính năng này, hãy gọi các phương thức tiếp theo bên trong phương thức onCreate của mọi Hoạt động sẽ được khởi chạy sau khi nhấp vào thông báo:

AppsFlyerLib.getInstance().sendPushNotificationData(this);

Tải trọng dữ liệu nên bao gồm một đối tượng: af với chuỗi giá trị khóa thích hợp:

Ví dụ:

\"data\": { \"score\": \"5x1\", \"time\": \"15:10\" , \"af\" : { \"c\" : \"test_campaign\" , \"is_retargeting\" : \"true\" , \"pid\" : \"push_provider_int\" } } }"[with deep-linking] \"data\": { \"score\": \"5x1\", \"time\": \"15:10\", \"click_action\" : \"com.example.someAction\" , 
\"af\" : { \"c\" : \"test_campaign\" , \"is_retargeting\" : \"true\" , \"pid\" : \"push_provider_int\" } } }"

 Lưu ý

Để biết thêm thông tin về đo số lượng thông báo đẩy, hãy đọc tại đây.

Theo dõi Quảng cáo chéo 

AppsFlyer allows you to track and attribute installs originating from a cross promotion of one of your apps from within the current app the user has. Cross promoting apps can be a major growth factor in driving additional installs for your apps.

For details, see the Cross Promotion Tracking article, here.

Theo dõi mời người dùng

AppsFlyer allows you to track and attribute installs originating from user invites within your app. Allowing your existing users to invite their friends and contacts as new users to your app can be a key growth factor for your app.

For details, see the User Invite Tracking article, here.

Thiết lập mã tiền tệ 

Bạn có thể thiết lập một mã tiền tệ chung bằng cách sử dụng API dưới đây, bổ sung cho các mã tiền tệ cụ thể có thể được sử dụng như một phần của từng sự kiện trong ứng dụng được gửi đến AppsFlyer. Mã tiền tệ chung được sử dụng khi af_currency

AFInAppEventParameterName.CURRENCY

không được gửi như một phần của sự kiện trong ứng dụng.

USD là giá trị mặc định. Bạn có thể tìm các mã ISO được chấp nhận tại đây.

Sử dụng API sau đây để thiết lập mã tiền tệ:

public void setCurrencyCode(String currencyCode);

Ví dụ cách dùng:

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

Xác nhận mua hàng trong ứng dụng

SDK của AppsFlyer cung cấp xác minh máy chủ cho các hoạt động mua hàng trong ứng dụng. Để thiết lập theo dõi xác minh mua hàng, hãy gọi phương thức validateAndTrackInAppPurchase bên trong chức năng onActivityResult .

Phần gọi này tự động tạo ra sự kiện trong ứng dụng af_purchase.

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

Phần gọi này có hai khối gọi lại, một cho 'Thành công' và một cho 'Thất bại' (vì lý do bất kỳ, bao gồm cả xác minh thất bại).

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);
         }
     });


Usage Example:

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);
      }
  }
} 

Anonymize User Data

AppsFlyer provides you with a method to anonymize specific user identifiers in AppsFlyer analytics. This method complies with the latest privacy requirements and complies with Facebook data and privacy policies. Default is NO, meaning no anonymization is performed by default.

Use this API during the SDK Initialization to explicitly anonymize a user's installs, events and sessions:

public void setDeviceTrackingDisabled(boolean isDisabled);


Usage Example:

AppsFlyerLib.getInstance().setDeviceTrackingDisabled(true);

Có thể khởi động lại việc theo dõi bằng cách gọi lại deviceTrackingDisabled được thiết lập là false.

 Cảnh báo

Anonymizing users SEVERELY impacts your attribution information.
Use this option ONLY for regions which legally prevents you from collecting your users' information.

Tùy chỉnh thời gian giữa các phiên

Để AppsFlyer đếm hai phiên riêng biệt, thời gian mặc định giữa mỗi phiên phải tối thiểu là 5 giây. Một phiên bắt đầu khi người dùng mở ứng dụng. Nếu bạn muốn cấu hình một khoảng thời gian khác nhau giữa các phiên, hãy sử dụng API sau đây: AppsFlyerLib.setMinTimeBetweenSessions(int seconds);

Phiên chạy nền cho ứng dụng tiện ích

Nếu ứng dụng của bạn là một ứng dụng tiện ích chạy dưới nền, bạn có thể sử dụng API này trong onCreate()- của hoạt động của bạn

public void reportTrackSession(Context context);


Usage Example:

AppsFlyerLib.getInstance().reportTrackSession(context);

Theo dõi ứng dụng không có trong cửa hàng 

 Lưu ý

Google Play là cửa hàng mặc định. Nếu bạn chỉ phát hành ứng dụng trên Google Play, hãy bỏ qua phần này.

Để theo dõi tiến trình cài đặt ngoài Google Play, hãy thiết lập kênh/cửa hàng tại AndroidManifest.xml của ứng dụng với một kênh duy nhất hoặc bất kỳ tên cửa hàng nào cho từng APK. Giá trị CHANNEL có phân biệt chữ hoa, chữ thường.

Ví dụ:

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

 Lưu ý

Bạn phải cấu hình giá trị CHANNEL tại bảng điều khiển của AppsFlyer khi thiết lập ứng dụng.

Đặt thẻ meta-data trước thẻ </application>.

Để biết thêm chi tiết về cách theo dõi lượt cài đặt cho các ứng dụng không có trong cửa hàng, hãy đọc tại đây.

Opt Out

In some extreme cases you might want to shut down all SDK tracking due to legal and privacy compliance. This can be achieved with the isStopTracking API. Once this API is invoked, our SDK will no longer communicate with our servers and stop functioning.

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

In any event, the SDK can be reactivated by calling the same API, but to pass false.

 Cảnh báo

Use this API only in cases where you want to fully ignore this user from any and all tracking. Using this API SEVERELY impacts your reporting and attribution..

Delay SDK init for customerUserID

It is possible to delay the SDK Initialization until the customerUserID is set. This feature makes sure that the SDK doesn't begin functioning until the customerUserID is provided. If this API is used, all in-app events and any other SDK API calls are discarded, until the customerUserID is provided and tracked.

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.

The code should appear as follows:
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);
       // Do your magic to get the customerUserID
       // ...
       // any AppsFlyer SDK code invoked here will be discarded
      //Call the following API once the customerUserID is available:
 AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", this);
   }
}

 Cảnh báo

Use this API only in cases where it is appropriate for your business logic. Using this API increases the chance for discrepancies and might make the app more exposed to fraud.

Setting Additional Data

The setAdditionalData API is required to integrate on the SDK level with several external partner platforms, including Segment, Adobe and Urban Airship. Use this API only if the integration article of the platform specifically states setAdditionalData API is needed.
The following is a code example for implementing setAdditionalData on Android:

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

10. Thử nghiệm tích hợp SDK

Để thử nghiệm việc tích hợp SDK trước và sau khi gửi lên Google Play Store, nhấp vào đây.

11. Vấn đề đã biết

Nếu bạn đang dùng ProGuard và gặp cảnh báo liên quan đến lớp AFKeystoreWrapper của chúng tôi, hãy thêm đoạn mã sau vào tập tin quy tắc ProGuard:

-dontwarn com.appsflyer.*
Bài viết này có hữu ích không?
12 trên 14 thấy hữu ích

Bình luận

0 bình luận

Vui lòng đăng nhập để viết bình luận.

Các bài viết trong mục này