private void TryInvalidateSession() { try { Session?.RestartPolling(); Session?.InvalidateSession(); } catch { } }
/// <summary> /// Invalidate the session /// </summary> /// <param name="session"><see cref="NFCTagReaderSession"/></param> /// <param name="message">Message to show</param> void Invalidate(NFCTagReaderSession session, string message = null) { _customInvalidation = true; if (string.IsNullOrWhiteSpace(message)) { session.InvalidateSession(); } else { session.InvalidateSession(message); } }
/// <summary> /// Invalidate the session /// </summary> /// <param name="session"><see cref="NFCTagReaderSession"/></param> /// <param name="message">Message to show</param> void Invalidate(NFCTagReaderSession session, string message = null) { _customInvalidation = true; if (string.IsNullOrWhiteSpace(message)) { session.InvalidateSession(); } else { session.InvalidateSession(message); } OnTagListeningStatusChanged?.Invoke(false); }
/// <summary> /// NFC読取セッションがタグを検知されたら呼び出される。 /// </summary> /// <param name="session">NFC読取セッション</param> /// <param name="tags">検知タグ</param> public override void DidDetectTags(NFCTagReaderSession session, INFCTag[] tags) { Debug.WriteLine($"DidDetectTags"); // タグに接続する。 if (tags.Length <= 0) { return; } session.ConnectTo(tags[0], connectErr => { // 接続エラー時はメッセージを表示してNFC読取セッションを終了する、 if (connectErr != null) { Debug.WriteLine($"Connect Error = [{connectErr}]"); session.InvalidateSession("タグ接続失敗。"); return; } // FeliCa準拠のタグプロトコルを取得する。 _felicaTag = tags[0].GetNFCFeliCaTag(); if (_felicaTag == null) { return; } // FeliCaのRequest Serviceコマンドを実行し、 // サービスコード0x090Fを指定し、カード種別およびカード残額情報サービスに接続する。 // (サービスコードはリトルエンディアンで) _felicaTag.RequestService(ServiceCodes, OnCompletedRequestService); }); }
public bool IsAvailable() { NfcSession = new NFCTagReaderSession(NFCPollingOption.Iso14443, this, null) { AlertMessage = "NFC not available." }; if (NfcSession != null) { NfcSession.InvalidateSession(); return(true); } return(false); }