Tích hợp AppsFlyer SDK - Android

  • Nhà quảng cáo
  • Nhà phát triển

android.pngSDK Version: 4.10.0 (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.

 Quan trọng!

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

SDK cũng tương thích với các nền tảng dựa trên Android không phải di động như Smart TV, bao gồm cả Fire TV của Amazon.

Đối với các ứng dụng được phát triển cho Fire TV của Amazon, hãy sử dụng Giải pháp Theo dõi Ngoài Cửa hàng của AppsFlyer.

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

 Lời khuyên

2. Bắt đầu nhanh

2.1 Tải xuống SDK

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

Để xác minh tính toàn vẹn của tập tin SDK tải về, 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()
}
  1. Thêm sự phụ thuộc thực hiện với phiên bản mới nhất của AppsFlyer SDK.
  2. Thêm phần này vào cấp độ mô-đun /app/build.gradle sau khi lưu trữ:
dependencies {
// always make sure to use the latest SDK version: 
// https://mvnrepository.com/artifact/com.appsflyer/af-android-sdk
	implementation 'com.appsflyer:af-android-sdk:4.9.0'
	implementation '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
  • Các nhà phát triển không dùng bản dựng gradle hoặc aar và muốn dùng API Người giới thiệu mới của Google phải thêm thủ công com.android.installreferrer jar dưới dạng một tệp tin và bảo đảm thêm vào quyền sau đây: 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:

<application>
...
...

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

...
...
</application>

 Lời khuyên

Nếu bạn gặp lỗi "Chưa giải quyết lớp SingleInstallBroadcastReceiver" sau khi thêm bộ thu vào AndroidManifest.xml, hãy đảm bảo xây dựng ứng dụng trước.

3. Khởi tạo SDK

Quá trình khởi tạo SDK được hoàn thành trong hai giai đoạn. Trong giai đoạn đầu tiên, DevKey được cung cấp cùng với ID ứng dụng và một conversionDataListener tùy chọn. Trong giai đoạn thứ hai, việc gọi startTracking chỉ ra rằng tất cả các hoạt động chuẩn bị có liên quan đã hoàn thành (ví dụ: gọi setCustomerUserId) và SDK có thể bắt đầu theo dõi tất cả các sự kiện.

Để khởi tạo SDK, hãy thêm đoạn mã sau vào chức năng Application 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);  }
}

 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

Sự phụ thuộc sau: implementation 'com.android.installreferrer:installreferrer:1.0'getApplicationContext() được thông qua trong phương thức sau: AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext()); là điều kiện tiên quyết cho việc báo cáo API Người giới thiệu mới của Google tới 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 là bất cứ chuỗi nào để định nghĩa tên sự kiện.
//eventValues là bản đồ các tham số sự kiện bao gồm một sự kiện phong phú.  
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 hỗ trợ các ký tự không phải tiếng Anh với những sự kiện trong ứng dụng, hoặc với bất kỳ SDK API nào khác, bắt đầu từ Android SDK phiên bản 4.8.1.
  • Không thêm bất kỳ ký hiệu tiền tệ hoặc dấu phẩy nào vào các con số vì không thể nhận diện được.

 Ví dụ về cách dùng

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

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

Sử dụng tham số sự kiện af_revenue (AFInAppEventParameterName.REVENUE) để đếm doanh thu như một phần của sự kiện trong ứng dụng. Bạn có thể điền giá trị số bất kỳ, âm hoặc dương.

 Lưu ý

af_revenue là tham số sự kiện DUY NHẤT được đếm trên AppsFlyer như doanh thu thực trên dữ liệu thô và bảng điều khiển. Để biết thêm thông tin chi tiết, vui lòng nhấp vào đây.

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(getApplicationContext() , 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 ý

Thiết lập mã tiền tệ địa phương của người dùng cho các hoạt động mua hàng trong ứng dụng - mã tiền tệ nên là mã ISO 4217 với 3 ký tự. (mặc định là USD). 

Bạn có thể thiết lập mã tiền tệ cho tất cả các sự kiện bằng cách gọi phương thức sau: AppsFlyer.setCurrencyCode("GBP");

 Quan trọng!

KHÔNG định dạng giá trị doanh thu theo bất kỳ cách nào. Định dạng không nên chứa dấu phẩy phân tách, ký hiệu tiền tệ hoặc văn bản. Ví dụ một sự kiện doanh thu nên tương tự như 1234.56.

Theo dõi Doanh thu Âm

Nếu bạn cần theo dõi doanh thu âm, ví dụ: khi người dùng hủy giao dịch mua hoặc nhận tiền hoàn lại, bạn có thể gửi doanh thu âm.

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() , "cancel_purchase" , eventValue);

 Lưu ý

