/// <para> /// Measures the event with MATEvent. /// </para> /// <param name="matEvent">MATEvent object of event values to measure</param> public static void MeasureEvent(MATEvent matEvent) { if(!Application.isEditor) { int itemCount = null == matEvent.eventItems ? 0 : matEvent.eventItems.Length; #if UNITY_ANDROID MATAndroid.Instance.MeasureEvent(matEvent); #endif #if (UNITY_WP8 || UNITY_METRO) // Set event characteristic values separately SetEventContentType(matEvent.contentType); SetEventContentId(matEvent.contentId); if (matEvent.level != null) { SetEventLevel((int)matEvent.level); } if (matEvent.quantity != null) { SetEventQuantity((int)matEvent.quantity); } SetEventSearchString(matEvent.searchString); if (matEvent.rating != null) { SetEventRating((float)matEvent.rating); } if (matEvent.date1 != null) { SetEventDate1((DateTime)matEvent.date1); } if (matEvent.date2 != null) { SetEventDate2((DateTime)matEvent.date2); } SetEventAttribute1(matEvent.attribute1); SetEventAttribute2(matEvent.attribute2); SetEventAttribute3(matEvent.attribute3); SetEventAttribute4(matEvent.attribute4); SetEventAttribute5(matEvent.attribute5); #endif #if UNITY_IPHONE MATEventIos eventIos = new MATEventIos(matEvent); byte[] receiptBytes = null == matEvent.receipt ? null : System.Convert.FromBase64String(matEvent.receipt); int receiptByteCount = null == receiptBytes ? 0 : receiptBytes.Length; // Convert MATItem to C-marshallable struct MATItemIos MATItemIos[] items = new MATItemIos[itemCount]; for (int i = 0; i < itemCount; i++) { items[i] = new MATItemIos(matEvent.eventItems[i]); } MATExterns.MATMeasureEvent(eventIos, items, itemCount, receiptBytes, receiptByteCount); #endif #if UNITY_WP8 //Convert MATItem[] to MATEventItem[]. These are the same things, but must be converted for recognition of //MobileAppTracker.cs. MATWP8.MATEventItem[] newarr = new MATWP8.MATEventItem[itemCount]; //Conversion is necessary to prevent the need of referencing a separate class. for(int i = 0; i < itemCount; i++) { MATItem item = matEvent.eventItems[i]; newarr[i] = new MATWP8.MATEventItem(item.name, item.quantity == null? 0 : (int)item.quantity, item.unitPrice == null? 0 : (double)item.unitPrice, item.revenue == null? 0 : (double)item.revenue, item.attribute1, item.attribute2, item.attribute3, item.attribute4, item.attribute5); } List<MATWP8.MATEventItem> list = newarr.ToList(); MATWP8.MobileAppTracker.Instance.MeasureAction(matEvent.name, matEvent.revenue == null? 0 : (double)matEvent.revenue, matEvent.currencyCode, matEvent.advertiserRefId, list); #endif #if UNITY_METRO MATWinStore.MATEventItem[] newarr = new MATWinStore.MATEventItem[itemCount]; for(int i = 0; i < itemCount; i++) { MATItem item = matEvent.eventItems[i]; newarr[i] = new MATWinStore.MATEventItem(item.name, item.quantity == null? 0 : (int)item.quantity, item.unitPrice == null? 0 : (double)item.unitPrice, item.revenue == null? 0 : (double)item.revenue, item.attribute1, item.attribute2, item.attribute3, item.attribute4, item.attribute5); } List<MATWinStore.MATEventItem> list = newarr.ToList(); MATWinStore.MobileAppTracker.Instance.MeasureAction(matEvent.name, matEvent.revenue == null? 0 : (double)matEvent.revenue, matEvent.currencyCode, matEvent.advertiserRefId, list); #endif } }
/// <para> /// Measures the action with event items. /// </para> /// <param name="action">Action</param> /// <param name="items">Items</param> /// <param name="eventItemCount">Event item count</param> /// <param name="refId">Reference identifier</param> /// <param name="revenue">Revenue</param> /// <param name="currency">Currency</param> /// <param name="transactionState">Transaction state</param> /// <param name="receipt">Receipt</param> /// <param name="receiptSignature">Receipt signature</param> public static void MeasureActionWithEventItems(string action, MATItem[] items, int eventItemCount, string refId, double revenue, string currency, int transactionState, string receipt, string receiptSignature) { if(!Application.isEditor) { #if (UNITY_ANDROID || UNITY_IPHONE) measureActionWithEventItems(action, items, eventItemCount, refId, revenue, currency, transactionState, receipt, receiptSignature); #endif #if UNITY_WP8 //Convert MATItem[] to MATEventItem[]. These are the same things, but must be converted for recognition of //MobileAppTracker.cs. MATWP8.MATEventItem[] newarr = new MATWP8.MATEventItem[items.Length]; //Conversion is necessary to prevent the need of referencing a separate class. for(int i = 0; i < items.Length; i++) { newarr[i] = new MATWP8.MATEventItem(items[i].name, items[i].quantity, items[i].unitPrice, items[i].revenue, items[i].attribute1, items[i].attribute2, items[i].attribute3, items[i].attribute4, items[i].attribute5); } List<MATWP8.MATEventItem> list = newarr.ToList(); MATWP8.MobileAppTracker.Instance.MeasureAction(action, revenue, currency, refId, list); #endif } }