Overview

Peristiwa Dalam Aplikasi memberikan wawasan tentang apa yang terjadi di aplikasi Anda. Disarankan untuk meluangkan waktu dan menentukan peristiwa yang ingin Anda ukur untuk memungkinkan Anda mengukur ROI (Return on Investment/Laba atas Investasi) dan LTV (Lifetime Value/Nilai Periode Retensi).

Merekam peristiwa dalam aplikasi dilakukan dengan menelepon sendEvent dengan nama peristiwa dan parameter nilai. Lihat dokumentasi untuk detail lebih lanjut.

Temukan info lebih lanjut tentang merekam peristiwa di sini.

Kirim Peristiwa

void sendEvent(string eventName, Dictionary<string, string> eventValues)

parametertypedescription
eventNamestringNama peristiwa
eventValuesDictionary<string, string>Nilai peristiwa yang dikirim bersama peristiwa

Contoh:

Dictionary<string, string> eventValues = new Dictionary<string, string>();
eventValues.Add(AFInAppEvents.CURRENCY, "USD");
eventValues.Add(AFInAppEvents.REVENUE, "0.99");
eventValues.Add("af_quantity", "1");
AppsFlyer.sendEvent(AFInAppEvents.PURCHASE, eventValues);

📘

Catatan

Jangan menambahkan simbol mata uang ke nilai pendapatan.


Validasi Pembelian Dalam-Aplikasi

Untuk Validasi Tanda Terima Pembelian Dalam Aplikasi, ikuti petunjuk sesuai dengan sistem operasi Anda.

Catatan
Memanggil validateReceipt secara otomatis menghasilkan file af_purchase peristiwa dalam aplikasi, jadi Anda tidak perlu mengirimkan peristiwa ini sendiri.
Respons pembelian validasi dipicu di AppsFlyerTrackerCallbacks.cs class.

void validateAndSendInAppPurchase(string productIdentifier, string price, string currency, string tranactionId, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject)

//To get the callbacks
//AppsFlyer.createValidateInAppListener ("AppsFlyerTrackerCallbacks", "onInAppBillingSuccess", "onInAppBillingFailure");
AppsFlyer.validateReceipt(string publicKey, string purchaseData, string signature, string price, string currency, Dictionary additionalParametes);
using UnityEngine.Purchasing;
using AppsFlyerSDK;

public class AppsFlyerObject : MonoBehaviour, IStoreListener, IAppsFlyerValidateReceipt
{

    public static string kProductIDConsumable = "com.test.cons";

    void Start()
    {
        AppsFlyer.initSDK("devKey", "devKey");
        AppsFlyer.startSDK();
    }

    public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
    {
        string prodID = args.purchasedProduct.definition.id;
        string price = args.purchasedProduct.metadata.localizedPrice.ToString();
        string currency = args.purchasedProduct.metadata.isoCurrencyCode;

        string receipt = args.purchasedProduct.receipt;
        var recptToJSON = (Dictionary<string, object>)AFMiniJSON.Json.Deserialize(product.receipt);
        var receiptPayload = (Dictionary<string, object>)AFMiniJSON.Json.Deserialize((string)recptToJSON["Payload"]);
        var transactionID = product.transactionID;

        if (String.Equals(args.purchasedProduct.definition.id, kProductIDConsumable, StringComparison.Ordinal))
        {
#if UNITY_IOS

            if(isSandbox)
            {
                AppsFlyeriOS.setUseReceiptValidationSandbox(true);
            }

            AppsFlyeriOS.validateAndSendInAppPurchase(prodID, price, currency, transactionID, null, this);
#elif UNITY_ANDROID
        var purchaseData = (string)receiptPayload["json"];
        var signature = (string)receiptPayload["signature"];
        AppsFlyerAndroid.validateAndSendInAppPurchase(
        "<google_public_key>", 
        signature, 
        purchaseData, 
        price, 
        currency, 
        null, 
        this);
#endif
        }

        return PurchaseProcessingResult.Complete;
    }

    public void didFinishValidateReceipt(string result)
    {
        AppsFlyer.AFLog("didFinishValidateReceipt", result);
    }

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

}