Hướng dẫn tích hợp trình cắm Unity V6—Tích hợp SDK cơ bản

Khái quát: Tích hợp và cài đặt SDK AppsFlyer vào các ứng dụng Android hoặc iOS được phát triển bằng Unity. Sau khi các tác vụ tích hợp cơ bản hoàn tất, ứng dụng của bạn đã sẵn sàng cho việc phân bổ lượt cài đặt và đo lường sự kiện trong ứng dụng. 

 Bài đọc liên quan

Để có bức tranh hoàn toàn cảnh về việc tích hợp trình cắm Unity với các ứng dụng của bạn, hãy đọc các bài viết sau:

Thêm trình cắm vào ứng dụng của bạn

 Quan trọng!

AppsFlyer Unity SDK không hỗ trợ Hệ thống Xây dựng Nội bộ của Unity.

Tải xuống trình cắm AppsFlyer Unity

Tải xuống trình cắm Unity mới nhất từ GitHub.

Cài đặt trình cắm

Sử dụng một trong các phương thức cài đặt sau.

Sử dụng EDM4UKhông sử dụng EDM4U

Trình quản lý Phụ thuộc Bên ngoài cho Unity (EDM4U) được phân bổ cùng trình cắm Unity AppsFlyer theo mặc định. Điều này giúp quá trình tích hợp dễ dàng hơn bằng cách giải quyết xung đột phụ thuộc giữa trình cắm của bạn và các trình cắm khác trong dự án của bạn.

Để cài đặt trình cắm:

Thêm appsflyer-unity-plugin.v*.unitypackage để tự động nhập tất cả các tài sản cần thiết cho cả trình cắm AppsFlyer và EDM4U.

Thiết lập Android

Để thiết lập các quyền cần thiết của Android:

Thiết đặt các quyền truy cập sau vào AndroidManifest.xml:

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

Ứng dụng nhắm mục tiêu API cấp 31 (Android 12) phải thêm quyền sau vào AndroidManifest.xml để truy cập Mã định danh Quảng cáo Android:

<uses-permission android:name="com.google.android.gms.permission.AD_ID" />

Khởi tạo trình cắm

Phần này mô tả cách triển khai và khởi tạo trình cắm.

Lấy dev key

admin.png

  • Mã khóa là duy nhất và xác định tài khoản. Trong một số trường hợp, có mã khóa cấp ứng dụng. 
  • Bắt buộc cần dev key.

Để lấy dev key:

  1. Trong AppsFlyer, đi đến Configuration (Cấu hình) > App Settings (Cài đặt ứng dụng).
  2. Lấy dev key. 

Khởi tạo trình cắm

Sử dụng phần tạo sẵn của AppsFlyer Tích hợp theo cách thủ công

Để khởi tạo trình cắm bằng tạo sẵn:

  1. Đi đến Assets (Tài sản) > AppsFlyer.
  2. Kéo AppsFlyerObject.prefab vào cảnh của bạn.

    prefab_en-us.png
  3. Thiết đặt các trường sau:

     Cài đặt Lưu ý
    Dev key Dán dev key mà bạn đã lấy trước đó.
    ID ứng dụng

    iOS: Nhập ID ứng dụng iOS (không có tiền tố id).

    Android: Để trống.

    Nhận dữ liệu chuyển đổi Nếu ứng dụng triển khai liên kết sâu AppsFlyer, hãy đặt thành "True". Mặc định là "False", nghĩa là, theo mặc định, liên kết sâu KHÔNG được triển khai.
    Đang gỡ lỗi

    Để xem nhật ký gỡ lỗi trong quá trình phát triển: Đặt thành true.

    Lưu ý: Đảm bảo tắt (đặt thành false) trước khi phát hành phiên bản chính thức cho ứng dụng.

  4. Cập nhật mã trong Assets (Tài sản) > AppsFlyer > AppsFlyerObjectScript.cs với các API khác có sẵn.

Ghi nhận các sự kiện trong ứng dụng

Ghi nhận sự kiện trong ứng dụng để đo lường KPI như doanh thu, ROI và LTV (Giá trị Vòng đời).

Sự kiện trong ứng dụng nên được triển khai để ghi nhận các sự kiện của người dùng. Sự kiện có thể được gửi theo một số cách:

Đối với các ứng dụng thuộc ngành dọc, ví dụ: du lịch, trò chơi, Thương mại điện tử, xin xem danh sách các sự kiện trong ứng dụng được đề xuất theo ngành dọc.

Thông số và tên sự kiện trong ứng dụng

