diff --git a/Runtime/GuruCore/Runtime/Ads/ADServiceBase.cs b/Runtime/GuruCore/Runtime/Ads/ADServiceBase.cs
index e8fae02..5b94adc 100644
--- a/Runtime/GuruCore/Runtime/Ads/ADServiceBase.cs
+++ b/Runtime/GuruCore/Runtime/Ads/ADServiceBase.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using Guru;
using UnityEngine;
@@ -198,9 +199,10 @@ namespace Guru
/// 广告ARO收益打点
///
///
- private void OnAdImpression(MaxSdkBase.AdInfo adInfo)
+ ///
+ private void OnAdImpression(MaxSdkBase.AdInfo adInfo, string platform = "")
{
- Analytics.ADImpression(adInfo);
+ Analytics.ADImpression(adInfo, platform);
}
@@ -250,6 +252,10 @@ namespace Guru
protected float _badsloadStartTime = 0;
private bool _bannerVisible = false;
public bool IsBannerVisible => _bannerVisible;
+ private int _badsloadedNum = 0;
+ private int _badsLoadFailNum = 0;
+
+
private int GetAdsLoadDuration(ref float startTime)
{
@@ -320,9 +326,14 @@ namespace Guru
string adUnitId = GetBannerID();
MaxSdk.ShowBanner(adUnitId);
MaxSdk.SetBannerBackgroundColor(adUnitId, _backColor);
- OnBannerImpEvent(adUnitId);
SetBannerAutoRefresh(true, adUnitId);
- _bannerVisible = true;
+ if (!_bannerVisible)
+ {
+ _bannerVisible = true;
+ OnBannerImpEvent(adUnitId);
+ _badsloadedNum = 0;
+ _badsLoadFailNum = 0;
+ }
}
///
@@ -330,9 +341,14 @@ namespace Guru
///
public virtual void HideBanner()
{
- MaxSdk.HideBanner(GetBannerID());
- SetBannerAutoRefresh(true, GetBannerID());
- _bannerVisible = false;
+ string adUnitId = GetBannerID();
+ MaxSdk.HideBanner(adUnitId);
+ SetBannerAutoRefresh(false, adUnitId);
+ if (_bannerVisible)
+ {
+ _bannerVisible = false;
+ OnBannerHideEvent();
+ }
}
///
@@ -346,14 +362,16 @@ namespace Guru
private void OnBannerLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
- // Analytics.ADBadsLoaded(adUnitId, GetAdsLoadDuration(ref _badsloadStartTime), _badsCategory);
- Analytics.ADBadsLoaded(AdParams.Build(adUnitId, adInfo,
- duration: GetAdsLoadDuration(ref _badsloadStartTime), category: _badsCategory));
+ _badsloadedNum++;
+ // --- fixed by Yufei 2024-5-29 为 don't report bads_loaded any more. ---
+ // Analytics.ADBadsLoaded(AdParams.Build(adUnitId, adInfo,
+ // duration: GetAdsLoadDuration(ref _badsloadStartTime), category: _badsCategory));
OnBadsLoaded();
}
private void OnBannerFailedEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo)
{
+ _badsLoadFailNum ++;
// Analytics.ADBadsFailed(adUnitId, (int)errorInfo.Code, GetAdsLoadDuration(ref _badsloadStartTime), _badsCategory);
Analytics.ADBadsFailed(AdParams.Build(adUnitId,
duration: GetAdsLoadDuration(ref _badsloadStartTime), category: _badsCategory,
@@ -373,6 +391,12 @@ namespace Guru
Analytics.ADBadsImp(AdParams.Build(adUnitId, category: _badsCategory));
}
+
+ private void OnBannerHideEvent()
+ {
+ Analytics.ADBadsHide(_badsloadedNum, _badsLoadFailNum);
+ }
+
///
/// Banner 收益打点
///
diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Ads.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Ads.cs
index 30dd20f..43a235e 100644
--- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Ads.cs
+++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Ads.cs
@@ -21,22 +21,37 @@ namespace Guru
#region Ads
- private static Dictionary BuildAdEventData(AdParams adParams)
+ private static Dictionary BuildAdEventData(AdParams adParams, Dictionary extra = null)
{
- if (string.IsNullOrEmpty(adParams.category)) adParams.category = DefaultCategory;
- if (string.IsNullOrEmpty(adParams.waterfallName)) adParams.waterfallName = DefaultWaterfall;
+ if (string.IsNullOrEmpty(adParams.category))
+ adParams.category = DefaultCategory;
+ if (string.IsNullOrEmpty(adParams.waterfallName))
+ adParams.waterfallName = DefaultWaterfall;
var data = new Dictionary()
{
{ ParameterItemCategory, adParams.category },
{ ParameterItemName, adParams.adUnitId },
- { ParameterNetworkName, adParams.networkName },
- { ParameterNetworkPlacement, adParams.networkPlacement },
- { ParameterWaterfall, adParams.waterfallName },
- { ParameterDuration, adParams.duration },
};
- if (adParams.errorCode != 0) data[ParameterErrorCode] = adParams.errorCode;
+ if (adParams.duration > 0)
+ data[ParameterDuration] = adParams.duration;
+ if (adParams.errorCode != 0)
+ data[ParameterErrorCode] = adParams.errorCode;
+ if (!string.IsNullOrEmpty(adParams.networkName))
+ data[ParameterNetworkName] = adParams.networkName;
+ if (!string.IsNullOrEmpty(adParams.networkPlacement))
+ data[ParameterNetworkPlacement] = adParams.networkPlacement;
+ if (!string.IsNullOrEmpty(adParams.waterfallName))
+ data[ParameterWaterfall] = adParams.waterfallName;
+
+ if (extra != null && extra.Count > 0)
+ {
+ foreach (var k in extra.Keys)
+ {
+ data[k] = extra[k];
+ }
+ }
return data;
}
@@ -66,6 +81,15 @@ namespace Guru
LogEvent(EventBadsImp, BuildAdEventData(adParams));
}
+ public static void ADBadsHide( int loadedTimes, int failTimes)
+ {
+ var dict = new Dictionary()
+ {
+ ["loaded_times"] = loadedTimes,
+ ["fail_times"] = failTimes
+ };
+ LogEvent(EventBadsHide, dict);
+ }
//---------------------- INTERSTITIAL -------------------------
///
/// 广告拉取
@@ -205,12 +229,13 @@ namespace Guru
{
SetAttProperty(status);
Debug.Log($"{TAG} AttResult: {status} type:{type} others:{others}");
- LogEvent(EventATTResult, new Dictionary()
- {
- { ParameterItemCategory, status },
- { "type", type },
- { ParameterItemName, others },
- });
+ var dict = new Dictionary()
+ {
+ { ParameterItemCategory, status },
+ { "type", type }
+ };
+ if(!string.IsNullOrEmpty(others)) dict[ParameterItemName] = others;
+ LogEvent(EventATTResult, dict);
}
///
diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs
index a05ea44..4c545d0 100644
--- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs
+++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs
@@ -34,6 +34,7 @@ namespace Guru
public static readonly string EventBadsFailed = "bads_failed";
public static readonly string EventBadsClick = "bads_clk";
public static readonly string EventBadsImp = "bads_imp";
+ public static readonly string EventBadsHide = "bads_hide";
//插屏广告打点事件
public static readonly string EventIadsLoad = "iads_load";
diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.FirebaseDefine.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.FirebaseDefine.cs
index b714efa..2cfffdb 100644
--- a/Runtime/GuruCore/Runtime/Analytics/Analytics.FirebaseDefine.cs
+++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.FirebaseDefine.cs
@@ -1,207 +1,108 @@
namespace Guru
{
- using Firebase.Analytics;
//https://firebase.google.com/docs/reference/cpp/group/parameter-names
//Firebase内置定义事件名称和参数名称
public static partial class Analytics
{
- private static string EventAdImpression =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventAdImpression : "ad_impression";
- private static string EventAddPaymentInfo =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventAddPaymentInfo : "add_payment_info";
- private static string EventAddShippingInfo =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventAddShippingInfo : "add_shipping_info";
- private static string EventAddToCart =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventAddToCart : "add_to_cart";
- private static string EventAddToWishlist =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventAddToWishlist : "add_to_wishlist";
- private static string EventAppOpen =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventAppOpen : "app_open";
- private static string EventBeginCheckout =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventBeginCheckout : "begin_checkout";
- private static string EventCampaignDetails =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventCampaignDetails : "campaign_details";
- private static string EventEarnVirtualCurrency =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventEarnVirtualCurrency : "earn_virtual_currency";
- private static string EventGenerateLead =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventGenerateLead : "generate_lead";
- private static string EventJoinGroup =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventJoinGroup : "join_group";
- private static string EventLevelEnd =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventLevelEnd : "level_end";
- private static string EventLevelStart =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventLevelStart : "level_start";
- private static string EventLevelUp =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventLevelUp : "level_up";
- private static string EventLogin =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventLogin : "login";
- private static string EventPostScore =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventPostScore : "post_score";
- private static string EventPurchase =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventPurchase : "purchase";
- private static string EventRefund =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventRefund : "refund";
- private static string EventRemoveFromCart =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventRemoveFromCart : "remove_from_cart";
- private static string EventScreenView =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventScreenView : "screen_view";
- private static string EventSearch =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventSearch : "search";
- private static string EventSelectContent =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventSelectContent : "select_content";
- private static string EventSelectItem =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventSelectItem : "select_item";
- private static string EventSelectPromotion =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventSelectPromotion : "select_promotion";
- private static string EventShare =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventShare : "share";
- private static string EventSignUp =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventSignUp : "sign_up";
- private static string EventSpendVirtualCurrency =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventSpendVirtualCurrency : "spend_virtual_currency";
- private static string EventTutorialBegin =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventTutorialBegin : "tutorial_begin";
- private static string EventTutorialComplete =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventTutorialComplete : "tutorial_complete";
- private static string EventUnlockAchievement =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventUnlockAchievement : "unlock_achievement";
- private static string EventViewCart =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventViewCart : "view_cart";
- private static string EventViewItem =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventViewItem : "view_item";
- private static string EventViewItemList =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventViewItemList : "view_item_list";
- private static string EventViewPromotion =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventViewPromotion : "view_promotion";
- private static string EventViewSearchResults =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.EventViewSearchResults : "view_search_results";
- private static string ParameterAchievementId =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterAchievementId : "achievement_id";
- private static string ParameterAdFormat =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterAdFormat : "ad_format";
- private static string ParameterAdNetworkClickID =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterAdNetworkClickID : "aclid";
- private static string ParameterAdPlatform =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterAdPlatform : "ad_platform";
- private static string ParameterAdSource =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterAdSource : "ad_source";
+ internal static readonly string EventAdImpression = "ad_impression";
+ internal static readonly string EventAddPaymentInfo = "add_payment_info";
+ internal static readonly string EventAddShippingInfo = "add_shipping_info";
+ internal static readonly string EventAddToCart = "add_to_cart";
+ internal static readonly string EventAddToWishlist = "add_to_wishlist";
+ internal static readonly string EventAppOpen = "app_open";
+ internal static readonly string EventBeginCheckout = "begin_checkout";
+ internal static readonly string EventCampaignDetails = "campaign_details";
+ internal static readonly string EventEarnVirtualCurrency = "earn_virtual_currency";
+ internal static readonly string EventGenerateLead = "generate_lead";
+ internal static readonly string EventJoinGroup = "join_group";
+ internal static readonly string EventLevelEnd = "level_end";
+ internal static readonly string EventLevelStart = "level_start";
+ internal static readonly string EventLevelUp = "level_up";
+ internal static readonly string EventLogin = "login";
+ internal static readonly string EventPostScore = "post_score";
+ internal static readonly string EventPurchase = "purchase";
+ internal static readonly string EventRefund = "refund";
+ internal static readonly string EventRemoveFromCart = "remove_from_cart";
+ internal static readonly string EventScreenView = "screen_view";
+ internal static readonly string EventSearch = "search";
+ internal static readonly string EventSelectContent = "select_content";
+ internal static readonly string EventSelectItem = "select_item";
+ internal static readonly string EventSelectPromotion = "select_promotion";
+ internal static readonly string EventShare = "share";
+ internal static readonly string EventSignUp = "sign_up";
+ internal static readonly string EventSpendVirtualCurrency = "spend_virtual_currency";
+ internal static readonly string EventTutorialBegin = "tutorial_begin";
+ internal static readonly string EventTutorialComplete = "tutorial_complete";
+ internal static readonly string EventUnlockAchievement = "unlock_achievement";
+ internal static readonly string EventViewCart = "view_cart";
+ internal static readonly string EventViewItem = "view_item";
+ internal static readonly string EventViewItemList = "view_item_list";
+ internal static readonly string EventViewPromotion = "view_promotion";
+ internal static readonly string EventViewSearchResults = "view_search_results";
+ internal static readonly string ParameterAchievementId = "achievement_id";
+ internal static readonly string ParameterAdFormat = "ad_format";
+ internal static readonly string ParameterAdNetworkClickID = "aclid";
+ internal static readonly string ParameterAdPlatform = "ad_platform";
+ internal static readonly string ParameterAdSource = "ad_source";
- private static string ParameterAffiliation =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterAffiliation : "affiliation";
- private static string ParameterCP1 =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterCP1 : "cp1";
- private static string ParameterCampaign =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterCampaign : "campaign";
- private static string ParameterCharacter =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterCharacter : "character";
- private static string ParameterContent =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterContent : "content";
- private static string ParameterContentType =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterContentType : "content_type";
- private static string ParameterCoupon =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterCoupon : "coupon";
- private static string ParameterCreativeName =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterCreativeName : "creative_name";
- private static string ParameterCreativeSlot =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterCreativeSlot : "creative_slot";
- private static string ParameterCurrency =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterCurrency : "currency";
- private static string ParameterDestination =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterDestination : "destination";
- private static string ParameterDiscount =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterDiscount : "discount";
- private static string ParameterEndDate =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterEndDate : "end_date";
- private static string ParameterExtendSession =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterExtendSession : "extend_session";
- private static string ParameterFlightNumber =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterFlightNumber : "flight_number";
- private static string ParameterGroupId =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterGroupId : "group_id";
- private static string ParameterIndex =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterIndex : "index";
- private static string ParameterItemBrand =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterItemBrand : "item_brand";
- private static string ParameterItemCategory =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterItemCategory : "item_category";
- private static string ParameterItemCategory2 =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterItemCategory2 : "item_category2";
- private static string ParameterItemCategory3 =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterItemCategory3 : "item_category3";
- private static string ParameterItemCategory4 =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterItemCategory4 : "item_category4";
- private static string ParameterItemCategory5 =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterItemCategory5 : "item_category5";
- private static string ParameterItemId =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterItemId : "item_id";
- private static string ParameterItemList =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterItemListName : "item_id";
- private static string ParameterItemListID =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterItemListID : "item_list_id";
- private static string ParameterItemListName =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterItemListName : "item_list_name";
- private static string ParameterItemName =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterItemName : "item_name";
- private static string ParameterLevel =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterLevel : "level";
- private static string ParameterLevelName =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterLevelName : "level_name";
- private static string ParameterLocation =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterLocation : "location";
- private static string ParameterLocationID =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterLocationID : "location_id";
- private static string ParameterMedium =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterMedium : "medium";
- private static string ParameterMethod =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterMethod : "method";
- private static string ParameterNumberOfNights =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterNumberOfNights : "number_of_nights";
- private static string ParameterNumberOfPassengers =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterNumberOfPassengers : "number_of_passengers";
- private static string ParameterNumberOfRooms =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterNumberOfRooms : "number_of_rooms";
- private static string ParameterOrigin =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterOrigin : "origin";
- private static string ParameterPaymentType =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterPaymentType : "payment_type";
- private static string ParameterPrice =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterPrice : "price";
- private static string ParameterPromotionID =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterPromotionID : "promotion_id";
- private static string ParameterPromotionName =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterPromotionName : "promotion_name";
- private static string ParameterQuantity =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterQuantity : "quantity";
- private static string ParameterScore =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterScore : "score";
- private static string ParameterScreenClass =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterScreenClass : "screen_class";
- private static string ParameterScreenName =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterScreenName : "screen_name";
- private static string ParameterSearchTerm =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterSearchTerm : "search_term";
- private static string ParameterShipping =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterShipping : "shipping";
- private static string ParameterShippingTier =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterShippingTier : "shipping_tier";
- private static string ParameterSignUpMethod =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.UserPropertySignUpMethod : "sign_up_method";
- private static string ParameterSource =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterSource : "source";
- private static string ParameterStartDate =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterStartDate : "start_date";
- private static string ParameterSuccess =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterSuccess : "success";
- private static string ParameterTax =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterTax : "tax";
- private static string ParameterTerm =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterTerm : "term";
- private static string ParameterTransactionId =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterTransactionId : "transaction_id";
- private static string ParameterTravelClass =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterTravelClass : "travel_class";
- private static string ParameterValue =>
- FirebaseUtil.IsFirebaseInitialized ? FirebaseAnalytics.ParameterValue : "value";
+ internal static readonly string ParameterAffiliation = "affiliation";
+ internal static readonly string ParameterCP1 = "cp1";
+ internal static readonly string ParameterCampaign = "campaign";
+ internal static readonly string ParameterCharacter = "character";
+ internal static readonly string ParameterContent = "content";
+ internal static readonly string ParameterContentType = "content_type";
+ internal static readonly string ParameterCoupon = "coupon";
+ internal static readonly string ParameterCreativeName = "creative_name";
+ internal static readonly string ParameterCreativeSlot = "creative_slot";
+ internal static readonly string ParameterCurrency = "currency";
+ internal static readonly string ParameterDestination = "destination";
+ internal static readonly string ParameterDiscount = "discount";
+ internal static readonly string ParameterEndDate = "end_date";
+ internal static readonly string ParameterExtendSession = "extend_session";
+ internal static readonly string ParameterFlightNumber = "flight_number";
+ internal static readonly string ParameterGroupId = "group_id";
+ internal static readonly string ParameterIndex = "index";
+ internal static readonly string ParameterItemBrand = "item_brand";
+ internal static readonly string ParameterItemCategory = "item_category";
+ internal static readonly string ParameterItemCategory2 = "item_category2";
+ internal static readonly string ParameterItemCategory3 = "item_category3";
+ internal static readonly string ParameterItemCategory4 = "item_category4";
+ internal static readonly string ParameterItemCategory5 = "item_category5";
+ internal static readonly string ParameterItemId = "item_id";
+ internal static readonly string ParameterItemList = "item_list";
+ internal static readonly string ParameterItemListID = "item_list_id";
+ internal static readonly string ParameterItemListName = "item_list_name";
+ internal static readonly string ParameterItemName = "item_name";
+ internal static readonly string ParameterLevel = "level";
+ internal static readonly string ParameterLevelName = "level_name";
+ internal static readonly string ParameterLocation = "location";
+ internal static readonly string ParameterLocationID = "location_id";
+ internal static readonly string ParameterMedium = "medium";
+ internal static readonly string ParameterMethod = "method";
+ internal static readonly string ParameterNumberOfNights = "number_of_nights";
+ internal static readonly string ParameterNumberOfPassengers = "number_of_passengers";
+ internal static readonly string ParameterNumberOfRooms = "number_of_rooms";
+ internal static readonly string ParameterOrigin = "origin";
+ internal static readonly string ParameterPaymentType = "payment_type";
+ internal static readonly string ParameterPrice = "price";
+ internal static readonly string ParameterPromotionID = "promotion_id";
+ internal static readonly string ParameterPromotionName = "promotion_name";
+ internal static readonly string ParameterQuantity = "quantity";
+ internal static readonly string ParameterScore = "score";
+ internal static readonly string ParameterScreenClass = "screen_class";
+ internal static readonly string ParameterScreenName = "screen_name";
+ internal static readonly string ParameterSearchTerm = "search_term";
+ internal static readonly string ParameterShipping = "shipping";
+ internal static readonly string ParameterShippingTier = "shipping_tier";
+ internal static readonly string ParameterSignUpMethod = "sign_up_method";
+ internal static readonly string ParameterSource = "source";
+ internal static readonly string ParameterStartDate = "start_date";
+ internal static readonly string ParameterSuccess = "success";
+ internal static readonly string ParameterTax = "tax";
+ internal static readonly string ParameterTerm = "term";
+ internal static readonly string ParameterTransactionId = "transaction_id";
+ internal static readonly string ParameterTravelClass = "travel_class";
+ internal static readonly string ParameterValue = "value";
}
}
\ No newline at end of file
diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs
index 0c3d157..85710f0 100644
--- a/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs
+++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs
@@ -66,109 +66,34 @@ namespace Guru
/// 关卡数
/// 关卡名称
/// 关卡类型
- /// 关卡配置表 ID
+ /// 关卡配置表 ID
/// 启动方式
/// 是否是重玩
/// 额外数据
public static void LogLevelStart(int level, string levelName,
- string levelType = "main", string levelConfigId = "", string startType = "play", bool isReplay = false,
+ string levelType = "main", string itemId = "", string startType = "play", bool isReplay = false,
Dictionary extra = null)
{
- Dictionary dataDict = new Dictionary()
+ Dictionary dict = new Dictionary()
{
{ ParameterLevel, level },
{ ParameterLevelName, levelName },
{ ParameterItemCategory, levelType },
- { ParameterItemId, levelConfigId },
{ ParameterStartType, startType },
{ ParameterReplay, isReplay ? "true" : "false" },
};
+
+ if(!string.IsNullOrEmpty(itemId))
+ dict[ParameterItemId] = itemId;
if (extra != null)
{
- dataDict.AddRange(extra, isOverride:true);
+ dict.AddRange(extra, isOverride:true);
}
- LogEvent(EventLevelStart, dataDict);
- }
-
- ///
- /// 玩家已开始挑战某个关卡时触发。
- ///
- /// 关卡类型(主关卡xx模式/每日挑战/活动1/活动2 等)
- /// 棋局id /图片id
- /// 关卡名称
- /// 关卡数
- [Obsolete("Obsolete method, please use instead. will be discard in next version.")]
- internal static void LevelStart(string itemCategory, string itemID, string levelName, int level, bool isReplay, bool isContinue)
- {
-
- string startType = "play";
- if (isReplay) startType = "replay";
- if (isContinue) startType = "continue";
-
- LogEvent(EventLevelStart, new Dictionary()
- {
- { ParameterItemCategory, itemCategory},
- { ParameterItemId, itemID},
- { ParameterLevelName, levelName },
- { ParameterLevel, level },
- { ParameterReplay, isReplay ? "true" : "false"},
- { ParameterContinue, isContinue ? "true" : "false"},
- { ParameterStartType, startType },
- });
+ LogEvent(EventLevelStart, dict);
}
-
-
- ///
- /// 关卡结束(Firebase标准事件)
- ///
- /// 关卡类型(主关卡xx模式/每日挑战/活动1/活动2 等)
- /// 棋局id /图片id
- /// 关卡名称
- /// 关卡数
- /// "此参数是对success参数的补充说明,除成功/失败/超时/退出这四种情况外,其余情况可自行定义值"
- /// 游戏时长(单位:msec)【可选】
- /// 游戏步数【可选】
- /// 游戏分数【可选】
- /// 重玩标记【可选】
- [Obsolete("Obsolete method, please use instead. will be discard in next version.")]
- internal static void LevelEnd(string itemCategory, string itemID, string levelName, int level,
- ELevelResult result, int? duration = null, int? step = null, int? score = null, bool isReplay = false,
- Dictionary extra = null)
- {
- var dict = new Dictionary()
- {
- { ParameterItemCategory, itemCategory },
- { ParameterItemId, itemID },
- { ParameterLevelName, levelName },
- { ParameterLevel, level },
- { ParameterSuccess, result == ELevelResult.success ? "true" : "false" },
- { ParameterResult, result.ToString() },
- { ParameterReplay, isReplay ? "true" : "false"},
- };
-
- if (duration != null)
- dict[ParameterDuration] = duration.Value;
- if(step != null)
- dict[ParameterStep] = step.Value;
- if(score != null)
- dict[ParameterScore] = score.Value;
- if(extra != null)
- dict.AddRange(extra, isOverride:true);
-
- LogEvent(EventLevelEnd, dict);
-
- if (result == ELevelResult.success)
- {
- int lv = BPlay;
- if (lv == 0) lv = level;
- LevelEndSuccess(lv, itemCategory, itemID);
- }
- }
-
-
///
/// 关卡结束(Firebase标准事件)
///
@@ -176,30 +101,29 @@ namespace Guru
///
///
///
- ///
+ ///
///
///
///
///
public static void LogLevelEnd(int level, string result,
- string levelName = "", string levelType = "main", string puzzleId = "",
- int? duration = null, int? step = null, int? score = null, Dictionary extra = null)
+ string levelName = "", string levelType = "main", string itemId = "",
+ int duration = 0, int? step = null, int? score = null, Dictionary extra = null)
{
bool isSuccess = result.Equals("success");
-
+
var dict = new Dictionary()
{
- { ParameterItemCategory, levelType },
- { ParameterLevelName, levelName },
- { ParameterLevel, level },
- { ParameterSuccess, isSuccess ? "true" : "false" },
- { ParameterResult, result },
+ [ParameterLevel] = level,
+ [ParameterLevelName] = levelName,
+ [ParameterItemCategory] = levelType,
+ [ParameterSuccess] = isSuccess ? "true" : "false",
+ [ParameterResult] = result,
+ [ParameterDuration] = duration
};
- if(!string.IsNullOrEmpty(puzzleId))
- dict[ParameterItemId] = puzzleId;
- if (duration != null)
- dict[ParameterDuration] = duration.Value;
+ if(!string.IsNullOrEmpty(itemId))
+ dict[ParameterItemId] = itemId;
if(step != null)
dict[ParameterStep] = step.Value;
if(score != null)
@@ -213,7 +137,7 @@ namespace Guru
{
int lv = BPlay;
if (lv == 0) lv = level;
- LevelEndSuccess(lv, levelType, puzzleId);
+ LevelEndSuccess(lv, levelType, itemId);
}
}
@@ -222,20 +146,30 @@ namespace Guru
///
/// 新用户通过第几关(仅记录前n关,根据项目自行确定,不区分关卡类型)[买量用]
///
+ /// 总计完成的管卡数 (b_play)
///
- /// 关卡(从1开始)
- /// /// 棋局id /图片id
- public static void LevelEndSuccess( int level, string levelType, string puzzleId)
+ /// 棋局id /图片id
+ public static void LevelEndSuccess( int level, string levelType = "", string itemId = "")
{
if (level > GuruSettings.Instance.AnalyticsSetting.LevelEndSuccessNum)
return;
string eventName = $"level_end_success_{level}";
- LogEvent(eventName,new Dictionary()
+ var dict = new Dictionary()
{
{ ParameterLevel, level },
- { ParameterItemId, puzzleId },
- { ParameterItemCategory, levelType}
+ };
+
+ if(!string.IsNullOrEmpty(levelType))
+ dict[ParameterItemCategory] = levelType;
+ if(!string.IsNullOrEmpty(itemId))
+ dict[ParameterItemId] = itemId;
+
+ LogEvent(eventName, dict, new EventSetting()
+ {
+ EnableFirebaseAnalytics = true,
+ EnableFacebookAnalytics = true,
+ EnableAdjustAnalytics = true
});
}
@@ -479,6 +413,7 @@ namespace Guru
/// Google ARO买量点
///
/// 广告收入数据
+ /// 广告平台
///
///
/// value double eg:0.002
@@ -489,14 +424,15 @@ namespace Guru
/// ad_unit_name string 广告位名称
/// ad_creative_id string 广告素材id
///
- public static void ADImpression(MaxSdkBase.AdInfo impressionData)
+ public static void ADImpression(MaxSdkBase.AdInfo impressionData, string platform = "")
{
+ if (string.IsNullOrEmpty(platform)) platform = AdMAX;
double revenue = impressionData.Revenue;
LogEvent(EventAdImpression, new Dictionary()
{
[ParameterValue] = revenue,
[ParameterCurrency] = USD,
- [ParameterAdPlatform] = AdMAX,
+ [ParameterAdPlatform] = platform,
[ParameterAdSource] = impressionData.NetworkName,
[ParameterAdFormat] = impressionData.AdFormat,
[ParameterAdUnitName] = impressionData.AdUnitIdentifier,
@@ -569,10 +505,11 @@ namespace Guru
/// 用户的付费币种
/// 订单 ID
/// 付费类型订阅/产品(subscription/product)
- /// 是否为试用(1:试用,0:付费)
- public static void IAPRetTrue(string scene, string productId, double value, string currency, string orderId, string type, bool isfree)
+ /// 是否为试用(1:试用,0:付费)
+ /// 若存在 Offer 的话需要上报 OfferID
+ internal static void IAPRetTrue(string scene, string productId, double value, string currency, string orderId, string type, bool isFree = false, string offerId = "")
{
- LogEvent(EventIAPReturnTrue, new Dictionary()
+ var dict = new Dictionary()
{
{ ParameterItemCategory, scene },
{ ParameterItemName, productId },
@@ -580,22 +517,34 @@ namespace Guru
{ ParameterValue, value },
{ ParameterCurrency, currency },
{ "order_id", orderId },
- { "type", type },
- { "isfree", isfree ? 1 : 0 },
+ { "type", type },
+ { "isfree", isFree ? 1 : 0 },
+ };
+
+ if(!string.IsNullOrEmpty(offerId))
+ dict["basePlan"] = offerId;
+
+ LogEvent(EventIAPReturnTrue, dict, new EventSetting()
+ {
+ EnableFirebaseAnalytics = true,
+ EnableAdjustAnalytics = true,
});
+
}
-
+
///
/// "app 内弹出的付费引导IAP付费或试用失败打点"
///
/// 界面跳转的来源
- /// product id,多个产品用逗号分隔,第一个商品id放主推商品id
- public static void IAPRetFalse(string itemCategory, string productID, string failReason)
+ /// product id,多个产品用逗号分隔,第一个商品id放主推商品id
+ ///
+ internal static void IAPRetFalse(string itemCategory, string productId, string failReason)
{
LogEvent(EventIAPReturnFalse, new Dictionary()
{
{ ParameterItemCategory, itemCategory },
- { ParameterItemName, productID },
+ { ParameterItemName, productId },
+ { ParameterProductId, productId },
{ ParameterResult, failReason }
});
}
@@ -660,28 +609,27 @@ namespace Guru
string orderDate = orderData.payedDate;
string scene = orderData.scene;
bool isFree = orderData.isFree;
+ string offerId = orderData.offerId;
// TCH 001
Tch001IAPRev(usdPrice, productId, orderId, orderType, orderDate);
// TCH 020
Tch02IAPRev(usdPrice, productId, orderId, orderType, orderDate);
- // Adjust Track IAP Purchase
- AdjustService.TrackIAPPurchase(usdPrice, productId); // 上报 IAP 支付事件
// Facebook Track IAP Purchase
FBPurchase(usdPrice, USD, "iap", IAPPlatform);
if (orderData.orderType == 1)
{
- // sub_pruchase
+ // sub_pruchase : Firebase + Guru + Adjust
SubPurchase(usdPrice, productId, orderId, orderDate);
}
else
{
- // iap_purchase
+ // iap_purchase : Firebase + Guru + Adjust
IAPPurchase(usdPrice, productId, orderId, orderDate);
}
- // IAP Ret true
- IAPRetTrue(scene, productId, payPrice, userCurrency, orderId, orderType2, isFree);
+ // IAP Ret true : Firebase + Guru + Adjust
+ IAPRetTrue(scene, productId, payPrice, userCurrency, orderId, orderType2, isFree, offerId);
}
@@ -714,7 +662,7 @@ namespace Guru
[ParameterPlatform] = IAPPlatform,
[ParameterValue] = value,
[ParameterCurrency] = USD,
- ["product_id"] = productId,
+ [ParameterProductId] = productId,
["order_id"] = orderId,
["order_type"] = orderType,
["trans_ts"] = orderDate
diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs
index 1840f37..36df1d0 100644
--- a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs
+++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs
@@ -209,6 +209,9 @@ namespace Guru
parameters.Add(new Parameter(kv.Key, doubleValue));
else if (kv.Value is decimal decimalValue)
parameters.Add(new Parameter(kv.Key, decimal.ToDouble(decimalValue)));
+ else
+ parameters.Add(new Parameter(kv.Key, kv.Value.ToString()));
+
}
FirebaseAnalytics.LogEvent(eventName, parameters.ToArray());
diff --git a/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/AppleOrderRequest.cs b/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/AppleOrderRequest.cs
index 58e09df..73c5b59 100644
--- a/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/AppleOrderRequest.cs
+++ b/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/AppleOrderRequest.cs
@@ -58,13 +58,13 @@ namespace Guru
public static AppleOrderRequest Build(int orderType, string productId,
string receipt, string orderId, string date, int level,
- string userCurrency, double payPrice, string scene, bool isFree = false)
+ string userCurrency, double payPrice, string scene, bool isFree = false, string offerId = "", string basePlanId = "")
{
var request = new AppleOrderRequest()
{
receipt = receipt,
orderData = new AppleOrderData(orderType, productId, receipt, orderId, date, level,
- userCurrency, payPrice, scene, isFree),
+ userCurrency, payPrice, scene, isFree, offerId, basePlanId),
};
return request;
}
diff --git a/Runtime/GuruIAP/Runtime/Code/IAPServiceBase.cs b/Runtime/GuruIAP/Runtime/Code/IAPServiceBase.cs
index c69f4c3..37106dd 100644
--- a/Runtime/GuruIAP/Runtime/Code/IAPServiceBase.cs
+++ b/Runtime/GuruIAP/Runtime/Code/IAPServiceBase.cs
@@ -287,9 +287,6 @@ namespace Guru
//添加安装游戏后第一次初试化进行恢复购买的回调 只有安卓才有
_googlePlayStoreExtensions.RestoreTransactions(OnRestoreHandle);
#endif
-
-
-
foreach (var product in _storeController.products.all)
{
@@ -1012,7 +1009,7 @@ namespace Guru
var request = GoogleOrderRequest.Build(data);
ReportNextOrder(request);
}
-
+
///
/// 上报 Apple Order Request
///
@@ -1022,6 +1019,10 @@ namespace Guru
///
///
///
+ ///
+ ///
+ ///
+ ///
///
///
private void ReportAppleOrder(int orderType, string productId, string receipt,
@@ -1030,7 +1031,7 @@ namespace Guru
{
var payedDate = TimeUtil.GetTimeStampString(date);
var request = AppleOrderRequest.Build(orderType, productId, receipt, orderId, payedDate, level,
- userCurrency, payPrice, scene, isFree);
+ userCurrency, payPrice, scene, isFree, offerId, basePlanId);
ReportNextOrder(request);
}