| | |
| | | _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 版本可能已移除该文件。"); |
| | | } |
| | | } |
| | | |