У меня есть серьезная проблема с написанием и чтением тегов 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);
не запускает сообщениеReceivedHandler
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);
}
Обновление: в последние месяцы я разрабатываю настольное приложение Win8.1, которое пишет/читает теги NFC, используя формат NDEF
(протоколы: "NDEF: WriteTag" для публикации /"NDEF" для подписки). Я использую NdefLibrary от https://ndef.codeplex.com/.
Протокол "Windows", согласно Nokia, находится между устройствами, а не между устройством и тегом. Поэтому вам может потребоваться использовать протоколы NDEF, которые "находятся между устройством и тегом".
также см. в разделе Ограничения с Windows Phone 8
Поскольку API Proximity предоставляет только высокоуровневый доступ к протоколу NFC, а Windows Phone добавляет некоторую защиту, ваше взаимодействие с тегами NFC ограничено:
Вы не можете отформатировать тег. Ваш тег должен быть отформатирован для сообщения NDEF.
Ваш тег может содержать только сообщение NDEF.
API Proximity не предоставляет инструменты для непосредственного управления сообщениями NDEF. Чтобы управлять необработанными сообщениями NDEF, вы можете использовать NDEF Library for Proximity API (NFC).
Windows
не поддерживается. смотри мой обновленный ответ.