Browse Source

IOS SDK 接入完毕 开始出包测试

hexiaojie 1 year ago
parent
commit
c37aaf9733

+ 231 - 0
GameClient/Assets/Game/HotUpdate/Platform/QDDouYouManagerIos.cs

@@ -0,0 +1,231 @@
+using System;
+using ET;
+using UnityEngine;
+using GFGGame.Launcher;
+
+namespace GFGGame
+{
+    public class QDDouYouManagerIos : SingletonBase<QDDouYouManagerIos>
+    {
+        public bool isLogining;
+
+        //ios sdk 返回的
+        public string uid;
+        public string account;
+        public string token;
+
+        public void Init()
+        {
+            Debug.Log("实例化DouYouSDKListenerIos");
+            QDDouYouManagerInitIos.Instance.douYouSDKListenerIos = new DouYouSDKListenerIos();
+        }
+
+        public void Login()
+        {
+            QDDouYouManagerInitIos.Instance.ShowLogin();
+        }
+
+        public void OnCreateRole()
+        {
+            QDManager.PushRoleAction(DouYouRoleLogReportType.CreateRole);
+        }
+
+        public void OnEnterGame()
+        {
+            QDManager.PushRoleAction(DouYouRoleLogReportType.EnterGame);
+        }
+
+        public void OnQuitToLoginView()
+        {
+            Debug.Log($"DouYou ios OnQuitToLoginView");
+        }
+
+        public void Logout()
+        {
+            Debug.Log($"Game.HotUpdate DouYou ios Logout");
+            QDDouYouManagerInitIos.Instance.Logout();
+        }
+
+        public void LoginOutBefore()
+        {
+            QDManager.PushRoleAction(DouYouRoleLogReportType.ExitGame);
+        }
+
+        public void Pay(int buyID, int count, string orderID, long price)
+        {
+            ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(buyID);
+            if (shopCfg == null)
+            {
+                Log.Error($"recharge {buyID} config not found!");
+                return;
+            }
+
+            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(shopCfg.itemId);
+            if (itemCfg == null)
+            {
+                Log.Error($"recharge {buyID} itemCfgId:{shopCfg.itemId} config not found!");
+                return;
+            }
+
+            ItemCfg costItemCfg = ItemCfgArray.Instance.GetCfg(shopCfg.costId);
+            if (costItemCfg == null)
+            {
+                Log.Error($"recharge {buyID} itemCfgId:{shopCfg.costId} config not found!");
+                return;
+            }
+
+            var zoneScene = GameGlobal.zoneScene;
+            if (zoneScene == null) return;
+
+            if (zoneScene.GetComponent<RoleInfosComponent>() == null ||
+                zoneScene.GetComponent<RoleInfosComponent>().IsDisposed) return;
+
+            var roleInfo = zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole();
+            if (roleInfo == null) return;
+
+            if (GameGlobal.myNumericComponent == null) return;
+            int lvl = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
+            int vipLvl = GameGlobal.myNumericComponent.GetAsInt(NumericType.VipLevel);
+
+            if (zoneScene.GetComponent<ServerInfosComponent>() == null) return;
+            if (zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo == null) return;
+
+            var serverInfosComponent = zoneScene.GetComponent<ServerInfosComponent>();
+
+            //自定义参数
+            string cpOrderId = orderID;
+            string productPrice = price.ToString();
+            string productId = shopCfg.id.ToString();
+            string productName = shopCfg.productName;
+            string productDesc = "";
+            string productCount = count.ToString();
+            string exchangeRate = 1.ToString();
+            string currencyName = costItemCfg.name;
+            string serverId = (serverInfosComponent?.CurrentServerId ?? 0).ToString();
+            string serverName = serverInfosComponent?.recentlyServerInfo?.ServerName ?? "";
+            string roleId = roleInfo.Id.ToString();
+            string roleName = roleInfo.Name;
+            string roleLevel = lvl.ToString();
+            string roleVip = vipLvl.ToString();
+            string partyName = LeagueDataManager.Instance.LeagueData?.Name ?? "";
+            string roleBalence = "0";
+            string other = orderID + "|gfg|" + roleInfo.Id;
+
+            QDDouYouManagerInitIos.Instance.ShowPay(cpOrderId, productPrice, productId, productName, productDesc,
+                productCount, exchangeRate, currencyName, serverId, serverName, roleId, roleName, roleLevel, roleVip,
+                partyName, roleBalence, other);
+        }
+
+        public void Exit()
+        {
+            QDManager.PushRoleAction(DouYouRoleLogReportType.ExitGame);
+            QDDouYouManagerInitIos.Instance.Logout();
+        }
+    }
+
+    /// <summary>
+    /// SDK回调
+    /// </summary>
+    public class DouYouSDKListenerIos : IDouYouSDKListenerIos
+    {
+        /// <summary>
+        /// SDK实例化成功
+        /// </summary>
+        /// <param name="message">SDK 实例化成功</param>
+        public void InitSuccessAb(string message)
+        {
+            Debug.Log("Game.HotUpdate InitSuccessAb: " + message);
+        }
+
+        public void InitErrorAb(string message)
+        {
+            Debug.Log("Game.HotUpdate InitErrorAb: " + message);
+        }
+
+        /// <summary>
+        /// 登录成功 
+        /// </summary>
+        /// <param name="message">resUid + "|gfg|" + token</param>
+        public void LoginSuccessAb(string message)
+        {
+            Debug.Log("Game.HotUpdate ios LoginSuccessAb: " + message);
+            string[] result = message.Split(new string[] { "|gfg|" }, StringSplitOptions.None);
+
+            QDDouYouManagerIos.Instance.isLogining = false;
+            QDDouYouManagerIos.Instance.uid = result[0];
+            QDDouYouManagerIos.Instance.token = result[1];
+            //登录成功的回调
+            EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_LOGINED, result[0]);
+        }
+
+        /// <summary>
+        /// 登录失败
+        /// </summary>
+        /// <param name="message"></param>
+        public void LoginErrorAb(string message)
+        {
+            Debug.Log("Game.HotUpdate LoginErrorAb: " + message);
+        }
+
+        /// <summary>
+        /// 切换账号回调---先当成退出登录处理
+        /// </summary>
+        public void SwitchAccountsAb(string message)
+        {
+            Debug.Log("Game.HotUpdate SwitchAccountsAb: " + message);
+            GameController.QuitToLoginView(true);
+            EventAgent.DispatchEvent(ConstMessage.OUT_LOGIN);
+        }
+
+        /// <summary>
+        /// 退出登录后
+        /// </summary>
+        /// <param name="message">退出登录成功!</param>
+        public void LogoutSuccessAb(string message)
+        {
+            Debug.Log("Game.HotUpdate LogoutSuccessAb: " + message);
+            GameController.QuitToLoginView(true);
+            EventAgent.DispatchEvent(ConstMessage.OUT_LOGIN);
+        }
+
+        /// <summary>
+        /// 退出登录失败
+        /// </summary>
+        /// <param name="message"></param>
+        public void LogoutErrorAb(string message)
+        {
+            Debug.Log("Game.HotUpdate LogoutErrorAb: " + message);
+        }
+
+        /// <summary>
+        /// 支付失败
+        /// </summary>
+        /// <param name="message">code + "|gfg|" + params.toString()</param>
+        public void PayErrorAb(string message)
+        {
+            Debug.Log("Game.HotUpdate PayErrorAb: " + message);
+            //改变临时订单状态为失败
+        }
+
+        /// <summary>
+        /// 支付成功
+        /// </summary>
+        /// <param name="message">code + "|gfg|" + params.toString()</param>
+        public void PaySuccessAb(string message)
+        {
+            Debug.Log("Game.HotUpdate PaySuccessAb" + message);
+            //改变临时订单状态为支付成功
+            QDManager.PushRoleAction(DouYouRoleLogReportType.Pay);
+        }
+
+        //角色升级上报成功回调
+        public void RoleInfoReportSuccessAb(string message)
+        {
+        }
+
+        //角色升级上报失败回调
+        public void RoleInfoReportErrorAb(string message)
+        {
+        }
+    }
+}

