인앱 이벤트

개요

인앱 이벤트는 앱에서 어떤 일이 일어나는지에 대한 인사이트를 제공합니다. ROI(투자 수익률) 및 LTV(유저생애 치)를 측정할 수 있도록 시간을 들여 측정하려는 이벤트를 정의하는 것이 좋습니다.

인앱이벤트 기록은 이벤트 이름 및 값 파라미터를 사용하여 sendEvent 호출하는 방식으로 수행됩니다. 더 자세한 내용은 인앱 이벤트 문서를 참조하십시오.

여기에서 이벤트 기록에 대한 자세한 내용을 확인하십시오.

이벤트 전송

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

parametertypedescription
eventNamestring이벤트 이름
eventValuesDictionary<string, string>이벤트로 전송한 이벤트 값

예:

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

📘

참고

통화 기호를 수익 값에 추가하지 않습니다.


인앱 구매 검증

인앱 구매 영수증 유효성 검증의 경우 운영 체제에 제공된 지침을 따르십시오.

참고
validateReceipt를 호출하면 인앱이벤트가 자동으로 af_purchase 생성되므로 이 이벤트를 직접 보낼 필요가 없습니다.
구매 유효성 검사 응답은 앱 내 이벤트 전송 개요 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);
    }

}