NFC csak Androidra javítás ...
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user