+ 3 - 0
GameClient/Assets/Game/HotUpdate/Platform/QDDouYouManagerIos.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 82536cdaf3674f76873e9fb75244b7df
+timeCreated: 1722965403

+ 40 - 46
GameClient/Assets/Game/HotUpdate/Platform/QDManager.cs

@@ -26,8 +26,9 @@ namespace GFGGame
                     break;
                     break;
                 case (int)ChannelID.AppStore:
                 case (int)ChannelID.AppStore:
 #if !UNITY_EDITOR && UNITY_IOS
 #if !UNITY_EDITOR && UNITY_IOS
-                    QDAppStoreManager.Init();
+                    //QDAppStoreManager.Init();
 #endif
 #endif
+                    QDDouYouManagerIos.Instance.Init();
                     break;
                     break;
                 default:
                 default:
                     break;
                     break;
@@ -55,7 +56,7 @@ namespace GFGGame
                     QDDouYouManager.Instance.Login();
                     QDDouYouManager.Instance.Login();
                     break;
                     break;
                 case (int)ChannelID.AppStore:
                 case (int)ChannelID.AppStore:
-                    //TODO 接douyou ios的sdk登录
+                    QDDouYouManagerIos.Instance.Login();
                     break;
                     break;
                 default:
                 default:
                     break;
                     break;
@@ -75,6 +76,9 @@ namespace GFGGame
                 case (int)ChannelID.DouYouDev:
                 case (int)ChannelID.DouYouDev:
                     QDDouYouManager.Instance.OnCreateRole();
                     QDDouYouManager.Instance.OnCreateRole();
                     break;
                     break;
+                case (int)ChannelID.AppStore:
+                    QDDouYouManagerIos.Instance.OnCreateRole();
+                    break;
                 default:
                 default:
                     break;
                     break;
             }
             }
@@ -94,7 +98,7 @@ namespace GFGGame
                     QDDouYouManager.Instance.OnEnterGame();
                     QDDouYouManager.Instance.OnEnterGame();
                     break;
                     break;
                 case (int)ChannelID.AppStore:
                 case (int)ChannelID.AppStore:
-                    //TODO 接入douYou sdk 
+                    QDDouYouManagerIos.Instance.OnEnterGame();
                     break;
                     break;
                 default:
                 default:
                     break;
                     break;
@@ -116,7 +120,7 @@ namespace GFGGame
                     QDDouYouManager.Instance.OnQuitToLoginView();
                     QDDouYouManager.Instance.OnQuitToLoginView();
                     break;
                     break;
                 case (int)ChannelID.AppStore:
                 case (int)ChannelID.AppStore:
-                    //TODO 接入douYou sdk 
+                    QDDouYouManagerIos.Instance.OnQuitToLoginView();
                     break;
                     break;
                 default:
                 default:
                     break;
                     break;
@@ -137,7 +141,7 @@ namespace GFGGame
                     QDDouYouManager.Instance.Pay(buyID, count, orderID, price);
                     QDDouYouManager.Instance.Pay(buyID, count, orderID, price);
                     break;
                     break;
                 case (int)ChannelID.AppStore:
                 case (int)ChannelID.AppStore:
-                    //TODO 接入douYou sdk 
+                    QDDouYouManagerIos.Instance.Pay(buyID, count, orderID, price);
                     break;
                     break;
                 default:
                 default:
                     break;
                     break;
@@ -166,7 +170,7 @@ namespace GFGGame
                     QDDouYouManager.Instance.Logout();
                     QDDouYouManager.Instance.Logout();
                     break;
                     break;
                 case (int)ChannelID.AppStore:
                 case (int)ChannelID.AppStore:
-                    //TODO 接入douYou sdk 
+                    QDDouYouManagerIos.Instance.Logout();
                     break;
                     break;
                 default:
                 default:
                     break;
                     break;
