“虞渠成” 432b80dfa3 fix: 修复多处UI返回逻辑、优化扫码对焦与UI布局
1.  优化HomePage加载逻辑,修复加载弹窗重复显示问题
2.  重构蓝牙分享页、重命名页的返回事件绑定逻辑
3.  优化iOS/Android扫码对焦功能,支持多后置摄像头、软触发对焦
4.  调整扫码预览布局与参数,提升扫码识别率与适配性
5.  删除冗余的Android状态栏管理脚本与无用文件
6.  新增返回回调调试日志
2026-09-01 15:47:57 +08:00

128 lines
4.2 KiB
C#
Raw Permalink 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.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using Kill.Managers;
using Kill.Network;
using Kill.UI.Components;
using UnityEngine;
using UnityEngine.UI;
namespace Kill.UI.Pages
{
public class ShareDevicePage : MonoBehaviour
{
public InputField userIdInput;
public Button shareButton;
public ScanQRcode scanQRcode;
public Button backButton;
/// <summary>待分享设备的蓝牙MAC为空时取当前选中设备</summary>
private string deviceMac;
/// <summary>关闭页面时的回调(用于恢复上层页面的返回事件)</summary>
private Action onCloseAction;
/// <summary>
/// 初始化
/// </summary>
/// <param name="deviceMac">设备蓝牙MAC分享非选中设备时传入</param>
/// <param name="onClose">关闭页面回调</param>
public void Init(string deviceMac = null)
{
this.deviceMac = deviceMac;
}
private Action closeCallback;
void Start()
{
closeCallback=UIManager.Instance.GetBackAction();
UIManager.Instance.RegisterBackAction(Back);
backButton.onClick.RemoveAllListeners();
backButton.onClick.AddListener(Back);
userIdInput.text = "";
shareButton.onClick.RemoveAllListeners();
shareButton.onClick.AddListener(async () => await Share());
scanQRcode.OnQRCodeScanned += ScanOver;
}
public void BeginScan()
{
scanQRcode.scanType = ScanQRcode.ScanType.Other;
scanQRcode.gameObject.SetActive(true);
}
public void ScanOver(string scannedData)
{
userIdInput.text = scannedData;
scanQRcode.gameObject.SetActive(false);
}
public void Back()
{
if (closeCallback != null)
{
UIManager.Instance.RegisterBackAction(closeCallback);
}
else
UIManager.Instance.ClearBackAction();
Destroy(gameObject);
}
public async Task Share()
{
string targetUserId = userIdInput.text.Trim();
if (string.IsNullOrEmpty(targetUserId))
{
ToastUI.Show("100204");
return;
}
// 调用后端接口共享设备
LoadingUI.Show();
var requestData = new ShareDeviceRequest
{
device_sn = string.IsNullOrEmpty(deviceMac)
? DataManager.Instance.selectedDevice.ble_mac
: deviceMac,
target_user_id = targetUserId,
owner_id = DataManager.Instance.userInfo.id
};
try
{
var response = await NetworkCtrl.Instance.Post<NoDataResponse>("/api/v1/device/share", requestData);
LoadingUI.Hide();
ResponseCodeHandler.HandleResponse(response,
onSuccess: (data) =>
{
Debug.Log("设备共享成功");
ToastUI.Show("100205");
Back();
},
onError: (code, msg) =>
{
//610 重复分享
//404 用户不存在
//608 已达上限
switch(code)
{
case 404:
ToastUI.Show("100282");
break;
case 610:
ToastUI.Show("100299");
break;
case 608:
ToastUI.Show("100298");
break;
default:
ToastUI.Show("100282");
break;
}
}
);
}
catch (Exception ex)
{
LoadingUI.Hide();
Debug.LogError("设备共享失败: " + ex.Message);
}
}
}
}