Để gửi sự kiện:

[Phương pháp tốt nhất] Sử dụng tên và thông số sự kiện vì những lý do sau:

  • Đặt tên tiêu chuẩn: AppsFlyer có thể tự động ánh xạ các sự kiện đến SRN như Facebook, Google và Twitter.
  • Khả năng tương thích ngược: Không có vấn đề gì phát sinh nếu AppsFlyer thay đổi tên hoặc thông số sự kiện. Việc triển khai tương thích ngược.

Ghi nhận doanh thu

Báo cáo doanh thu bằng cách thêm thông số af_revenue vào các sự kiện trong ứng dụng.

  • Điền af_revenue bằng các giá trị số. Cho phép giá trị âm. 
  • Thông số af_revenue điền các bộ đếm doanh thu AppsFlyer và các trường dữ liệu thô. Làm như vậy cho phép các nhà tiếp thị xem doanh thu trong bảng điều khiển.
  • Doanh thu có thể được gửi bằng các thông số khác, nhưng nền tảng AppsFlyer sẽ không ghi nhận đó là doanh thu. Nhấp vào đây để biết thêm chi tiết. 
  • Giá trị doanh thu không được chứa dấu phẩy phân tách, ký hiệu tiền tệ hoặc văn bản.
    Ví dụ sự kiện doanh thu: 1234.56

Phương pháp tốt nhất: Tìm hiểu về cài đặt tiền tệ, hiển thị và chuyển đổi tiền tệ.

 Yêu cầu về mã tiền tệ khi gửi sự kiện doanh thu

  • Tiền tệ mặc định: USD
  • Sử dụng mã ISO 4217 gồm 3 ký tự (ví dụ phía dưới).
  • Thiết lập mã tiền tệ bằng cách gọi API:
    AppsFlyer.setCurrencyCode("ZZZ")

Ví dụ: Sự kiện mua trong ứng dụng có doanh thu

Sự kiện mua này có giá 200,12 Euro. Để doanh thu phản ánh trong bảng điều khiển, hãy sử dụng phía dưới. 

System.Collections.Generic.Dictionary<string, string> purchaseEvent = new 
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "EUR");
purchaseEvent.Add(AFInAppEvents.REVENUE, "200.12");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "1");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a",);
AppsFlyer.sendEvent ("af_purchase", purchaseEvent);

Ghi nhận doanh thu âm

Ghi nhận doanh thu âm bằng dấu trừ.

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

Ví dụ: Người dùng ứng dụng nhận được tiền hoàn lại hoặc hủy đăng ký.

System.Collections.Generic.Dictionary<string, string> purchaseEvent = new 
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "USD");
purchaseEvent.Add(AFInAppEvents.REVENUE, "-200");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "1");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a");
AppsFlyer.sendEvent ("cancel_purchase", purchaseEvent);

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

Trình cắm cung cấp xác minh máy chủ để mua hàng trong ứng dụng.

Để xác thực giao dịch mua, hướng dẫn cụ thể theo hệ điều hành:

AndroidiOS
#if UNITY_ANDROID && !UNITY_EDITOR
AppsFlyerAndroid.validateAndSendInAppPurchase(
"publicKey",
"signature",
"purchaseData",
"price",
"currency",
null,
this);
#endif

Các tham số phương thức

Android iOS
Tham số Mô tả
Chuỗi publicKey Khóa công khai từ Giao diện điều khiển dành cho Nhà phát triển của Google
Chuỗi chữ ký

Chữ ký giao dịch; được Google API trả về khi hoàn thành giao dịch

Chuỗi purchaseData

Sản phẩm được mua dưới định dạng JSON; được Google API trả về khi hoàn thành giao dịch

Chuỗi doanh thu Doanh thu sự kiện trong ứng dụng sẽ được báo cáo cho AppsFlyer
Chuỗi tiền tệ Tiền tệ sự kiện trong ứng dụng sẽ được báo cáo cho AppsFlyer
Dictionary<String, String> additionalParameters

Thông số sự kiện trong ứng dụng bổ sung sẽ xuất hiện trong trường event_value trong dữ liệu thô sự kiện trong ứng dụng

 Lưu ý

Gọi ra validateReceipt để tự động tạo sự kiện trong ứng dụng af_purchase.

Không gửi sự kiện mua sau khi xác thực giao dịch mua. Làm như vậy dẫn đến báo cáo sự kiện trùng lặp.

