94 lines
2.6 KiB
C#
94 lines
2.6 KiB
C#
using NFCLockDemoV2.ViewModels;
|
|
|
|
#if IOS
|
|
using Foundation;
|
|
using NFCManager = NfcLock.Ios.Binding.NFCManager;
|
|
#endif
|
|
|
|
namespace NFCLockDemoV2;
|
|
|
|
public partial class MainPage : ContentPage
|
|
{
|
|
private MainViewModel _mainMainViewModel;
|
|
|
|
#if IOS
|
|
private void SetNFCCallbacks()
|
|
{
|
|
NFCManager.SetLoopCbWithCb(new LoopCallback(this));
|
|
NFCManager.SetFinishedCbWithCb(() =>
|
|
{
|
|
System.Diagnostics.Debug.WriteLine("finished");
|
|
_mainMainViewModel.DeviceId = "--";
|
|
_mainMainViewModel.DeviceRssi = "--";
|
|
_mainMainViewModel.DeviceStatus = "NFC操作完成";
|
|
_mainMainViewModel.Operation = null;
|
|
_mainMainViewModel.ArcProgress = 0;
|
|
});
|
|
|
|
NFCManager.SetChargingCbWithCb((NSString res, int level) =>
|
|
{
|
|
System.Diagnostics.Debug.WriteLine($"res: {res}, level: {level}");
|
|
_mainMainViewModel.UpdateMessage($"充电中({level}%)");
|
|
_mainMainViewModel.ArcProgress = level;
|
|
});
|
|
|
|
NFCManager.SetControllingCbWithCb((NSString res, int progress) =>
|
|
{
|
|
System.Diagnostics.Debug.WriteLine($"res: {res}, progress: {progress}");
|
|
_mainMainViewModel.UpdateMessage($"控制中({progress}%)");
|
|
});
|
|
}
|
|
|
|
private class LoopCallback : Foundation.NSObject
|
|
{
|
|
private readonly MainPage mainPage;
|
|
|
|
public LoopCallback(MainPage page)
|
|
{
|
|
this.mainPage = page;
|
|
}
|
|
|
|
[Export("callAsFunctionWithId:isNew:rssi:")]
|
|
public bool CallAsFunction(IntPtr id, bool isNew, int rssi)
|
|
{
|
|
string deviceId = NSString.FromHandle(id);
|
|
|
|
mainPage._mainMainViewModel.DeviceId = deviceId;
|
|
mainPage._mainMainViewModel.DeviceRssi = rssi.ToString();
|
|
|
|
return true; // 继续循环
|
|
}
|
|
}
|
|
#endif
|
|
|
|
public MainPage(MainViewModel mainViewModel)
|
|
{
|
|
InitializeComponent();
|
|
_mainMainViewModel = mainViewModel;
|
|
BindingContext = _mainMainViewModel;
|
|
}
|
|
|
|
protected override void OnAppearing()
|
|
{
|
|
base.OnAppearing();
|
|
#if IOS
|
|
SetNFCCallbacks();
|
|
#endif
|
|
}
|
|
|
|
private void LockClicked(object? sender, EventArgs e)
|
|
{
|
|
#if IOS
|
|
NFCManager.LockWithPassword(_mainMainViewModel.Password);
|
|
NFCManager.StartScan();
|
|
#endif
|
|
}
|
|
|
|
private void UnlockClicked(object? sender, EventArgs e)
|
|
{
|
|
#if IOS
|
|
NFCManager.UnlockWithPassword(_mainMainViewModel.Password);
|
|
NFCManager.StartScan();
|
|
#endif
|
|
}
|
|
} |