killapp/Assets/Scripts/iOSWiFiHelper.cs
yuqucheng 9316f8f331 feat(iOS): 完善iOS平台WiFi配对与权限本地化适配
1. 新增iOSWiFiHelper类实现异步获取WiFi SSID,自动请求位置权限
2. 新增iOS权限描述本地化处理器,实现中英文权限文案自动切换
3. 更新所有iOS权限描述为更清晰的英文/中文说明
4. 优化iOS编译后处理脚本优先级,避免被其他插件覆盖
5. 在连接设备页面和WiFi设置页面自动填充当前WiFi名称
6. 更新应用版本号与构建号
2026-08-07 16:14:10 +08:00

49 lines
1.5 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.

using System;
using System.Runtime.InteropServices;
using UnityEngine;
/// <summary>
/// iOS WiFi 名称异步获取辅助类。
/// 自动请求位置权限iOS 14+ NEHotspotNetwork 需要),
/// 用户授权后回调返回当前连接的 WiFi 名称,无需重新打开页面。
/// </summary>
public class iOSWiFiHelper : MonoBehaviour
{
private static iOSWiFiHelper _instance;
private static Action<string> _callback;
/// <summary>
/// 请求位置权限并获取当前 WiFi 名称,授权后异步回调。
/// </summary>
/// <param name="callback">回调参数为 WiFi SSID获取失败或用户拒绝时为 null</param>
public static void RequestWiFiSSID(Action<string> callback)
{
_callback = callback;
#if UNITY_IOS && !UNITY_EDITOR
EnsureInstance();
RequestWiFiSSIDNative(_instance.name, "OnWiFiSSIDResult");
#endif
}
private static void EnsureInstance()
{
if (_instance != null) return;
var go = new GameObject("iOSWiFiHelper");
DontDestroyOnLoad(go);
_instance = go.AddComponent<iOSWiFiHelper>();
}
/// <summary>原生层通过 UnitySendMessage 回调此方法</summary>
public void OnWiFiSSIDResult(string ssid)
{
var cb = _callback;
_callback = null;
cb?.Invoke(string.IsNullOrEmpty(ssid) ? null : ssid);
}
#if UNITY_IOS && !UNITY_EDITOR
[DllImport("__Internal")]
private static extern void RequestWiFiSSIDNative(string gameObjectName, string methodName);
#endif
}