C#NFC接近 – 处理程序不被解雇

写入和读取NFC标签存在严重问题。 处理程序没有被解雇。

这是我的代码写一些文本到NFC标签,它的工作:

// Writes a string to a NFC tag private bool WriteToNFCTag(string value) { var dataWriter = new DataWriter() { UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8 }; dataWriter.WriteString(value); ProximityDevice.GetDefault().PublishBinaryMessage("Windows:WriteTag.NokiaTest", dataWriter.DetachBuffer(), MesssageTransmitted); } private void MesssageTransmitted(ProximityDevice sender, long messageId) { Debug.WriteLine("Message sent!"); } 

但我无法读取NFC标签:

 ProximityDevice.GetDefault().SubscribeForMessage("Windows.NokiaTest", messageReceivedHandler); 

不会触发messageReceivedHandler

 void messageReceivedHandler(ProximityDevice device, ProximityMessage message) { Debug.WriteLine("Got the message"); var byteBuffer = message.Data; } 

我没有得到任何错误信息或类似的东西。 如果有人能帮助我,我会很棒。 谢谢!

我想你需要在MesssageTransmitted方法中停止发布。

 private void MesssageTransmitted(ProximityDevice sender, long messageId) { Debug.WriteLine("Message sent!"); ProximityDevice.GetDefault().StopPublishingMessage(messageId); } 

更新:近几个月来,我一直在开发一个使用NDEF格式(协议:“NDEF:WriteTag”发布/“NDEF”订阅)写/读NFC标签的Win8.1桌面应用程序。 我使用https://ndef.codeplex.com/中的 NdefLibrary。

根据诺基亚的说法,“Windows”协议位于设备之间,而不是设备与标签之间。 所以你可能需要使用“在设备和标签之间”的NDEF协议。

在这里输入图像描述

也可以参考Windows Phone 8的限制

由于Proximity API只提供对NFC协议的高级访问,而Windows Phone增加了一些保护,所以与NFC标签的交互是有限的:

你不能格式化标签。 您的标签必须格式化为NDEF消息。

您的标签只能包含NDEF消息。

Proximity API不提供直接操作NDEF消息的工具。 要操纵原始的NDEF消息,您可以使用NDEF Library for Proximity API(NFC)。