| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #if UNITY_IOS || UNITY_TVOS
- #define UNITY_XCODE_EXTENSIONS_AVAILABLE
- #endif
- using UnityEditor;
- using System.IO;
- using UnityEngine;
- #if UNITY_IOS && UNITY_EDITOR
- using UnityEditor.Callbacks;
- using UnityEditor.iOS.Xcode;
- #endif
- using AppleAuth.Editor;
- #if UNITY_XCODE_EXTENSIONS_AVAILABLE
- //using UnityEditor.iOS.Xcode;
- #endif
- public static class XCodePostProcessBuild
- {
- #if UNITY_IOS && UNITY_EDITOR
- private static readonly string[] csAddFrameworks = new string[]{
- "Security.framework","WebKit.framework", "CoreGraphics.framework"
- };
- [PostProcessBuild(1)]
- public static void OnPostprocessBuild(BuildTarget target, string path)
- {
- if (BuildTarget.iOS != target)
- {
- return;
- }
- string projectPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
- SetFrameworksAndBuildSettings(projectPath);
- SetInfoList(path, "com.xmjssvr.BowArrow", "wxfe29f3f64e3c5d16");
- SetAssociatedDomains(projectPath, "xmjssvr.cn");
- setSignInWithApple(projectPath);
- }
- private static void SetFrameworksAndBuildSettings(string path)
- {
- PBXProject proj = new PBXProject();
- proj.ReadFromString(File.ReadAllText(path));
- string target = proj.GetUnityMainTargetGuid();
- string frameworkGuid = proj.GetUnityFrameworkTargetGuid();
- Debug.Log("Target Name is " + target);
- // 设置 BuildSettings
- proj.AddBuildProperty(target, "Other Linker Flags", "-Objc -all_load");
- proj.SetBuildProperty(target, "ENABLE_BITCODE", "NO");
- proj.SetBuildProperty(frameworkGuid, "ENABLE_BITCODE", "NO");
- //根据微信SDK文档的要求,加入相关的Frameworks
- for (int i = 0; i < csAddFrameworks.Length; ++i)
- {
- if (!proj.ContainsFramework(target, csAddFrameworks[i]))
- proj.AddFrameworkToProject(target, csAddFrameworks[i], false);
- }
- File.WriteAllText(path, proj.WriteToString());
- }
- public static void SetInfoList(string buildPath, string wxUrlName, string wxScheme)
- {
- string listPath = buildPath + "/Info.plist";
- PlistDocument plist = new PlistDocument();
- plist.ReadFromString(File.ReadAllText(listPath));
- // 在“info”标签栏的“URL type“添加“URL scheme”,值为你在微信后台注册的应用程序的 AppID
- PlistElementArray urlArray = plist.root.CreateArray("CFBundleURLTypes");
- PlistElementDict dict = urlArray.AddDict();
- dict.SetString("CFBundleTypeRole", "Editor");
- dict.SetString("CFBundleURLName", wxUrlName);
- PlistElementArray urlSchemes = dict.CreateArray("CFBundleURLSchemes");
- urlSchemes.AddString(wxScheme);
- // 在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin wechat和weixinULAPI
- PlistElementArray wxArray = plist.root.CreateArray("LSApplicationQueriesSchemes");
- wxArray.AddString("weixin");
- wxArray.AddString("wechat");
- wxArray.AddString("weixinULAPI");
- PlistElementDict ed = plist.root;
- ed.SetString("NSBluetoothAlwaysUsageDescription", "您是否允此App使用蓝牙,来搜索和连接设备?");
- ed.SetString("NSBluetoothPeripheralUsageDescription", "您是否允此App使用蓝牙,来搜索和连接设备?");
- ed.SetString("NSCameraUsageDescription", "App需要您的同意,才能访问照相机");
- ed.SetString("NSPhotoLibraryUsageDescription", "App需要您的同意,才能访问相册");
- ed.SetString("NSLocationWhenInUseUsageDescription", "我们需要通过您的地理位置信息获取您周边的相关数据");
- ed.SetString("NSLocationAlwaysUsageDescription", "我们需要通过您的地理位置信息获取您周边的相关数据");
- File.WriteAllText(listPath, plist.WriteToString());
- }
- // 设置Associated Domains
- public static void SetAssociatedDomains(string pbxProjectPath, string domainUrl)
- {
- //默认 Target Name, 你自己的可能不一样
- string targetName = "Unity-iPhone";
- //Set the entitlements file name to what you want but make sure it has this extension
- string entitlementsFileName = "my_app.entitlements";
- var entitlements = new ProjectCapabilityManager(pbxProjectPath, entitlementsFileName, targetName);
- entitlements.AddAssociatedDomains(new string[] { "applinks:" + domainUrl });
- entitlements.WriteToFile();
- }
- // 设置Associated Domains
- public static void setSignInWithApple(string pbxProjectPath)
- {
- //默认 Target Name, 你自己的可能不一样
- string targetName = "Unity-iPhone";
- //Set the entitlements file name to what you want but make sure it has this extension
- string entitlementsFileName = "my_app.entitlements";
- var project = new PBXProject();
- project.ReadFromString(System.IO.File.ReadAllText(pbxProjectPath));
- var entitlements = new ProjectCapabilityManager(pbxProjectPath, entitlementsFileName, targetName, project.GetUnityMainTargetGuid());
- entitlements.AddSignInWithAppleWithCompatibility(project.GetUnityFrameworkTargetGuid());
- entitlements.WriteToFile();
- }
- #endif
- }
|