/// <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
            }
        }
Example #2
0
    /// <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
        }
    }