Những điều cần lưu ý về sự kiện trong ứng dụng

  • Tên sự kiện: tối đa 45 ký tự
  • Giá trị sự kiện: không được vượt quá 1000 ký tự - nếu dài hơn, chúng tôi có thể sẽ cắt bớt
  • Hỗ trợ các ký tự không phải tiếng Anh cho các sự kiện trong ứng dụng (và các API khác)
  • Giá cả và doanh thu:
    • Chỉ sử dụng số và số thập phân như 5 hoặc 5,2
    • Cho phép tối đa 5 số sau số thập phân. Ví dụ: 5,12345

Ví dụ về ghi nhận sự kiện trong ứng dụng

Ghi nhận các sự kiện trong ứng dụng bằng cách gọi sendEvent và đưa vào các thông số giá trị và tên sự kiện.
Xem Sự kiện trong ứng dụng để biết thêm thông tin chi tiết.

Ví dụ: Cách ghi nhận sự kiện mua trong ứng dụng

Để biết danh sách đầy đủ các đoạn mã được tạo sẵn cho mỗi ngành dọc, vui lòng xem hướng dẫn của chúng tôi về sự kiện phong phú trong ứng dụng cho mỗi ngành dọc.

System.Collections.Generic.Dictionary<string, string> purchaseEvent = new 
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "USD");
purchaseEvent.Add(AFInAppEvents.REVENUE, "200");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "2");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a");
purchaseEvent.Add(AFInAppEvents.CONTENT_ID, "092");
AppsFlyer.sendEvent (AFInAppEvents.PURCHASE, purchaseEvent);

Ghi nhận sự kiện trong ứng dụng ngoại tuyến

Đôi khi người dùng tạo các sự kiện trong ứng dụng, trong khi họ không có kết nối internet. AppsFlyer lưu sự kiện và báo cáo vào bộ nhớ cache khi có thể. 

  • Trình cắm gửi các sự kiện đến máy chủ AppsFlyer và chờ phản hồi.
  • Nếu trình cắm không nhận được phản hồi mã 200, sự kiện được lưu trữ trong bộ nhớ cache.
  • Sau khi nhận được phản hồi mã 200 tiếp theo, sự kiện đã lưu trữ được gửi lại cho máy chủ.
  • Nếu bộ nhớ cache lưu trữ nhiều sự kiện, chúng sẽ được gửi đến máy chủ lần lượt.

 Lưu ý

Bộ nhớ cache có thể lưu trữ tối đa 40 sự kiện.

  • Chỉ 40 sự kiện ngoại tuyến đầu tiên được lưu.
  • Tất cả các sự kiện ngoại tuyến tiếp theo, cho đến phản hồi mã 200 tiếp theo, sẽ bị loại bỏ.
  • Trong báo cáo dữ liệu thô,
    • Thời gian sự kiện = khi một sự kiện được gửi tới AppsFlyer sau khi thiết bị được kết nối internet trở lại.
    • Đây không phải là lúc sự kiện đã diễn ra.

Liên kết sâu với OneLink

OneLink của AppsFlyer là giải pháp để phân bổ đa nền tảng: chuyển hướng liên kết sâu.

Nhận diện và chuyển hướng thiết bị

OneLink:

  • Phát hiện loại thiết bị (Android và iOS, máy tính để bàn, v.v.) khi người dùng nhấp vào, sau đó
  • Chuyển hướng người dùng đến đích chính xác: Google Play, cửa hàng ứng dụng iOS, thị trường ngoài cửa hàng hoặc các trang web.

Để triển khai các đường dẫn phân bổ đa nền tảng và xem lại các nội dung cơ bản về liên kết sâu, hãy xem hướng dẫn Chuyển hướng OneLink.

Deep Linking

Sử dụng liên kết sâu để chuyển hướng người dùng hiện có đến các hoạt động cụ thể và nội dung tùy chỉnh. 

Chủ sở hữu ứng dụng và nhà phát triển phải làm việc cùng nhau để thiết lập liên kết sâu với OneLink:

  • Chủ sở hữu ứng dụng phải truy cập bảng điều khiển của AppsFlyer
  • Nhà phát triển phải truy cập ứng dụng

Xem thiết lập liên kết sâu với OneLink.

Deferred deep linking

liên kết sâu bị trì hoãn cho phép bạn liên kết sâu người dùng mới để chuyển hướng họ đến các hoạt động cụ thể và nội dung tùy chỉnh cùng lần khởi chạy cài đặt ứng dụng lần đầu. 

