Tích hợp AppsFlyer SDK - Android

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

android.pngPhiên bản SDK: 4.10.0 (Ghi chú Phát hành)

1. Tổng quan

SDK của AppsFlyer cung cấp chức năng cài đặt ứng dụng và ghi nhận 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ể ghi nhận lượt cài đặt, cập nhật và các phiên làm việc, cũng như ghi nhận 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 Phân bổ 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 của 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 ghi nhận 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. Ghi nhận 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 đo lường ROI (Lợi tức đầu tư) và LTV (Giá trị vòng đời khách hàng).

Việc ghi nhận các sự kiện trong ứng dụng được thực hiện bằng cách gọi trackEvent với 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);

Ví dụ: Sự kiện trong ứng dụng đạt được cấp độ

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

Phần này tạo ra sự kiện thuộc loại af_level_achieved với các giá trị sự kiện sau:{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);

record_in_app_event_android_studio.png

5. Theo dõi Liên kết sâu

 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>

Lược đồ được cấu hình tương ứng với af_dp giá trị bạn bao gồm trong liên kết phân bổ của mình.

Để 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 phân bổ đượ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. Ghi nhận 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.

Ghi nhận doanh thu âm

Nếu bạn cần ghi nhận 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 ghi nhận 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.

Ghi nhận 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.

Phân bổ Quảng cáo chéo

AppsFlyer cho phép bạn phân bổ và ghi nhận các cài đặt có nguồn gốc từ quảng cáo chéo của một trong những ứng dụng của bạn từ bên trong ứng dụng hiện tại mà người dùng có. Ứng dụng quảng cáo chéo có thể là một yếu tố tăng trưởng chính trong việc thúc đẩy thêm các lượt cài đặt bổ sung cho ứng dụng của bạn.

Để biết thêm chi tiết, hãy xem bài viết Phân bổ quảng cáo chéo, tại đây.

Phân bổ Mời người dùng

AppsFlyer cho phép bạn phân bổ và ghi nhận các cài đặt có nguồn gốc từ lời mời của người dùng trong ứng dụng của bạn. Việc cho phép người dùng hiện tại mời bạn bè và liên hệ của họ sử dụng ứng dụng có thể là một yếu tố tăng trưởng then chốt cho ứng dụng của bạn. Để biết thêm chi tiết, hãy xem bài viết Phân bổ mời người dùng, tại đây.

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. Để kích hoạt 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);

Bạn có thể hủy ẩn danh bằng cách gọi deviceTrackingDisabled lần nữa, được thiết lập thành false.

 Cảnh báo

Ẩn danh người dùng sẽ làm ảnh hưởng NGHIÊM TRỌNG đến thông tin phân bổ của bạn. CHỈ sử dụng tùy chọn này cho các khu vực mà pháp luật nghiêm cấm thu thập thông tin của người dùng.

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

Theo mặc định, phải mất ít nhất 5 giây giữa 2 lần khởi chạy ứng dụng để được tính là 2 phiên riêng biệt (tìm hiểu thêm về tính các phiên). Tuy nhiên, bạn có thể sử dụng API sau để đặt giá trị tùy chỉnh cho thời gian yêu cầu tối thiểu giữa các phiên:
AppsFlyerLib.setMinTimeBetweenSessions(int giây);
Lưu ý rằng việc đặt một giá trị cao  cho thời gian tùy chỉnh giữa các phiên khởi chạy có thể ảnh hưởng xấu tới API dựa trên dữ liệu các phiên, chẳng hạn như liên kết sâu.

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

Phân bổ ứ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.

Để ghi nhận 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 bên trong thẻ </application>.

Để biết thêm chi tiết về cách ghi nhận 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

AppsFlyer cho phép bạn theo dõi và phân bổ lượt cài đặt có nguồn gốc từ lời mời của người dùng trong ứng dụng của bạn. 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

Để bắt đầu các chức năng của SDK lần nữa 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 các chức năng SDK của người dùng. 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à ghi nhận.

Để 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à bắt đầu SDK.

Đ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

Phải có API setAdditionalData để tích hợp ở cấp SDK với một số nền tảng đối tác bên ngoài, bao gồm Segment, Adobe và Urban Airship. Chỉ sử dụng API nếu bài viết tích hợp của nền tảng nêu rõ rằng bắt buộc phải cósetAdditionalData API. Sau đây là ví dụ đoạn mã thực hiện setAdditionalData trên 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 Phổ dụng 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 đo lường kết quả của 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.

Nội dung trang: