【发布时间】:2016-03-17 06:20:49
【问题描述】:
我目前正在将应用移植到 UWP。该应用程序有一个带有“写入 NFC”按钮的页面。用户点击后,它会等待 NFC 标签并写入LaunchApp:WriteTag 二进制消息。
在 WP8.1 下运行良好,在 Windows 10 UWP 下根本无法运行:
var proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();
if (proximityDevice != null)
{
var launchArgs = "user=default";
var appId = "App";
var appName = Windows.ApplicationModel.Package.Current.Id.FamilyName + "!" + appId;
var launchAppMessage = launchArgs + "\tWindows\t" + appName;
var dataWriter = new Windows.Storage.Streams.DataWriter();
dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE;
dataWriter.WriteString(launchAppMessage);
var launchAppPubId = proximityDevice.PublishBinaryMessage("LaunchApp:WriteTag", dataWriter.DetachBuffer());
}
不幸的是,这不起作用。 NFC 功能已启用且 WP8.1 应用程序可在同一部手机上运行,因此这应该不是问题。
我已经尝试了多种格式,因为问题似乎是 launchAppMessage,我没有找到 UWP 文档。有一篇Windows 8+MSDN 文章,描述了字符串的格式:
myArgs\tWindows\tAppFamilyName!App
我尝试了什么:
-
myArgs足够短 - 应该不是问题。 -
Windows或WindowsPhone没有任何区别。两者都不起作用。 -
AppFamilyName是我的应用清单中的正确应用系列名称。该应用与商店相关联,看起来这也不应该是问题。 -
App是我的应用清单中<Application id="App" ... />的内容。尝试MyAppNamespace.App效果不佳,调用CurrentApp.AppId(在 WinRT 应用程序中使用)会引发异常。
“不工作”是指它写入标签,但 Windows 10 根本无法识别标签。
我发现的另一件事是,对于myArgs\tWindows\tAppFamilyName!App,应用程序抛出以下异常 - 没有任何进一步的细节:
System.ExecutionEngineException was unhandled
Message: An unhandled exception of type 'System.ExecutionEngineException' occurred in Unknown Module.
我真的希望有人知道如何解决这个问题。不幸的是,目前还没有 UWP 示例,文档仍然是旧的......:/
PS:将自定义协议与 WindowsUri:WriteTag 一起使用可以正常工作,但我希望只使用 NFC 标签打开我的应用程序。此外,确认对话框看起来像“您要打开与 mycustomprotocol 关联的应用程序吗?” - 这看起来不是很用户友好。所以这对我来说不是真正的解决方案,更多的是我不想使用的解决方法。
【问题讨论】:
标签: c# windows-runtime nfc windows-10 uwp