Attualmente sto lavorando al porting di un'app su UWP. L'app ha una pagina con il pulsante "Scrivi su NFC". Dopo che l'utente lo ha toccato, attende un tag NFC e scrive un messaggio binario LaunchApp:WriteTag
.Come avviare la mia app tramite tag NFC?
cosa ha funzionato bene sotto WP8.1, non funziona affatto sotto 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());
}
Purtroppo questo non funziona. La funzionalità NFC è abilitata e l'app WP8.1 funziona sullo stesso telefono, quindi questo non dovrebbe essere un problema.
Ho già provato più formati in quanto il problema sembra essere il launchAppMessage
, in cui non ho trovato un documento UWP per. C'è un articolo di MSDN Windows 8+, che descrive la stringa per essere nel formato:
myArgs\tWindows\tAppFamilyName!App
Quello che ho cercato:
myArgs
è abbastanza breve - non dovrebbe essere un problema.Windows
oWindowsPhone
non fa alcuna differenza. Entrambi non funzionano.AppFamilyName
è il nome corretto della famiglia di app che si trova nel mio manifest dell'app. L'app è associata al negozio e sembra che questo non dovrebbe essere il problema.App
è il contenuto di<Application id="App" ... />
nel manifest dell'app. Cercando ilMyAppNamespace.App
non ha funzionato bene e chiamando loCurrentApp.AppId
(ciò che viene utilizzato nelle app WinRT) genera un'eccezione.
Per "non funziona" intendo che scrive sul tag, ma il tag non viene riconosciuto da Windows 10.
più Una cosa che ho trovato, è che per myArgs\tWindows\tAppFamilyName!App
l'applicazione genera la seguente eccezione - senza ulteriori dettagli:
System.ExecutionEngineException was unhandled
Message: An unhandled exception of type 'System.ExecutionEngineException' occurred in Unknown Module.
spero davvero che qualcuno ha un'idea su come risolvere questo problema. Purtroppo non ci sono ancora campioni UWP per questo e i documenti sono ancora vecchi ...:/
PS: l'uso di un protocollo personalizzato insieme a WindowsUri:WriteTag
funziona bene ma voglio solo che la mia app si apra con il tag NFC. Inoltre, la finestra di dialogo di conferma appare come "Vuoi aprire l'app associata a mycustomprotocol?" - che non sembra molto facile da usare. Quindi non è una soluzione reale per me, più una soluzione che non voglio usare.
Grazie Andreas! Ho già visto il link alla mia domanda SO nel codice, quindi grazie per la risposta dettagliata :) Penso che il vero problema qui sia l'eccezione che viene generata se l'app non è installata attraverso lo store, quindi vediamo se MS può fare qualcosa su questo [qualcuno del team NFC di MSFT ha risposto nel thread del forum MSDN su questo problema] (https://social.msdn.microsoft.com/Forums/en-US/b1e2743c-1cb3-4129-ade9-f8774d13ae0e/UWP-how-to-direttamente-lancio-my-app-via-NFC-tag? forum = wpdevelop). – sibbl
Fantastico vederlo, grazie per il link! Sto anche seguendo la nostra mailing list MVP - manteniamo aggiornata la postazione SO quando avremo una risposta definitiva da MS! –