killapp/Assets/Editor/iOSWiFiBuildPostProcessor.cs
“虞渠成” 1847d74de2 feat: 完成多项功能迭代与项目配置优化
1. 新增WiFi连接UI预制体与多语言文案
2. 重构BLE通信通知处理逻辑
3. 调整数据库总工作时长类型为float
4. 更新项目与Android构建配置
5. 主页添加消杀数据上传进度提示
2026-07-06 15:40:04 +08:00

78 lines
3.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#if UNITY_IOS
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
using System.IO;
public class iOSWiFiBuildPostProcessor
{
private const string WIFI_INFO_ENTITLEMENT = "com.apple.developer.networking.wifi-info";
[PostProcessBuild]
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
{
if (target != BuildTarget.iOS) return;
// ===== 1. 配置 Info.plist =====
string plistPath = Path.Combine(pathToBuiltProject, "Info.plist");
PlistDocument plist = new PlistDocument();
plist.ReadFromString(File.ReadAllText(plistPath));
PlistElementDict rootDict = plist.root;
// 添加位置权限描述iOS 13+ 获取 WiFi 需要)
rootDict.SetString("NSLocationWhenInUseUsageDescription", "需要位置权限来获取当前 WiFi 信息");
// 添加蓝牙权限描述
rootDict.SetString("NSBluetoothAlwaysUsageDescription", "需要蓝牙权限来连接设备");
rootDict.SetString("NSBluetoothPeripheralUsageDescription", "需要蓝牙权限来连接设备");
// 添加后台模式
PlistElementArray bgModes = rootDict.CreateArray("UIBackgroundModes");
bgModes.AddString("fetch");
bgModes.AddString("bluetooth-central");
File.WriteAllText(plistPath, plist.WriteToString());
// ===== 2. 配置 Xcode 项目 =====
string projPath = PBXProject.GetPBXProjectPath(pathToBuiltProject);
PBXProject proj = new PBXProject();
proj.ReadFromString(File.ReadAllText(projPath));
string targetGuid = proj.GetUnityMainTargetGuid();
proj.AddFrameworkToProject(targetGuid, "CoreBluetooth.framework", false);
// ===== 3. 添加 Access WiFi Information 权限iOS 14+ 必需)=====
string entitlementsFileName = "app.entitlements";
string entitlementsPath = Path.Combine(pathToBuiltProject, entitlementsFileName);
// 创建或读取 entitlements 文件
PlistDocument entitlements = new PlistDocument();
if (File.Exists(entitlementsPath))
{
entitlements.ReadFromString(File.ReadAllText(entitlementsPath));
}
else
{
entitlements.root.SetString("aps-environment", "development");
}
// 添加 WiFi 信息访问权限iOS 14+
entitlements.root.SetBoolean(WIFI_INFO_ENTITLEMENT, true);
File.WriteAllText(entitlementsPath, entitlements.WriteToString());
// 设置 entitlements 文件到 Xcode 项目
proj.SetBuildProperty(targetGuid, "CODE_SIGN_ENTITLEMENTS", entitlementsFileName);
// 同时设置 framework target
string frameworkTargetGuid = proj.GetUnityFrameworkTargetGuid();
if (!string.IsNullOrEmpty(frameworkTargetGuid))
{
proj.SetBuildProperty(frameworkTargetGuid, "CODE_SIGN_ENTITLEMENTS", entitlementsFileName);
}
File.WriteAllText(projPath, proj.WriteToString());
}
}
#endif