public override async void DidDetectTags(NFCNdefReaderSession session, INFCNdefTag[] tags) { System.Diagnostics.Debug.WriteLine("========> DidDetectTags"); _tag = tags[0]; await session.ConnectToTagAsync(_tag); TagDetected?.Invoke(this, new NfcTagDetectedEventArgs( tagId: string.Empty, //// TODO: CHECK HOW TO GET ID ndefMessage: await ReadNdefAsync())); }
public override void DidDetectTags(NFCNdefReaderSession session, INFCNdefTag[] tags) { //Connect with the NDEF Tag tag = tags[0]; Session = session; session.ConnectToTag(tag, delegate { }); Action <NFCNdefMessage, NSError> readValues; readValues = ReadValues; tag.ReadNdef(readValues); //Read NDEF tag and then encrypt the nonce }
/// <summary> /// Returns NFC Tag identifier /// </summary> /// <param name="tag"><see cref="INFCNdefTag"/></param> /// <returns>Tag identifier</returns> byte[] GetTagIdentifier(INFCNdefTag tag) { byte[] identifier = null; if (tag is INFCMiFareTag mifareTag) { identifier = mifareTag.Identifier.ToByteArray(); } else if (tag is INFCFeliCaTag felicaTag) { identifier = felicaTag.CurrentIdm.ToByteArray(); } else if (tag is INFCIso15693Tag iso15693Tag) { identifier = iso15693Tag.Identifier.ToByteArray(); } else if (tag is INFCIso7816Tag iso7816Tag) { identifier = iso7816Tag.Identifier.ToByteArray(); } return(identifier); }
/// <summary> /// Returns NFC Tag identifier /// </summary> /// <param name="tag"><see cref="INFCNdefTag"/></param> /// <returns>Tag identifier</returns> public static byte[] GetTagIdentifier(INFCNdefTag tag, ref string technology) { byte[] identifier = null; if (tag is INFCMiFareTag mifareTag) { technology = "MiFare"; identifier = mifareTag.Identifier.ToByteArray(); NFCMiFareFamily f = mifareTag.GetMifareFamily(); if (f == NFCMiFareFamily.Ultralight) { technology = "MiFare Ultralight"; } else if (f == NFCMiFareFamily.Plus) { technology = "MiFare Plus"; } else if (f == NFCMiFareFamily.DesFire) { technology = "MiFare DesFire"; } } else if (tag is INFCFeliCaTag felicaTag) { technology = "Felica"; identifier = felicaTag.CurrentIdm.ToByteArray(); } else if (tag is INFCIso15693Tag iso15693Tag) { technology = "Iso15693"; identifier = iso15693Tag.Identifier.ToByteArray(); } else if (tag is INFCIso7816Tag iso7816Tag) { technology = "Iso7816"; identifier = iso7816Tag.Identifier.ToByteArray(); } return(identifier); }
void MakeTagReadOnly(NFCTagReaderSession session, INFCTag tag, INFCNdefTag ndefTag) { session.ConnectTo(tag, (error) => { if (error != null) { Console.WriteLine(error.LocalizedDescription); return; } ndefTag.WriteLock((error) => { if (error != null) { Console.WriteLine("Error when locking a tag on iOS: " + error.LocalizedDescription); } else { Console.WriteLine("Locking Successful!"); } }); }); }
/// <summary> /// Writes or clears a TAG /// </summary> /// <param name="session"><see cref="NFCTagReaderSession"/></param> /// <param name="tag"><see cref="INFCNdefTag"/></param> /// <param name="tagInfo"><see cref="ITagInfo"/></param> /// <param name="clearMessage">Clear message</param> void ExecuteWriteOrClear(NFCTagReaderSession session, INFCNdefTag tag, ITagInfo tagInfo, bool clearMessage = false) { tag.QueryNdefStatus((status, capacity, error) => { if (error != null) { Invalidate(session, error.LocalizedDescription); return; } if (status == NFCNdefStatus.ReadOnly) { Invalidate(session, UIMessages.NFCErrorReadOnlyTag); return; } if (Convert.ToInt32(capacity) < NFCUtils.GetSize(tagInfo.Records)) { Invalidate(session, UIMessages.NFCErrorCapacityTag); return; } NFCNdefMessage message = null; if (!clearMessage) { session.AlertMessage = UIMessages.NFCSuccessWrite; var records = new List <NFCNdefPayload>(); for (var i = 0; i < tagInfo.Records.Length; i++) { var record = tagInfo.Records[i]; if (GetiOSPayload(record) is NFCNdefPayload ndefPayload) { records.Add(ndefPayload); } } if (records.Any()) { message = new NFCNdefMessage(records.ToArray()); } } else { session.AlertMessage = UIMessages.NFCSuccessClear; message = GetEmptyNdefMessage(); } if (message != null) { tag.WriteNdef(message, (error) => { if (error != null) { Invalidate(session, error.LocalizedDescription); return; } tagInfo.Records = GetRecords(message.Records); OnMessagePublished?.Invoke(tagInfo); Invalidate(NfcSession); }); } else { Invalidate(session, UIMessages.NFCErrorWrite); } }); }