三国卡牌客户端基础资源仓库
hch
2026-10-09 491f3b6161c85c38b89c3e476c543b56d9c155ca
0312 修复海外代码插入问题
1个文件已修改
26 ■■■■■ 已修改文件
Assets/Editor/XCodeProjectMod.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/XCodeProjectMod.cs
@@ -366,18 +366,32 @@
        _xclass.WriteBelow("@property (readonly, copy, nonatomic) DisplayConnection*    mainDisplay;",
                           "@property (readonly, copy, nonatomic) FimpfunBridge*  fimpfunBridge;");
        // 3.1 适配欧盟政策:在 viewDidAppear 中调用 adaptingEUGDPR(文档要求)
        // UnityViewControllerBase.mm 在较新 Unity 版本(如 2022.3+)中可能不存在
        // 3.1 适配欧盟政策:在 viewDidAppear 中调用 adaptingEUGDPR(文档 3.1)
        // 注意:
        // 1. UnityViewControllerBase.mm 自身已有 viewDidAppear 实现,不能再追加新方法,
        //    否则报 Duplicate declaration of method 'viewDidAppear';
        //    这里把调用插入已有方法的 [super viewDidAppear...] 之后。
        // 2. FimpfunBridge 在 UnityAppController.h 中仅 @class 前向声明,
        //    本文件调用会报 forward declaration 编译错误;按文档直接调 SDK 单例。
        // 3. 幂等:Append 构建或多次打包时跳过已注入的文件。
        string viewControllerPath = projectPath + "/Classes/UI/UnityViewControllerBase.mm";
        if (System.IO.File.Exists(viewControllerPath))
        {
            var _viewController = new XClass(viewControllerPath);
            _viewController.WriteBelow("@implementation UnityViewControllerBase",
                "\n- (void)viewDidAppear:(BOOL)animated {\n    [super viewDidAppear:animated];\n    [GetAppController().fimpfunBridge viewDidAppear];\n}\n");
            string vcContent = File.ReadAllText(viewControllerPath);
            if (!vcContent.Contains("adaptingEUGDPR"))
            {
                File.WriteAllText(viewControllerPath, "#import \"fimpfunSDK.h\"\n" + vcContent);
                if (!InsertBelowPattern(viewControllerPath, @"\[super viewDidAppear[^\n]*",
                                        "    [[FIMPPlatformService initFIMPPlatformService] adaptingEUGDPR];",
                                        "adaptingEUGDPR"))
                {
                    Debug.LogError("[XCodeProjectMod] 未找到 [super viewDidAppear],adaptingEUGDPR 注入失败: " + viewControllerPath);
                }
            }
        }
        else
        {
            Debug.LogError("[XCodeProjectMod] UnityViewControllerBase.mm 文件不存在,跳过 viewDidAppear 注入。此 Unity 版本可能已移除该文件。");
            Debug.LogError("[XCodeProjectMod] UnityViewControllerBase.mm 文件不存在,跳过 adaptingEUGDPR 注入。此 Unity 版本可能已移除该文件。");
        }
    }