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:
- Hướng dẫn tích hợp trình cắm Unity V6—Tổng quan
- Hướng dẫn tích hợp trình cắm Unity V6—Tích hợp SDK cơ bản (bài viết này)
- Hướng dẫn tích hợp trình cắm Unity V6—Tích hợp SDK bổ sung
- Hướng dẫn tích hợp trình cắm Unity V6—Tham chiếu API
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.
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.
Để cài đặt trình cắm mà không có EDM4U:
- Nhập appsflyer-unity-plugin.v*.unitypackage vào dự án của bạn, nhưng đảm bảo xóa lựa chọn thành phần phụ thuộc EDM4U.
- Tải xuống và thêm các thành phần phụ thuộc Android bắt buộc vào thư mục Assets/Plugins/Android:
- Tải xuống và thêm các thành phần phụ thuộc iOS bắt buộc vào thư mục Assets/Plugins/iOS/AppsFlyer:
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
- 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:
- Trong AppsFlyer, đi đến Configuration (Cấu hình) > App Settings (Cài đặt ứng dụng).
- Lấy dev key.
Khởi tạo trình cắm
Để khởi tạo trình cắm bằng tạo sẵn:
- Đi đến Assets (Tài sản) > AppsFlyer.
- Kéo AppsFlyerObject.prefab vào cảnh của bạn.
- 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.
- Cập nhật mã trong Assets (Tài sản) > AppsFlyer > AppsFlyerObjectScript.cs với các API khác có sẵn.
Để tích hợp thủ công:
Tạo một đối tượng trò chơi và thêm mã init sau:
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ưu ý: Đảm bảo không gọi lệnh hủy đối tượng trò chơi.
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:
- [Phương pháp tốt nhất] Gửi sự kiện qua ứng dụng như được mô tả trong bài viết này.
- Để biết các phương thức khác, hãy xem hướng dẫn tổng quan về sự kiện trong ứng dụng.
Đố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:
- Xác định tên và thông số của sự kiện.
- Xem danh sách liên quan:
- Danh sách các tên và cấu trúc sự kiện được đề xuất
- Danh sách được tìm thấy trong lớp
AFInAppEvents
.
[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:
#if UNITY_ANDROID && !UNITY_EDITOR
AppsFlyerAndroid.validateAndSendInAppPurchase(
"publicKey",
"signature",
"purchaseData",
"price",
"currency",
null,
this);
#endif
Đảm bảo bạn thử nghiệm gọi máy chủ sandbox Apple:
#if UNITY_IOS && !UNITY_EDITOR
AppsFlyeriOS.validateAndSendInAppPurchase(
"productIdentifier",
"price",
"currency",
"tranactionId",
null,
this);
#endif
Các tham số phương thức
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 |
Tham số | Mô tả |
---|---|
Chuỗi productIdentifier | Mã định danh của sản phẩm |
Chuỗi giá | 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ệntrong 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 và 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
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ớpIAppsFlyerConversionData
); đượ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:
- Triển khai
IAppsFlyerConversionDatabase
. - Gọi phương thức
initSDK
với đây là thông số cuối cùng. - 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.