I'm currently working on porting an app to UWP. The app has a page with a "Write to NFC" button. After the user taps it, it waits for an NFC tag and writes a LaunchApp:WriteTag
binary message.
What worked fine under WP8.1, doesn't work at all under 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());
}
Unfortunately this doesn't work. The NFC capability is enabled and the WP8.1 app works on the same phone, so this shouldn't be an issue.
I already tried multiple formats as the problem seems to be the launchAppMessage
, where I didn't find a UWP doc for. There's a Windows 8+ MSDN article, which describes the string to be in the format:
myArgs\tWindows\tAppFamilyName!App
What I tried:
myArgs
is short enough - shouldn't be a problem.Windows
orWindowsPhone
doesn't make any difference. Both don't work.AppFamilyName
is the correct app family name that's inside my app manifest. The app is associated to the store and it looks like this shouldn't be the problem as well.App
is what's inside<Application id="App" ... />
in my app manifest. TryingMyAppNamespace.App
didn't work as well and callingCurrentApp.AppId
(what's used in WinRT apps) throws an exception.
By "not working" I mean that it writes to the tag, but the tag is not recognized by Windows 10 at all.
One more thing I found, is that for myArgs\tWindows\tAppFamilyName!App
the app throws the following exception - without any further details:
System.ExecutionEngineException was unhandled
Message: An unhandled exception of type 'System.ExecutionEngineException' occurred in Unknown Module.
I really hope someone has an idea on how to solve this. Unfortunately there are no UWP samples for this yet and the docs are still the old ones... :/
PS: using a custom protocol together with WindowsUri:WriteTag
works fine but I want only my app to open with the NFC tag. Also, the confirmation dialog then looks like "Do you want to open the app associated with mycustomprotocol?" - which looks not very user friendly. So that's no real solution for me, more a workaround I don't want to use.