@@ -187,7 +191,7 @@ namespace GFGGame
                     QDDouYouManager.Instance.Exit();
                     QDDouYouManager.Instance.Exit();
                     break;
                     break;
                 case (int)ChannelID.AppStore:
                 case (int)ChannelID.AppStore:
-                    //TODO 接入douYou sdk 
+                    QDDouYouManagerIos.Instance.Exit();
                     break;
                     break;
                 default:
                 default:
                     break;
                     break;
@@ -197,58 +201,48 @@ namespace GFGGame
         //上报角色行为给sdk
         //上报角色行为给sdk
         public static void PushRoleAction(DouYouRoleLogReportType reportType)
         public static void PushRoleAction(DouYouRoleLogReportType reportType)
         {
         {
-            switch (LauncherConfig.ChannelId)
-            {
-                case (int)ChannelID.Test:
+            var zoneScene = GameGlobal.zoneScene;
+            if (zoneScene == null) return;
 
 
-                    break;
-                case (int)ChannelID.DouYou:
-                    //改名上报给sdk
-                    var zoneScene = GameGlobal.zoneScene;
-                    if (zoneScene == null) return;
+            if (zoneScene.GetComponent<RoleInfosComponent>() == null ||
+                zoneScene.GetComponent<RoleInfosComponent>().IsDisposed) return;
 
 
-                    if (zoneScene.GetComponent<RoleInfosComponent>() == null ||
-                        zoneScene.GetComponent<RoleInfosComponent>().IsDisposed) return;
+            var roleInfo = zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole();
+            if (roleInfo == null) return;
 
 
-                    var roleInfo = zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRole();
-                    if (roleInfo == null) return;
+            if (GameGlobal.myNumericComponent == null) return;
+            int roleLvl = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
+            int vipLvl = GameGlobal.myNumericComponent.GetAsInt(NumericType.VipLevel);
 
 
-                    if (GameGlobal.myNumericComponent == null) return;
-                    int lvl = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
+            if (zoneScene.GetComponent<ServerInfosComponent>() == null) return;
+            if (zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo == null) return;
 
 
-                    if (zoneScene.GetComponent<ServerInfosComponent>() == null) return;
-                    if (zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo == null) return;
+            string serverName =
+                zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo.ServerName;
+            string partyName = LeagueDataManager.Instance.LeagueData?.Name ?? "";
+            string roleBalence = "0";
 
 
-                    string serverName = zoneScene.GetComponent<ServerInfosComponent>().recentlyServerInfo.ServerName;
+            switch (LauncherConfig.ChannelId)
+            {
+                case (int)ChannelID.Test:
+
+                    break;
+                case (int)ChannelID.DouYou:
                     QDDouYouManagerInit.Instance.ReportRole((int)reportType,
                     QDDouYouManagerInit.Instance.ReportRole((int)reportType,
-                        roleInfo.Id.ToString(), lvl.ToString(), roleInfo.Name, roleInfo.ServerId.ToString(),
+                        roleInfo.Id.ToString(), roleLvl.ToString(), roleInfo.Name, roleInfo.ServerId.ToString(),
                         serverName);
                         serverName);
                     break;
                     break;
                 case (int)ChannelID.DouYouDev:
                 case (int)ChannelID.DouYouDev:
-                    //改名上报给sdk
-                    var zoneSceneDev = GameGlobal.zoneScene;
-                    if (zoneSceneDev == null) return;
-
-                    if (zoneSceneDev.GetComponent<RoleInfosComponent>() == null ||
-                        zoneSceneDev.GetComponent<RoleInfosComponent>().IsDisposed) return;
-
-                    var roleInfoDev = zoneSceneDev.GetComponent<RoleInfosComponent>().GetCurrentRole();
-                    if (roleInfoDev == null) return;
-
-                    if (GameGlobal.myNumericComponent == null) return;
-                    int lvlDev = GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl);
-
-                    if (zoneSceneDev.GetComponent<ServerInfosComponent>() == null) return;
-                    if (zoneSceneDev.GetComponent<ServerInfosComponent>().recentlyServerInfo == null) return;
-
-                    string serverNameDev =
-                        zoneSceneDev.GetComponent<ServerInfosComponent>().recentlyServerInfo.ServerName;
                     QDDouYouManagerInit.Instance.ReportRole((int)reportType,
                     QDDouYouManagerInit.Instance.ReportRole((int)reportType,
-                        roleInfoDev.Id.ToString(), lvlDev.ToString(), roleInfoDev.Name, roleInfoDev.ServerId.ToString(),
-                        serverNameDev);
+                        roleInfo.Id.ToString(), roleLvl.ToString(), roleInfo.Name, roleInfo.ServerId.ToString(),
+                        serverName);
                     break;
                     break;
                 case (int)ChannelID.AppStore:
                 case (int)ChannelID.AppStore:
-                    //TODO 接入douYou sdk 
+                    QDDouYouManagerInitIos.Instance.ReportRoleInfo(((int)reportType).ToString(),
+                        roleInfo.ServerId.ToString(),
+                        serverName, roleInfo.Id.ToString(), roleInfo.Name, roleLvl.ToString(), vipLvl.ToString(),
+                        partyName,
+                        roleBalence);
                     break;
                     break;
                 default:
                 default:
                     break;
                     break;

+ 2 - 2
GameClient/Assets/Game/HotUpdate/Views/Login/LoginView.cs

@@ -269,8 +269,8 @@ namespace GFGGame
         private void ResetLoginButton()
         private void ResetLoginButton()
         {
         {
             _ui.m_btnLogout.visible = false;
             _ui.m_btnLogout.visible = false;
-            _ui.m_btnTapLogin.visible = QDManager.IsTaptap;
-            _ui.m_btnStart.visible = !QDManager.IsTaptap;
+            _ui.m_btnTapLogin.visible = false;
+            _ui.m_btnStart.visible = false;
         }
         }
         private void OnBtnAgreeCklick()
         private void OnBtnAgreeCklick()
         {
         {

+ 16 - 2
GameClient/Assets/Game/Launcher/LauncherConfig.cs

@@ -61,7 +61,9 @@ namespace GFGGame
         public static string updateUrl;
         public static string updateUrl;
         public static long updateEndTime; //强制更新期限,毫秒级时间戳
         public static long updateEndTime; //强制更新期限,毫秒级时间戳
 
 
-        //新发行给的adId
+        //新发行给的
+        public static string showLog;
+        public static string gameId;
         public static string douYouAdId;
         public static string douYouAdId;
 
 
         public static void InitScriptCompilation()
         public static void InitScriptCompilation()
@@ -118,12 +120,22 @@ namespace GFGGame
             {
             {
                 LauncherConfig.onDebug = int.Parse(result.onDebug);
                 LauncherConfig.onDebug = int.Parse(result.onDebug);
             }
             }
+            
+            if (!string.IsNullOrEmpty(result.showLog))
+            {
+                LauncherConfig.showLog = result.showLog;
+            }
+
+            if (!string.IsNullOrEmpty(result.gameId))
+            {
+                LauncherConfig.gameId = result.gameId;
+            }
 
 
             if (!string.IsNullOrEmpty(result.douYouAdId))
             if (!string.IsNullOrEmpty(result.douYouAdId))
             {
             {
                 LauncherConfig.douYouAdId = result.douYouAdId;
                 LauncherConfig.douYouAdId = result.douYouAdId;
             }
             }
-
+            
             LauncherConfig.manifest_v = result.manifest_v;
             LauncherConfig.manifest_v = result.manifest_v;
             LauncherConfig.privacy_v = result.privacy_v;
             LauncherConfig.privacy_v = result.privacy_v;
             LauncherConfig.statusPrompt = result.statusPrompt;
             LauncherConfig.statusPrompt = result.statusPrompt;
@@ -156,6 +168,8 @@ namespace GFGGame
             public string promptSizeMB;
             public string promptSizeMB;
             public string updateUrl;
             public string updateUrl;
             public string douYouAdId;
             public string douYouAdId;
+            public string gameId;
+            public string showLog;
             public string updateEndTime; //更新最后时间
             public string updateEndTime; //更新最后时间
         }
         }
     }
     }

+ 30 - 0
GameClient/Assets/Game/Launcher/Platform/IDouYouSDKListenerIos.cs

@@ -0,0 +1,30 @@
+namespace GFGGame.Launcher
+{
+    /// <summary>
+    /// 监听的回调
+    /// </summary>
+    public interface IDouYouSDKListenerIos
+    {
+        public void InitSuccessAb(string message);
+
+        public void InitErrorAb(string message);
+
+        public void LoginSuccessAb(string message);
+
+        public void LoginErrorAb(string message);
+
+        public void SwitchAccountsAb(string message);
+
+        public void LogoutSuccessAb(string message);
+
+        public void LogoutErrorAb(string message);
+
+        public void PaySuccessAb(string message);
+
+        public void PayErrorAb(string message);
+
+        public void RoleInfoReportSuccessAb(string message);
+
+        public void RoleInfoReportErrorAb(string message);
+    }
+}

+ 3 - 0
GameClient/Assets/Game/Launcher/Platform/IDouYouSDKListenerIos.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 1fe2e0dcd562487a82ee057bdd6f0d19
+timeCreated: 1722954288

+ 323 - 0
GameClient/Assets/Game/Launcher/Platform/QDDouYouManagerInitIos.cs

@@ -0,0 +1,323 @@
+using DouYouSdk;
+using UniFramework.Event;
+using Unity.Plastic.Newtonsoft.Json;
+using UnityEngine;
+
+namespace GFGGame.Launcher
+{
+    public class QDDouYouManagerInitIos : SingletonBase<QDDouYouManagerInitIos>
+    {
+        public IDouYouSDKListenerIos douYouSDKListenerIos;
+
+        public DouYouIosSDKHandler douYouIosSDKHandler;
+
+        public void InitSDK(string gameId, string adId, bool showLog)
+        {
+            if (douYouIosSDKHandler == null)
+            {
+                GameObject gameObject = new GameObject("DouYouSDKGameObject");
+                gameObject.AddComponent<DouYouIosSDKHandler>();
+                GameObject.DontDestroyOnLoad(gameObject);
+
+                douYouIosSDKHandler =
+                    GameObject.Find("DouYouSDKGameObject")?.GetComponent<DouYouIosSDKHandler>();
+            }
+
+            Instance.InitWithDigitMap(gameId, adId, showLog);
+        }
+
+        /// <summary>
+        /// 实例化sdk
+        /// </summary>
+        /// <param name="gameId"></param>
+        /// <param name="adId"></param>
+        /// <param name="shouldLog"></param>
+        public void InitWithDigitMap(string gameId, string adId, bool shouldLog)
+        {
+            douYouIosSDKHandler?.SDKInitWithDigitMap(gameId, adId, shouldLog);
+        }
+
+        /// <summary>
+        /// 显示登录
+        /// </summary>
+        public void ShowLogin()
+        {
+            douYouIosSDKHandler?.SDKLogin();
+        }
+
+        /// <summary>
+        /// 退出登录
+        /// </summary>
+        public void Logout()
+        {
+            douYouIosSDKHandler?.SDKLogout();
+        }
+
+        /// <summary>
+        /// 显示支付
+        /// </summary>
+        /// <param name="cpOrderId">订单号</param>
+        /// <param name="productPrice">订单金额(元)</param>
+        /// <param name="productId">产品ID</param>
+        /// <param name="productName">产品名称</param>
+        /// <param name="productDesc">商品描述</param>
+        /// <param name="productCount">购买数量</param>
+        /// <param name="exchangeRate">比例(默认 - 1)</param>
+        /// <param name="currencyName">金币</param>
+        /// <param name="serverId">区服ID</param>
+        /// <param name="serverName">区服名称</param>
+        /// <param name="roleId">角色ID</param>
+        /// <param name="roleName">角色名称</param>
+        /// <param name="roleLevel">角色等级</param>
+        /// <param name="roleVip">角色VIP</param>
+        /// <param name="partyName">工会名称</param>
+        /// <param name="roleBalence">游戏币</param>
+        /// <param name="ext">透传参数</param>
+        public void ShowPay(string cpOrderId, string productPrice, string productId, string productName,
+            string productDesc, string productCount, string exchangeRate, string currencyName, string serverId,
+            string serverName, string roleId, string roleName, string roleLevel, string roleVip, string partyName,
+            string roleBalence, string ext)
+        {
+            var data = new
+            {
+                cp_order_id = HandleNullString(cpOrderId),
+                product_price = HandleNullString(productPrice),
+                product_id = HandleNullString(productId),
+                product_name = HandleNullString(productName),
+                product_desc = HandleNullString(productDesc),
+                product_count = HandleNullString(productCount),
+                exchange_rate = HandleNullString(exchangeRate),
+                currency_name = HandleNullString(currencyName),
+                server_id = HandleNullString(serverId),
+                server_name = HandleNullString(serverName),
+                role_id = HandleNullString(roleId),
+                role_name = HandleNullString(roleName),
+                role_level = HandleNullString(roleLevel),
+                role_vip = HandleNullString(roleVip),
+                party_name = HandleNullString(partyName),
+                role_balance = HandleNullString(roleBalence),
+                ext = HandleNullString(ext)
+            };
+
+            string paymentJson = JsonConvert.SerializeObject(data);
+            douYouIosSDKHandler?.SdkPaymentWithJson(paymentJson);
+        }
+
+        /// <summary>
+        /// 上报角色信息
+        /// </summary>
+        /// <param name="type">数据类型(1 - 进入游戏、2 - 创建角色、3 - 角色升级、4 - 退出、5 - 充值)</param>
+        /// <param name="serverId">区服ID</param>
+        /// <param name="serverName">区服名称</param>
+        /// <param name="roleId">角色ID</param>
+        /// <param name="roleName">角色名称</param>
+        /// <param name="roleLevel">角色等级</param>
+        /// <param name="roleVip">角色VIP</param>
+        /// <param name="partyName">工会名称</param>
+        /// <param name="roleBalence">游戏币</param>
+        public void ReportRoleInfo(string type, string serverId, string serverName, string roleId, string roleName,
+            string roleLevel, string roleVip, string partyName, string roleBalence)
+        {
+            var data = new
+            {
+                type = HandleNullString(type),
+                server_id = HandleNullString(serverId),
+                server_name = HandleNullString(serverName),
+                role_id = HandleNullString(roleId),
+                role_name = HandleNullString(roleName),
+                role_level = HandleNullString(roleLevel),
+                role_vip = HandleNullString(roleVip),
+                party_name = HandleNullString(partyName),
+                role_balence = HandleNullString(roleBalence),
+            };
+            string roleJson = JsonConvert.SerializeObject(data);
+            douYouIosSDKHandler?.SDKRoleInfo(roleJson);
+        }
+
+        // 辅助方法:处理空值
+        private static string HandleNullString(string value)
+        {
+            return string.IsNullOrEmpty(value) ? "" : value;
+        }
+
+        //监听的回调
+        public class DouYouIosSDKHandler : AbDouYouSDKIosHandler
+        {
+            public override void SDKInitWithDigitMap(string gameId, string adId, bool shouldLog)
+            {
+                base.SDKInitWithDigitMap(gameId, adId, shouldLog);
+                Debug.Log($"DouYouIosSDKHandler SDKInitWithDigitMap:gameId:{gameId} adId:{adId} shouldLog:{shouldLog}");
+            }
+
+            //调起登陆
+            public override void SDKLogin()
+            {
+                base.SDKLogin();
+                Debug.Log($"DouYouIosSDKHandler SDKLogin");
+            }
+
+            //退出登陆
+            public override void SDKLogout()
+            {
+                base.SDKLogout();
+                Debug.Log($"DouYouIosSDKHandler SDKLogout");
+            }
+
+            //调起支付
+            public override void SdkPaymentWithJson(string paymentJson)
+            {
+                base.SdkPaymentWithJson(paymentJson);
+                Debug.Log($"DouYouIosSDKHandler SdkPaymentWithJson. paymentJson:{paymentJson}");
+            }
+
+            //角色升级上报
+            public override void SDKRoleInfo(string roleJson)
+            {
+                base.SDKRoleInfo(roleJson);
+                Debug.Log($"DouYouIosSDKHandler SDKRoleInfo. roleJson:{roleJson}");
+            }
+
+            /// <summary>
+            /// 初始化成功回调
+            /// </summary>
+            /// <param name="message"></param>
+            public override void InitSuccessAb(string message)
+            {
+                UniEvent.SendMessage(new LauncherEvent.InitPlatformResult() { success = true });
+                QDDouYouManagerInitIos.Instance.douYouSDKListenerIos?.InitSuccessAb(message);
+                Debug.Log($"InitSuccessAb:{message}");
+            }
+
+            /// <summary>
+            /// 初始化失败回调
+            /// </summary>
+            /// <param name="message"></param>
+            public override void InitErrorAb(string message)
+            {
+                Debug.Log("InitErrorAb: " + message);
+                QDDouYouManagerInitIos.Instance.douYouSDKListenerIos?.InitErrorAb(message);
+            }
+
+            /// <summary>
+            /// 登录成功回调
+            /// </summary>
+            /// <param name="message">登录成功</param>
+            public override void LoginSuccessAb(string message)
+            {
+                Debug.Log("LoginSuccessAb: " + message);
+                QDDouYouManagerInitIos.Instance.douYouSDKListenerIos?.LoginSuccessAb(message);
+            }
+
+            /// <summary>
+            /// 登录失败回调
+            /// </summary>
+            /// <param name="message"></param>
+            public override void LoginErrorAb(string message)
+            {
+                Debug.Log("LoginErrorAb: " + message);
+                QDDouYouManagerInitIos.Instance.douYouSDKListenerIos?.LoginErrorAb(message);
+            }
+
+            /// <summary>
+            /// 切换账号回调
+            /// </summary>
+            /// <param name="message"></param>
+            public override void SwitchAccountsAb(string message)
+            {
+                Debug.Log("SwitchAccountsAb" + message);
+                QDDouYouManagerInitIos.Instance.douYouSDKListenerIos?.SwitchAccountsAb(message);
+            }
+
+            /// <summary>
+            /// 登出成功回调
+            /// </summary>
+            /// <param name="message"></param>
+            public override void LogoutSuccessAb(string message)
+            {
+                Debug.Log("LogoutSuccessAb" + message);
+                QDDouYouManagerInitIos.Instance.douYouSDKListenerIos?.LogoutSuccessAb(message);
+            }
+
+            /// <summary>
+            /// 登出失败回调
+            /// </summary>
+            /// <param name="message"></param>
+            public override void LogoutErrorAb(string message)
+            {
+                Debug.Log("LogoutErrorAb" + message);
+                QDDouYouManagerInitIos.Instance.douYouSDKListenerIos?.LogoutErrorAb(message);
+            }
+
+            /// <summary>
+            /// 支付成功回调
+            /// </summary>
+            /// <param name="message"></param>
+            public override void PaySuccessAb(string message)
+            {
+                Debug.Log("PaySuccessAb" + message);
+                QDDouYouManagerInitIos.Instance.douYouSDKListenerIos?.PaySuccessAb(message);
+            }
+
+            /// <summary>
+            /// 支付失败回调
+            /// </summary>
+            /// <param name="message"></param>
+            public override void PayErrorAb(string message)
+            {
+                Debug.Log("PayErrorAb" + message);
+                QDDouYouManagerInitIos.Instance.douYouSDKListenerIos?.PayErrorAb(message);
+            }
+
+            /// <summary>
+            /// 角色升级上报成功回调
+            /// </summary>
+            /// <param name="message"></param>
+            public override void RoleInfoReportSuccessAb(string message)
+            {
+                Debug.Log("RoleInfoReportSuccessAb" + message);
+                QDDouYouManagerInitIos.Instance.douYouSDKListenerIos?.RoleInfoReportSuccessAb(message);
+            }
+
+            /// <summary>
+            /// 角色升级上报失败回调
+            /// </summary>
+            /// <param name="message"></param>
+            public override void RoleInfoReportErrorAb(string message)
+            {
+                Debug.Log("RoleInfoReportErrorAb" + message);
+                QDDouYouManagerInitIos.Instance.douYouSDKListenerIos?.RoleInfoReportErrorAb(message);
+            }
+        }
+    }
+
+    /// <summary>
+    /// 场景(1 - 进入游戏、2 - 创建角色、3 - 角色升级、4 - 退出、5 - 充值)
+    /// </summary>
+    public enum DouYouIosRoleLogReportType
+    {
+        /// <summary>
+        /// 进入游戏
+        /// </summary>
+        EnterGame = 1,
+
+        /// <summary>
+        /// 创建角色
+        /// </summary>
+        CreateRole = 2,
+
+        /// <summary>
+        /// 角色升级
+        /// </summary>
+        LevelUp = 3,
+
+        /// <summary>
+        /// 退出
+        /// </summary>
+        ExitGame = 4,
+
+        /// <summary>
+        /// 充值
+        /// </summary>
+        Pay = 5
+    }
+}

+ 3 - 0
GameClient/Assets/Game/Launcher/Platform/QDDouYouManagerInitIos.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: ef1adc81936e4e2e932b96be3d3106f9
+timeCreated: 1722954366

+ 3 - 1
GameClient/Assets/Game/Launcher/Platform/QDManagerInit.cs

@@ -18,7 +18,9 @@ namespace GFGGame.Launcher
                     QDShareManagerInit.Instance.InitSDK();
                     QDShareManagerInit.Instance.InitSDK();
                     break;
                     break;
                 case (int)ChannelID.AppStore:
                 case (int)ChannelID.AppStore:
-                    QDAppStoreManagerInit.InitPlatform();
+                    //QDAppStoreManagerInit.InitPlatform();
+                    QDDouYouManagerInitIos.Instance.InitSDK(LauncherConfig.gameId, LauncherConfig.douYouAdId,
+                        LauncherConfig.showLog == "1");
                     break;
                     break;
                 default:
                 default:
                     UniEvent.SendMessage(new LauncherEvent.InitPlatformResult() { success = true });
                     UniEvent.SendMessage(new LauncherEvent.InitPlatformResult() { success = true });

+ 2 - 2
GameClient/Assets/Plugins/iOS/StraightPush/SDKManager.h

@@ -16,8 +16,8 @@
 - (void)sdkInitWithDigitMap:(NSString *)gameId ring:(NSString *)adId shouldLog:(BOOL)shouldLog;
 - (void)sdkInitWithDigitMap:(NSString *)gameId ring:(NSString *)adId shouldLog:(BOOL)shouldLog;
 - (void)sdkLogin;
 - (void)sdkLogin;
 - (void)sdkLogout;
 - (void)sdkLogout;
-- (void)sdkPaymentWithInfo:(NSDictionary *)paymentInfo;
-- (void)sdkRoleInfo:(NSDictionary *)parRoleInfo;
+- (void)sdkPaymentWithJson:(NSString *)paymentJson;
+- (void)sdkRoleInfoWithJson:(NSString *)roleJson;
 
 
 @end
 @end
 
 

+ 33 - 0
GameClient/Assets/Plugins/iOS/StraightPush/SDKManager.h.meta

@@ -0,0 +1,33 @@
+fileFormatVersion: 2
+guid: 7d0a42e00fefaa24ba262a61e84a5ab6
+PluginImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  iconMap: {}
+  executionOrder: {}
+  defineConstraints: []
+  isPreloaded: 0
+  isOverridable: 0
+  isExplicitlyReferenced: 0
+  validateReferences: 1
+  platformData:
+  - first:
+      Any: 
+    second:
+      enabled: 0
+      settings: {}
+  - first:
+      Editor: Editor
+    second:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  - first:
+      iPhone: iOS
+    second:
+      enabled: 1
+      settings:
+        AddToEmbeddedBinaries: false
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 25 - 7
GameClient/Assets/Plugins/iOS/StraightPush/SDKManager.m

@@ -69,10 +69,19 @@
     }];
     }];
 }
 }
 
 
