NFC csak Androidra javítás ...

This commit is contained in:
2025-03-28 15:37:14 +01:00
parent 2341b186ef
commit b69f9af6f3
6 changed files with 142 additions and 213 deletions
@@ -4,6 +4,7 @@ using WorkFlowCheck.Common.DTO;
using WorkFlowCheck.MAUI.Pages.BaseStock.CheckPoints;
using WorkFlowCheck.MAUI.Services.Interfaces;
using Plugin.NFC;
using WorkFlowCheck.MAUI.Pages.NFC;
namespace WorkFlowCheck.MAUI.Pages.BaseStock;
@@ -11,7 +12,7 @@ public partial class CheckPointsPage : ContentPage
{
private readonly IBaseStockService _baseStockService;
private readonly ISyncService _syncService;
private bool _onReceiveing = false;
public CheckPointsPage()
{
@@ -51,8 +52,20 @@ public partial class CheckPointsPage : ContentPage
}
private async void OnPairItem(CheckPointDTO checkPointDTO)
{
_checkPointDTO = checkPointDTO;
await BeginListening();
var checkPointCode = await NFCWaiter.ShowModalAsync();
if (!string.IsNullOrEmpty(checkPointCode))
{
if (Navigation.ModalStack.Count > 0)
{
await Navigation.PopModalAsync();
}
if (checkPointDTO != null)
{
checkPointDTO.Code = checkPointCode;
await _baseStockService.UpdateCheckPoint(checkPointDTO);
await LoadCheckPoints();
}
}
}
protected override bool OnBackButtonPressed()
{
@@ -63,75 +76,4 @@ public partial class CheckPointsPage : ContentPage
{
_syncService.SyncCheckPointsUp();
}
#region NFC
bool _eventsAlreadySubscribed = false;
CheckPointDTO _checkPointDTO = null;
async Task BeginListening()
{
try
{
MainThread.BeginInvokeOnMainThread(() =>
{
SubscribeEvents();
CrossNFC.Current.StartListening();
});
}
catch (Exception ex)
{
}
}
async Task EndListening()
{
try
{
MainThread.BeginInvokeOnMainThread(() =>
{
UnsubscribeEvents();
CrossNFC.Current.StopPublishing();
CrossNFC.Current.StopListening();
});
}
catch (Exception ex)
{
}
}
void SubscribeEvents()
{
if (_eventsAlreadySubscribed)
UnsubscribeEvents();
_eventsAlreadySubscribed = true;
CrossNFC.Current.OnMessageReceived += Current_OnMessageReceived_NFCData;
}
void UnsubscribeEvents()
{
CrossNFC.Current.OnMessageReceived -= Current_OnMessageReceived_NFCData;
_eventsAlreadySubscribed = false;
}
async void Current_OnMessageReceived_NFCData(ITagInfo tagInfo)
{
if (_onReceiveing) return;
_onReceiveing = true;
if (tagInfo == null)
{
return;
}
var identifier = tagInfo.Identifier;
var serialNumber = NFCUtils.ByteArrayToHexString(identifier, ":");
if (_checkPointDTO != null)
{
_checkPointDTO.Code = serialNumber;
await _baseStockService.UpdateCheckPoint(_checkPointDTO);
await Task.Delay(500);
await EndListening();
await LoadCheckPoints();
}
_onReceiveing = false;
}
#endregion
}