Lưu ý những điều sau trong mã ở trên:

  1. Giá trị doanh thu được bắt đầu bằng dấu trừ
  2. Tên sự kiện có giá trị duy nhất là "cancel_purchase" - để cho phép bạn xác định các sự kiện doanh thu âm trong bảng điều khiển và báo cáo dữ liệu thô

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

Ví dụ:

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

Ví dụ cách dùng:

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

 

Ví dụ cách dùng:

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

 Lưu ý

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. Nếu setCustomerUserId được gọi trước startTracking, bạn sẽ có Customer User ID trong xuất dữ liệu thô cho các lượt cài đặt và sự kiện. Nếu ID này được thiết lập sau, bạn sẽ chỉ thấy giá trị cho các sự kiện được theo dõi sau khi gọi phương thức này.

Customer User ID cũng có thể được sử 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ư Mixpanel và Swrve.

 

Lấy Customer User ID:

Để tránh thiết lập lại giá trị customer user ID sau lần khởi chạy đầu tiên, bạn có thể kiểm tra xem giá trị của nó đang rỗng hay không bằng cách sử dụng

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

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

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

SDK mặc định không thu thập IMEI và Android ID nếu phiên bản hệ điều hành cao hơn KitKat (4.4) và ứng dụng chứa Google Play Services (trên SDK phiên bản 4.8.8 trở xuống thì ứng dụng cụ thể cần 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 và đặt trước mã startTracking:

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

Nếu ứng dụng KHÔNG chứa Google Play Services thì SDK sẽ thu thập IMEI và Android ID. Tuy nhiên, ứng dụng có Google play services nên tránh thu thập IMEI vì việc này vi phạm chính sách của Google Play.

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

Đo lường lượt Gỡ cài đặt

AppsFlyer cho phép bạn đo lường tỷ lệ người dùng gỡ cài đặt đến từ các nguồn khác nhau.

Để hoàn thành quy trình này chính xác và đầy đủ, vui lòng đọ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"
   }
  }
}
{

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

Ví dụ cách dùng:

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

 Lưu ý

Gọi validateAndTrackInAppPurchase tự động tạo ra một sự kiện trong ứng dụng af_purchase. Bạn không cần phải tự mình gửi sự kiện này.

Ẩn danh Dữ liệu Người dùng

AppsFlyer cung cấp cho bạn phương thức ẩn danh mã định danh người dùng cụ thể trong phân tích AppsFlyer. Phương thức này phù hợp với yêu cầu bảo mật mới nhất và tuân thủ chính sách dữ liệu và quyền riêng tư của Facebook. Mặc định là KHÔNG, có nghĩa là mặc định không thực hiện ẩn danh.

Sử dụng API này trong quá trình Khởi tạo SDK để ẩn danh hoàn toàn các cài đặt, sự kiện và phiên của người dùng:

public void setDeviceTrackingDisabled(boolean isDisabled);

Ví dụ cách dùng:

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

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 giây);
Note that setting a high value to the custom time between launches may badly impact APIs relying on sessions data, such as deep linking.

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

Ví dụ cách dùng:

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.

Lựa chọn không tham gia

Trong một số trường hợp nghiêm trọng hơn, bạn có thể sẽ phải tắt tất cả các theo dõi SDK để bảo đảm tuân thủ pháp luật và quyền riêng tư. Có thể thực hiện việc này bằng isStopTracking API. Khi API được thu hồi, SDK sẽ không còn giao tiếp được với các máy chủ của chúng tôi và dừng hoạt động.

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