-//调起支付
-- (void)sdkPaymentWithInfo:(NSDictionary *)paymentInfo {
-    NSDictionary *bayInfo = paymentInfo; // 使用传入的 paymentInfo 字典
-    [[PullInter bringInstance] hexSlabBlock:bayInfo focusedBlock:^(NSDictionary *params) {
+// 调起支付
+- (void)sdkPaymentWithJson:(NSString *)paymentJson {
+    NSData *jsonData = [paymentJson dataUsingEncoding:NSUTF8StringEncoding];
+    NSError *jsonError;
+    NSDictionary *paymentInfo = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&jsonError];
+    
+    if (jsonError) {
+        NSLog(@"JSON解析失败: %@", jsonError);
+        [self sendErrorToUnity:jsonError gameObject:"IosReceiverGameObj" methodName:"RoleInfoReportError"];
+        return;
+    }
+    
+    [[PullInter bringInstance] hexSlabBlock:paymentInfo focusedBlock:^(NSDictionary *params) {
         if (self.shouldLog) {
         if (self.shouldLog) {
             NSLog(@"支付成功:%@", params);
             NSLog(@"支付成功:%@", params);
         }
         }
@@ -85,9 +94,18 @@
     }];
     }];
 }
 }
 
 
-//角色升级上报
-- (void)sdkRoleInfo:(NSDictionary *)parRoleInfo {
-    NSDictionary *roleInfo = parRoleInfo;
+// 角色升级上报
+- (void)sdkRoleInfoWithJson:(NSString *)roleJson {
+    NSData *jsonData = [roleJson dataUsingEncoding:NSUTF8StringEncoding];
+    NSError *jsonError;
+    NSDictionary *roleInfo = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&jsonError];
+    
+    if (jsonError) {
+        NSLog(@"JSON解析失败: %@", jsonError);
+        [self sendErrorToUnity:jsonError gameObject:"IosReceiverGameObj" methodName:"RoleInfoReportError"];
+        return;
+    }
+    
     [[PullInter bringInstance] georgianDrumBlock:roleInfo focusedBlock:^(NSDictionary *params) {
     [[PullInter bringInstance] georgianDrumBlock:roleInfo focusedBlock:^(NSDictionary *params) {
         if (self.shouldLog) {
         if (self.shouldLog) {
             NSLog(@"角色升级上报成功:%@", params);
             NSLog(@"角色升级上报成功:%@", params);

+ 33 - 0
GameClient/Assets/Plugins/iOS/StraightPush/SDKManager.m.meta

@@ -0,0 +1,33 @@
+fileFormatVersion: 2
+guid: 76c65499a8d740e469161d30a467cca0
+PluginImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  iconMap: {}
+  executionOrder: {}
+  defineConstraints: []
+  isPreloaded: 0
+  isOverridable: 0
+  isExplicitlyReferenced: 0
+  validateReferences: 1
+  platformData:
+  - first:
+      Any: 
+    second:
+      enabled: 0
+      settings: {}
+  - first:
+      Editor: Editor
+    second:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  - first:
+      iPhone: iOS
+    second:
+      enabled: 1
+      settings:
+        AddToEmbeddedBinaries: false
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 238 - 0
GameClient/Assets/ThirdParty/DouYou/AbDouYouSDKIosHandler.cs

@@ -0,0 +1,238 @@
+using System.Runtime.InteropServices;
+using UnityEngine;
+
+namespace DouYouSdk
+{
+    public abstract class AbDouYouSDKIosHandler : MonoBehaviour
+    {
+        [DllImport("__Internal")]
+        private static extern void _sdkInitWithDigitMap(string gameId, string adId, bool shouldLog);
+
+        [DllImport("__Internal")]
+        private static extern void _sdkLogin();
+
+        [DllImport("__Internal")]
+        private static extern void _sdkLogout();
+
+        [DllImport("__Internal")]
+        private static extern void _sdkPaymentWithJson(string paymentJson);
+
+        [DllImport("__Internal")]
+        private static extern void _sdkRoleInfoWithJson(string roleJson);
+
+        //实例化sdk
+        public virtual void SDKInitWithDigitMap(string gameId, string adId, bool shouldLog)
+        {
+            _sdkInitWithDigitMap(gameId, adId, shouldLog);
+            Debug.Log($"SDKInitWithDigitMap:gameId:{gameId} adId:{adId} shouldLog:{shouldLog}");
+        }
+
+        //调起登陆
+        public virtual void SDKLogin()
+        {
+            _sdkLogin();
+            Debug.Log($"SDKLogin");
+        }
+
+        //退出登陆
+        public virtual void SDKLogout()
+        {
+            _sdkLogout();
+            Debug.Log($"SDKLogout");
+        }
+
+        //调起支付
+        public virtual void SdkPaymentWithJson(string paymentJson)
+        {
+            _sdkPaymentWithJson(paymentJson);
+            Debug.Log($"SdkPaymentWithJson. paymentJson:{paymentJson}");
+        }
+
+        //角色升级上报
+        public virtual void SDKRoleInfo(string roleJson)
+        {
+            _sdkRoleInfoWithJson(roleJson);
+            Debug.Log($"SDKRoleInfo. roleJson:{roleJson}");
+        }
+
+        //监听回调====================================
+
+        /// <summary>
+        /// 初始化成功
+        /// </summary>
+        /// <param name="message"></param>
+        public abstract void InitSuccessAb(string message);
+
+        /// <summary>
+        /// 初始化失败
+        /// </summary>
+        /// <param name="message"></param>
+        public abstract void InitErrorAb(string message);
+
+        /// <summary>
+        /// 登录成功
+        /// </summary>
+        /// <param name="message"></param>
+        public abstract void LoginSuccessAb(string message);
+
+        /// <summary>
+        /// 登录失败
+        /// </summary>
+        /// <param name="message"></param>
+        public abstract void LoginErrorAb(string message);
+
+        /// <summary>
+        /// 切换账号回调
+        /// </summary>
+        /// <param name="message"></param>
+        public abstract void SwitchAccountsAb(string message);
+
+        /// <summary>
+        /// 登出成功
+        /// </summary>
+        /// <param name="message"></param>
+        public abstract void LogoutSuccessAb(string message);
+
+        /// <summary>
+        /// 登出失败
+        /// </summary>
+        /// <param name="message"></param>
+        public abstract void LogoutErrorAb(string message);
+
+        /// <summary>
+        /// 支付成功
+        /// </summary>
+        /// <param name="message"></param>
+        public abstract void PaySuccessAb(string message);
+
+        /// <summary>
+        /// 支付失败
+        /// </summary>
+        /// <param name="message"></param>
+        public abstract void PayErrorAb(string message);
+
+        /// <summary>
+        /// 角色升级上报成功
+        /// </summary>
+        /// <param name="message"></param>
+        public abstract void RoleInfoReportSuccessAb(string message);
+
+        /// <summary>
+        /// 角色升级上报失败
+        /// </summary>
+        /// <param name="message"></param>
+        public abstract void RoleInfoReportErrorAb(string message);
+
+        //=========================================监听到的回调
+
+        /// <summary>
+        /// SDK实例化成功
+        /// </summary>
+        /// <param name="message"></param>
+        public void InitSuccess(string message)
+        {
+            Debug.Log($"InitSuccess:{message}");
+            InitSuccessAb(message);
+        }
+
+        /// <summary>
+        /// SDK实例化失败
+        /// </summary>
+        /// <param name="message"></param>
+        public void InitError(string message)
+        {
+            Debug.Log($"InitError:{message}");
+            InitErrorAb(message);
+        }
+
+        /// <summary>
+        /// 登录成功 
+        /// </summary>
+        /// <param name="message"></param>
+        public void LoginSuccess(string message)
+        {
+            Debug.Log($"LoginSuccess:{message}");
+            LoginSuccessAb(message);
+        }
+
+        /// <summary>
+        /// 登录失败
+        /// </summary>
+        /// <param name="message"></param>
+        public void LoginError(string message)
+        {
+            Debug.Log($"LoginError:{message}");
+            LoginErrorAb(message);
+        }
+
+        /// <summary>
+        /// 切换账号回调
+        /// </summary>
+        /// <param name="message"></param>
+        public void SwitchAccounts(string message)
+        {
+            Debug.Log($"SwitchAccounts:{message}");
+            SwitchAccountsAb(message);
+        }
+
+        /// <summary>
+        /// 登出成功
+        /// </summary>
+        /// <param name="message">co</param>
+        public void LogoutSuccess(string message)
+        {
+            Debug.Log($"LogoutSuccess:{message}");
+            LogoutSuccessAb(message);
+        }
+
+        /// <summary>
+        /// 登出失败
+        /// </summary>
+        /// <param name="message">co</param>
+        public void LogoutError(string message)
+        {
+            Debug.Log($"LogoutError:{message}");
+            LogoutErrorAb(message);
+        }
+
+        /// <summary>
+        /// 支付成功
+        /// </summary>
+        /// <param name="message">co</param>
+        public void PaySuccess(string message)
+        {
+            Debug.Log($"PaySuccess:{message}");
+            PaySuccessAb(message);
+        }
+
+        /// <summary>
+        /// 支付失败
+        /// </summary>
+        /// <param name="message">co</param>
+        public void PayError(string message)
+        {
+            Debug.Log($"PayError:{message}");
+            PayErrorAb(message);
+        }
+
+        /// <summary>
+        /// 角色升级上报成功
+        /// </summary>
+        /// <param name="message">co</param>
+        public void RoleInfoReportSuccess(string message)
+        {
+            Debug.Log($"RoleInfoReportSuccess:{message}");
+            RoleInfoReportSuccessAb(message);
+        }
+
+        /// <summary>
+        /// 角色升级上报失败
+        /// </summary>
+        /// <param name="message">co</param>
+        public void RoleInfoReportError(string message)
+        {
+            Debug.Log($"RoleInfoReportError:{message}");
+            RoleInfoReportErrorAb(message);
+        }
+    }
+}

+ 3 - 0
GameClient/Assets/ThirdParty/DouYou/AbDouYouSDKIosHandler.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: bf5e1dfb79ad45b59a57931416c4012e
+timeCreated: 1722954684

+ 4 - 3
GameClient/ProjectSettings/ProjectSettings.asset

@@ -251,9 +251,9 @@ PlayerSettings:
   useCustomMainManifest: 1
   useCustomMainManifest: 1
   useCustomLauncherManifest: 0
   useCustomLauncherManifest: 0
   useCustomMainGradleTemplate: 0
   useCustomMainGradleTemplate: 0
-  useCustomLauncherGradleManifest: 0
-  useCustomBaseGradleTemplate: 0
-  useCustomGradlePropertiesTemplate: 0
+  useCustomLauncherGradleManifest: 1
+  useCustomBaseGradleTemplate: 1
+  useCustomGradlePropertiesTemplate: 1
   useCustomProguardFile: 0
   useCustomProguardFile: 0
   AndroidTargetArchitectures: 2
   AndroidTargetArchitectures: 2
   AndroidTargetDevices: 0
   AndroidTargetDevices: 0
@@ -779,6 +779,7 @@ PlayerSettings:
   webGLThreadsSupport: 0
   webGLThreadsSupport: 0
   webGLDecompressionFallback: 0
   webGLDecompressionFallback: 0
   scriptingDefineSymbols:
   scriptingDefineSymbols:
+    1: PT_IOS
     4: PT_IOS
     4: PT_IOS
     7: 
     7: 
   additionalCompilerArguments: {}
   additionalCompilerArguments: {}