1. 优化HomePage加载逻辑,修复加载弹窗重复显示问题 2. 重构蓝牙分享页、重命名页的返回事件绑定逻辑 3. 优化iOS/Android扫码对焦功能,支持多后置摄像头、软触发对焦 4. 调整扫码预览布局与参数,提升扫码识别率与适配性 5. 删除冗余的Android状态栏管理脚本与无用文件 6. 新增返回回调调试日志
128 lines
4.2 KiB
C#
128 lines
4.2 KiB
C#
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);
|
||
}
|
||
}
|
||
}
|
||
}
|