Liên kết sâu tiêu chuẩn cũng chuyển hướng người dùng đến các hoạt động cụ thể và nội dung tùy chỉnh, nhưng phải cài đặt ứng dụng sẵn trên thiết bị của người dùng.

Để thiết lập liên kết sâu bị trì hoãn với OneLink:

  • Nhà phát triển cần quyền truy cập vào nền tảng AppsFlyer.
  • Thiết lập nền tảng AppsFlyer cho liên kết sâu bị trì hoãn và tiêu chuẩn là như nhau.
  • Phải triển khai logic bổ sung trong ứng dụng để liên kết sâu người dùng và cung cấp cho họ nội dung tùy chỉnh sau khi họ cài đặt và khởi chạy ứng dụng.

Kiểm tra liên kết sâu bị trì hoãn để biết thêm thông tin.

Nhận dữ liệu liên kết sâu

Trình cắm cung cấp dữ liệu chuyển đổi hoặc thu hút sau mỗi sự kiện cài đặt hoặc liên kết sâu. Sử dụng dữ liệu này để tùy chỉnh nội dung hoặc hành vi theo chương trình của ứng dụng.

Để nhận dữ liệu liên kết sâu:

  • Triển khai gọi lại onAppOpenAttribution (được tìm thấy trong lớp IAppsFlyerConversionData); được gọi bằng trình cắm AppsFlyer.
  • Các tham số OneLink/đường dẫn phân bổ sẽ kích hoạt mở ứng dụng.
  • Phân tích các giá trị và áp dụng logic để kích hoạt trang ứng dụng liên quan.
public void onAppOpenAttribution(string attributionData)
{
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
// add direct deeplink logic here
}

Kiểm tra dữ liệu liên kết sâu để biết thêm thông tin.

Nhận dữ liệu chuyển đổi

Quyền truy cập vào dữ liệu phân bổ người dùng theo thời gian thực có sẵn cho mỗi lượt cài đặt. Sử dụng điều này để nâng cao mức độ thu hút của người dùng bằng cách cung cấp:

  • Nội dung được cá nhân hóa
  • Đưa người dùng đến các hoạt động cụ thể trong một ứng dụng. Xem deferred deep linking trong bài viết này.

Nhận dữ liệu chuyển đổi AppsFlyer

Để tải dữ liệu chuyển đổi của AppsFlyer:

  1. Triển khai IAppsFlyerConversionDatabase.
  2. Gọi phương thức initSDK với đây là thông số cuối cùng.
  3. Sử dụng phương thức onConversionDataSuccess để chuyển hướng người dùng. 

Xem tham chiếu API cho onConversionDataSuccess.

using AppsFlyerSDK;

public class AppsFlyerObjectScript : MonoBehaviour , IAppsFlyerConversionData
{
    void Start()
    {
        /* AppsFlyer.setDebugLog(true); */
        AppsFlyer.initSDK("devkey", "appID", this);
        AppsFlyer.startSDK();
    }

    public void onConversionDataSuccess(string conversionData)
    {
        AppsFlyer.AFLog("onConversionDataSuccess", conversionData);
        Dictionary<string, object> conversionDataDictionary = AppsFlyer.CallbackStringToDictionary(conversionData);
        // add deferred deeplink logic here
    }

    public void onConversionDataFail(string error)
    {
        AppsFlyer.AFLog("onConversionDataFail", error);
    }

    public void onAppOpenAttribution(string attributionData)
    {
        AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
        Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
        // add direct deeplink logic here
    }

    public void onAppOpenAttributionFailure(string error)
    {
        AppsFlyer.AFLog("onAppOpenAttributionFailure", error);
    }
}

Lượt cài đặt thử nghiệm

Đưa thiết bị thử nghiệm vào danh sách cho phép

Đưa thiết bị thử nghiệm vào danh sách cho phép.

Mô phỏng lượt cài đặt

Mô phỏng lượt cài đặt tự nhiên và không tự nhiên.

Mô phỏng lượt cài đặt tự nhiên

Cài đặt tự nhiên là lượt cài đặt không được phân bổ; thường là kết quả của các lượt cài đặt trực tiếp thông qua các cửa hàng ứng dụng. Để mô phỏng lượt cài đặt tự nhiên, hãy làm theo các hướng dẫn sau.

Mô phỏng lượt cài đặt không tự nhiên

Lượt cài đặt không tự nhiên là lượt cài đặt được phân bổ; thường là kết quả của một lượt tương tác quảng cáo. Để mô phỏng lượt cài đặt không tự nhiên, hãy làm theo các hướng dẫn sau

Bài viết này có hữu ích không?