コード例 #1
0
    /// <summary>
    /// Purge the campaign tracking data
    /// </summary>
    public static xPromoCampaignTrackingListData PurgeCampaigns(xPromoCampaignListData campaignListList, xPromoCampaignTrackingListData trackingData)
    {
        List <xPromoCampaignTrackingData> trackingDataList = new List <xPromoCampaignTrackingData>();

        for (int i = 0; i < campaignListList.games.Length; i++)
        {
            xPromoCampaignTrackingData trackingDataItem = GetTrackingDataItem(trackingData, campaignListList.games[i].campaignId);
            if (trackingDataItem == null)
            {
                trackingDataItem = new xPromoCampaignTrackingData {
                    campaignId = campaignListList.games[i].campaignId, views = 0, todayViews = 0
                };
            }
            trackingDataList.Add(trackingDataItem);
        }

        xPromoCampaignTrackingListData newTrackingData = new xPromoCampaignTrackingListData();

        newTrackingData.campaigns = new xPromoCampaignTrackingData[trackingDataList.Count];
        for (int i = 0; i < trackingDataList.Count; i++)
        {
            newTrackingData.campaigns[i] = trackingDataList[i];
        }

        // Save to local the new tracking data
        SaveToLocal(newTrackingData);

        return(newTrackingData);
    }
コード例 #2
0
    /// <summary>
    /// Save the tracking of the campaigns to local storage
    /// </summary>
    public static void SaveToLocal(xPromoCampaignTrackingListData trackingData)
    {
        string json = JsonUtility.ToJson(trackingData);

        PlayerPrefs.SetString(xPromoTrackingKey, json);
        PlayerPrefs.Save();
    }
コード例 #3
0
 public void LogTrackingData(xPromoCampaignTrackingListData trackingData)
 {
     _trackingDataLog = "";
     if (trackingData != null && trackingData.campaigns.Length > 0)
     {
         for (int i = 0; i < trackingData.campaigns.Length; i++)
         {
             _trackingDataLog += $"{trackingData.campaigns[i].campaignId}\t{trackingData.campaigns[i].views}\t{trackingData.campaigns[i].todayViews}\n";
         }
     }
     else
     {
         _trackingDataLog = "Empty";
     }
     OnLog?.Invoke(_trackingDataLog);
     _notifyOnChange?.Invoke();
 }
コード例 #4
0
    private static xPromoCampaignTrackingData GetTrackingDataItem(xPromoCampaignTrackingListData trackingData, string campaignId)
    {
        if (trackingData == null)
        {
            return(null);
        }

        for (int i = 0; i < trackingData.campaigns.Length; i++)
        {
            if (string.Compare(trackingData.campaigns[i].campaignId, campaignId, StringComparison.InvariantCulture) == 0)
            {
                return(trackingData.campaigns[i]);
            }
        }

        return(null);
    }
コード例 #5
0
    /// <summary>
    /// Read from local storage
    /// </summary>
    public static xPromoCampaignTrackingListData ReadFromLocal()
    {
        string json = PlayerPrefs.GetString(xPromoTrackingKey, string.Empty);

        if (!string.IsNullOrEmpty(json))
        {
            xPromoCampaignTrackingListData trackingData = JsonUtility.FromJson <xPromoCampaignTrackingListData>(json);

            if (trackingData != null && trackingData.campaigns.Length > 0)
            {
                var lastDayMeasuredStr = PlayerPrefs.GetString(xPromoTrackingDayKey, string.Empty);

                if (!string.IsNullOrEmpty(lastDayMeasuredStr))
                {
                    long     lastDayMeasuredInSeconds = long.Parse(lastDayMeasuredStr);
                    DateTime lastDayMeasured          = baseDate.ToLocalTime();
                    lastDayMeasured = lastDayMeasured.AddSeconds(lastDayMeasuredInSeconds);
                    var  now          = DateTime.Now;
                    bool isAnotherDay = (lastDayMeasured.Year != now.Year || lastDayMeasured.Month != now.Month || lastDayMeasured.Day != now.Day);

                    if (isAnotherDay)
                    {
                        for (int i = 0; i < trackingData.campaigns.Length; i++)
                        {
                            trackingData.campaigns[i].todayViews = 0;
                        }

                        lastDayMeasuredInSeconds = ((DateTimeOffset)lastDayMeasured).ToUnixTimeSeconds();
                        PlayerPrefs.SetString(xPromoTrackingDayKey, lastDayMeasuredInSeconds.ToString());
                        PlayerPrefs.Save();
                    }
                }
            }

            return(trackingData);
        }
        else
        {
            return(null);
        }
    }
コード例 #6
0
    /// <summary>
    /// Init the xPromo Manager
    /// </summary>
    public void Init(string remoteJson, xPromoCampaign[] embeddedCampaigns = null)
    {
        Log("Init");

        // Set Embedded campaigns
        _embeddedCampaignsElements = embeddedCampaigns;

        // Try using remote json
        bool remoteJsonIsValid = LoadCampaingDataFromJson(remoteJson);

        if (remoteJsonIsValid)
        {
            SaveLocalCampaingData("The provided remote json is valid");
        }
        else
        {
            Log("Remote campaign data is not valid");

            // Get the latest json from local storage
            string localJson        = LoadLocalCampaingData();
            bool   localJsonIsValid = LoadCampaingDataFromJson(localJson);
            if (!localJsonIsValid)
            {
                Log($"Campaigns were read from local json");
            }
            else
            {
                Log("There are no campaigns stored locally. Exit from xPromo.");
                return;
            }
        }

        trackingData = xPromoCampaignTracking.ReadFromLocal();
        trackingData = xPromoCampaignTracking.PurgeCampaigns(campaignListData, trackingData);

        // Convert the dates to the local format
        for (int i = 0; i < campaignListData.games.Length; i++)
        {
            if (campaignListData.games[i].startDate > 0)
            {
                DateTime date1 = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
                campaignListData.games[i].startDateTime = date1.AddSeconds(campaignListData.games[i].startDate);
            }
            else
            {
                campaignListData.games[i].startDateTime = DateTime.MinValue;
            }

            if (campaignListData.games[i].endDate > 0)
            {
                DateTime date2 = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
                campaignListData.games[i].endDateTime = date2.AddSeconds(campaignListData.games[i].endDate);
            }
            else
            {
                campaignListData.games[i].endDateTime = DateTime.MaxValue;
            }
        }

        ReBuildFileteredList();

        // Logger
        logger.LogCampaigns(campaignListData);
        logger.LogTrackingData(trackingData);

        xPromoDownloadManager.Instance.StartDownload(campaignListData.assetsURL, buildAssetsToDownloadList(campaignListData));
    }