NFCTagReaderをxamarin.iosアプリに実装するPOCを実行しています。
https://developer.xamarin.com/samples/monotouch/ios11/NFCTagReader/
xamarinサイトからNFCTagReaderを取得し、適切なプロビジョニング設定をすべて設定して、タグリーダーにアクセスできるようにしました。問題は、スキャンをクリックすると、期待どおりに[Ready to Scan]ウィンドウがポップアップし、タグをスキャンすると、画面に小さなチェックマークが表示され、見つかったことを示しますが、コードのDidDetectメソッドに侵入することはありません。代理人。DidInvalidateメソッドにヒットし、ReaderSessionInvalidationErrorUserCanceledのコードを提供します。
私が欠けているアイデア。以下は私のコードスニペットです:
partial void Scan(UIBarButtonItem sender)
{
InvokeOnMainThread(() =>
{
Session = new NFCNdefReaderSession(this, null, true);
if (Session != null)
{
Session.BeginSession();
}
});
}
#endregion
#region NFCNDEFReaderSessionDelegate
public void DidDetect(NFCNdefReaderSession session, NFCNdefMessage[] messages)
{
foreach (NFCNdefMessage msg in messages)
{
DetectedMessages.Add(msg);
}
DispatchQueue.MainQueue.DispatchAsync(() =>
{
this.TableView.ReloadData();
});
}
public void DidInvalidate(NFCNdefReaderSession session, NSError error)
{
var readerError = (NFCReaderError)(long)error.Code;
if (readerError != NFCReaderError.ReaderSessionInvalidationErrorFirstNDEFTagRead &&
readerError != NFCReaderError.ReaderSessionInvalidationErrorUserCanceled)
{
InvokeOnMainThread(() =>
{
var alertController = UIAlertController.Create("Session Invalidated", error.LocalizedDescription, UIAlertControllerStyle.Alert);
alertController.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
DispatchQueue.MainQueue.DispatchAsync(() =>
{
this.PresentViewController(alertController, true, null);
});
});
}
}
少し金髪の瞬間で、この質問を閉じるつもりでしたが、他の誰かが私と同じ問題に遭遇した場合に備えて、これに答えると思いました。
問題は、私が与えられたタグが空白であるという事実によって引き起こされました。したがって、電話はタグを検出したときにクリックしますが、didDetectメソッドをヒットすることはありません。AndroidタグライターアプリでNFCタグに何かを書き込むとすぐに、DidDetectが期待どおりに起動しました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加