In-App Events
Vue d'ensemble
Les événements in-app permettent d'analyser ce qui se passe dans votre application. Il est recommandé de prendre le temps de définir les événements que vous voulez mesurer pour pouvoir mesurer le ROI (Return On Investment) et la LTV (Lifetime Value).
L'enregistrement des événements in-app est effectué en appelant sendEvent
avec des paramètres de nom d'événement et de valeur. Consultez la documentation sur les Événements in-app pour plus de détails.
Vous trouverez plus d'informations sur l'enregistrement des événements ici.
Envoyer un événement
void sendEvent(string eventName, Dictionary<string, string> eventValues)
parameter | type | description |
---|---|---|
eventName | string | Le nom de l'événement |
eventValues | Dictionary<string, string> | Les valeurs de l'événement transmises avec l'événement |
Exemple :
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);
Remarque
N'inscrivez pas de devise après la valeur du revenu.
Validation des achats in-app
Pour la validation de réception d'achat in-app, suivez les instructions propres à votre système d'exploitation.
Remarques
Appeler validateReceipt génère automatiquement un événement in-app af_purchase
, vous n'avez pas besoin d'envoyer cet événement vous-même.
La réponse de validation de l'achat est déclenchée dans 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);
}
}
Mis(e) à jour il y a 5 mois