Có một số trường hợp khác nhau để người dùng lựa chọn không tham gia. Chúng tôi khuyên bạn nên thực hiện theo những hướng dẫn chính xác cho từng trường hợp liên quan tới ứng dụng của bạn.

Trong bất kỳ sự kiện nào, SDK có thể được kích hoạt lại bằng cách gọi API tương tự, nếu kết quả là sai.

 Quan trọng

Không gọi trackAppLaunch nếu isStopTracking được đặt là true

Để theo dõi lại khi stopTracking được đặt là false, hãy sử dụng SDK API sau đây:

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

 Cảnh báo

Chỉ sử dụng API stopTracking trong trường hợp bạn muốn hoàn toàn bỏ qua người dùng này trong mọi tính năng theo dõi. Việc sử dụng API này ảnh hưởng NGHIÊM TRỌNG đến việc phân bổ, thu thập dữ liệu và cơ chế liên kết sâu của bạn.

Trì hoãn Khởi tạo SDK cho customerUserID

Có thể trì hoãn Khởi tạo SDK cho đến khi customerUserID được thiết lập. Tính năng này bảo đảm rằng SDK không bắt đầu hoạt động cho đến khi customerUserID được cung cấp. Nếu API này được sử dụng, tất cả các sự kiện trong ứng dụng và bất kỳ lần gọi SDK API nào khác đều bị loại bỏ, cho đến khi customerUserID được cung cấp và theo dõi.

Để chỉ ra rằng SDK sẽ trì hoãn việc khởi tạo cho cuộc gọi customer user id

AppsFlyerLib.getInstance().waitForCustomerUserId(true);

ngay trước khi thực hiện phương pháp init(). Phần còn lại của Khởi tạo SDK nên được giữ nguyên.

Khi đã được cung cấp customerUserID, hãy gọi

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

để cung cấp cho SDK customer user id liên quan và kích hoạt SDK bắt đầu chế độ theo dõi như thông lệ.

Đoạn mã sẽ xuất hiện như sau:
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

Chỉ sử dụng API này trong trường hợp phù hợp với logic kinh doanh của bạn. Sử dụng API này sẽ tăng cơ hội tạo ra sự khác biệt và có thể khiến ứng dụng dễ bị gian lận hơn.

Thiết lập Dữ liệu Tùy chỉnh Bổ sung

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

Phân bổ cho Ứng dụng cài đặt sẵn

Có nhiều phương thức khả dụng để phân bổ Android cho các ứng dụng cài đặt sẵn.

Để biết chi tiết, nhấp vào đây.

Thiết lập Tracking Request Listener

Nếu bạn muốn nhận xác nhận rằng yêu cầu theo dõi đã được máy chủ AppsFlyer nhận thành công, bạn có thể triển khai trình nghe AppsFlyerTrackingRequestListener.

Phương thức gọi lại onTrackingRequestSuccess() được thu hồi cho mỗi 200 phản hồi đối với yêu cầu phân bổ thực hiện bởi SDK.

Phương thức gọi lại onTrackingRequestFailure(String error) được gọi cho bất kỳ phản hồi nào khác và trả về phản hồi như một chuỗi lỗi.

Ví dụ

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

Giải quyết các URL Liên Kết Sâu Được Gói

Nếu bạn đang sử dụng OneLinks hỗ trợ Liên kết ứng dụng Android và gói chúng bằng Liên kết Chung Bên thứ 3, bạn có thể sử dụng API setResolveDeepLinkURLs để thông báo cho AppsFlyer SDK nhấp vào các tên miền gọi ứng dụng phải được SDK giải quyết và trích xuất OneLink bên dưới từ chúng. Thao tác này sẽ cho phép bạn duy trì liên kết sâu và theo dõi trong khi gói OneLink bằng Liên kết Chung Bên thứ 3. Đảm bảo gọi API này trước khi khởi tạo SDK.

AppsFlyerLib.getInstance().setResolveDeepLinkURLs("example.com", "click.example.com");

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.

Bây giờ bạn có thể bắt đầu theo dõi các nguồn phương tiện truyền thông bạn làm việc cùng.

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:

-keep class com.appsflyer.** { *; }
Bài viết này có hữu ích không?
20 trên 25 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

Nội dung trang: