Condividi tramite


ProximityDevice.PublishBinaryMessage Metodo

Definizione

Overload

PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler)

Pubblica un messaggio contenente dati binari nei sottoscrittori del tipo di messaggio specificato. Il gestore specificato viene chiamato quando il messaggio è stato trasmesso.

PublishBinaryMessage(String, IBuffer)

Pubblica nei sottoscrittori del tipo di messaggio specificato un messaggio contenente dati binari.

PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler)

Pubblica un messaggio contenente dati binari nei sottoscrittori del tipo di messaggio specificato. Il gestore specificato viene chiamato quando il messaggio è stato trasmesso.

public:
 virtual long long PublishBinaryMessage(Platform::String ^ messageType, IBuffer ^ message, MessageTransmittedHandler ^ messageTransmittedHandler) = PublishBinaryMessage;
/// [Windows.Foundation.Metadata.Overload("PublishBinaryMessageWithCallback")]
long PublishBinaryMessage(winrt::hstring const& messageType, IBuffer const& message, MessageTransmittedHandler const& messageTransmittedHandler);
[Windows.Foundation.Metadata.Overload("PublishBinaryMessageWithCallback")]
public long PublishBinaryMessage(string messageType, IBuffer message, MessageTransmittedHandler messageTransmittedHandler);
function publishBinaryMessage(messageType, message, messageTransmittedHandler)
Public Function PublishBinaryMessage (messageType As String, message As IBuffer, messageTransmittedHandler As MessageTransmittedHandler) As Long

Parametri

messageType
String

Platform::String

winrt::hstring

Tipo di messaggio da recapitare ai sottoscrittori.

message
IBuffer

Dati del messaggio binario da recapitare ai sottoscrittori.

messageTransmittedHandler
MessageTransmittedHandler

Gestore da chiamare quando il messaggio è stato trasmesso.

Restituisce

Int64

long long

long

ID pubblicazione univoco per il messaggio pubblicato.

Attributi

Requisiti Windows

Funzionalità dell'app
ID_CAP_PROXIMITY [Windows Phone] proximity ID_CAP_PROXIMITY [Windows Phone]

Esempio

Windows.Networking.Proximity.ProximityDevice proximityDevice;

private void PublishLaunchApp()
{
    proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();

if (proximityDevice != null)
    {
        // The format of the app launch string is: "<args>\tWindows\t<AppName>".
        // The string is tab or null delimited.

        // The <args> string must have at least one character.
        string launchArgs = "user=default";

        // The format of the AppName is: PackageFamilyName!PRAID.
        string praid = "MyAppId"; // The Application Id value from your package.appxmanifest.

        string appName = Windows.ApplicationModel.Package.Current.Id.FamilyName + "!" + praid;

        string 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(), 
            proximityWriteTagLaunchAppMessageTransmitCallback);
    }
}

private void proximityWriteTagLaunchAppMessageTransmitCallback(
    Windows.Networking.Proximity.ProximityDevice sender,
    long messageId)
{
    // The LaunchApp message has been successfully written to a tag.
}
   Private proximityDevice As Windows.Networking.Proximity.ProximityDevice

   Private Sub PublishLaunchApp()
       proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault()

   If proximityDevice IsNot Nothing Then
           ' The format of the app launch string is: "<args>" & vbTab & "Windows" vbTab & "<AppName>".
           ' The string is tab or null delimited.

           ' The <args> string must have at least one character.
           Dim launchArgs = "user=default"

           ' The format of the AppName is: PackageFamilyName!PRAID.
           Dim praid = "MyAppId" ' The Application Id value from your package.appxmanifest.

           Dim appName = Windows.ApplicationModel.Package.Current.Id.FamilyName & "!" & praid

           Dim launchAppMessage = launchArgs & vbTab & "Windows" & vbTab & appName

           Dim dataWriter = New Windows.Storage.Streams.DataWriter()
           dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE
           dataWriter.WriteString(launchAppMessage)
           Dim launchAppPubId =
              proximityDevice.PublishBinaryMessage(
                 "LaunchApp:WriteTag", dataWriter.DetachBuffer(),
                 AddressOf proximityWriteTagLaunchAppMessageTransmitCallback)
       End If
   End Sub

   Private Sub proximityWriteTagLaunchAppMessageTransmitCallback(
       sender As Windows.Networking.Proximity.ProximityDevice,
       messageId As Long)
       ' The LaunchApp message has been successfully written to a tag.
   End Sub

Commenti

È possibile pubblicare più messaggi dello stesso tipo di messaggio e ogni pubblicazione avrà un ID univoco associato.

È possibile interrompere la pubblicazione di un messaggio passando l'ID pubblicazione restituito dal metodo PublishBinaryMessage al metodo StopPublishingMessage .

I messaggi continuano a essere pubblicati finché non viene chiamato il metodo StopPublishingMessage o il dispositivo di prossimità viene rilasciato.

È possibile sottoscrivere messaggi pubblicati usando il metodo SubscribeForMessage .

È possibile usare il metodo PublishMessage per pubblicare un messaggio di testo in un computer di prossimità. È possibile usare il metodo PublishUriMessage per pubblicare un URI (Uniform Resource Identifier) in un computer di prossimità.

Importante

Le API di prossimità non forniscono l'autenticazione, la crittografia o l'integrità dei messaggi. Non usare la prossimità per scambiare informazioni riservate degli utenti, ad esempio password, dati finanziari, messaggi di testo, messaggi di testo, messaggi di posta elettronica, fotografie o numeri di ID del governo.

Tipi di messaggi

Per informazioni dettagliate sui tipi di messaggi che è possibile pubblicare con il metodo [PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler), vedere le osservazioni nell'argomento PublishBinaryMessage(String, IBuffer).

Vedi anche

Si applica a

PublishBinaryMessage(String, IBuffer)

Pubblica nei sottoscrittori del tipo di messaggio specificato un messaggio che contiene dati binari.

public:
 virtual long long PublishBinaryMessage(Platform::String ^ messageType, IBuffer ^ message) = PublishBinaryMessage;
/// [Windows.Foundation.Metadata.Overload("PublishBinaryMessage")]
long PublishBinaryMessage(winrt::hstring const& messageType, IBuffer const& message);
[Windows.Foundation.Metadata.Overload("PublishBinaryMessage")]
public long PublishBinaryMessage(string messageType, IBuffer message);
function publishBinaryMessage(messageType, message)
Public Function PublishBinaryMessage (messageType As String, message As IBuffer) As Long

Parametri

messageType
String

Platform::String

winrt::hstring

Tipo di messaggio da recapitare ai sottoscrittori.

message
IBuffer

Dati del messaggio binario da recapitare ai sottoscrittori.

Restituisce

Int64

long long

long

ID pubblicazione univoco per il messaggio pubblicato.

Attributi

Requisiti Windows

Funzionalità dell'app
ID_CAP_PROXIMITY [Windows Phone] proximity ID_CAP_PROXIMITY [Windows Phone]

Esempio

Windows.Networking.Proximity.ProximityDevice proximityDevice;

private void PublishLaunchApp()
{
    proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();

if (proximityDevice != null)
    {
        // The format of the app launch string is: "<args>\tWindows\t<AppName>".
        // The string is tab or null delimited.

        // The <args> string must have at least one character.
        string launchArgs = "user=default";

        // The format of the AppName is: PackageFamilyName!PRAID.
        string praid = "MyAppId"; // The Application Id value from your package.appxmanifest.

        string appName = Windows.ApplicationModel.Package.Current.Id.FamilyName + "!" + praid;

        string 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());
    }
}
Private proximityDevice As Windows.Networking.Proximity.ProximityDevice

Private Sub PublishLaunchApp()
    proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault()

If proximityDevice IsNot Nothing Then
        ' The format of the app launch string is: "<args>" & vbTab & "Windows" vbTab & "<AppName>".
        ' The string is tab or null delimited.

        ' The <args> string must have at least one character.
        Dim launchArgs = "user=default"

        ' The format of the AppName is: PackageFamilyName!PRAID.
        Dim praid = "MyAppId" ' The Application Id value from your package.appxmanifest.

        Dim appName = Windows.ApplicationModel.Package.Current.Id.FamilyName & "!" & praid

        Dim launchAppMessage = launchArgs & vbTab & "Windows" & vbTab & appName

        Dim dataWriter = New Windows.Storage.Streams.DataWriter()
        dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE
        dataWriter.WriteString(launchAppMessage)
        Dim launchAppPubId =
           proximityDevice.PublishBinaryMessage(
              "LaunchApp:WriteTag", dataWriter.DetachBuffer())
    End If
End Sub

Commenti

È possibile pubblicare più messaggi dello stesso tipo di messaggio e ogni pubblicazione avrà un ID univoco associato.

È possibile interrompere la pubblicazione di un messaggio passando l'ID pubblicazione (recuperato da PublishBinaryMessage) a StopPublishingMessage.

I messaggi continuano a essere pubblicati fino a quando stopPublishingMessage viene chiamato o viene rilasciato ProximityDevice .

È possibile sottoscrivere messaggi pubblicati usando il metodo SubscribeForMessage .

È possibile usare il metodo PublishMessage per pubblicare un messaggio di testo in un computer di prossimità. È possibile usare il metodo PublishUriMessage per pubblicare un URI (Uniform Resource Identifier) in un computer di prossimità.

Importante

Le API di prossimità non forniscono autenticazione, crittografia o integrità dei messaggi. Non usare la prossimità per scambiare informazioni sensibili agli utenti, ad esempio password, dati finanziari, messaggi di testo, messaggi di posta elettronica, fotografie o numeri di ID del governo.

Tipi di messaggi

Si usa il parametro messageType per specificare un identificatore che identifica in modo univoco il messaggio pubblicato e definisce anche il significato del messaggio e del gruppo di destinatari del sottoscrittore previsto.

I valori del tipo di messaggio sono stringhe con distinzione tra maiuscole e minuscole costituite da due parti: il protocollo, seguito da un punto (.), seguito dal sottotipo.

Il sottotipo è una stringa di caratteri in cui ogni carattere può essere alfanumerico o qualsiasi carattere URI valido come definito da RFC 3986. Ecco questi caratteri.

- . _ ~ : / ? # [ ] @ ! $ & ' ( ) * + , ; = %

Il sottotipo potrebbe non superare una lunghezza di 250 caratteri.

Ecco i valori supportati per la parte del protocollo del tipo di messaggio.

Protocollo "Windows"

Il messaggio contiene dati binari.

Protocollo "WindowsUri"

I dati del messaggio contengono una stringa codificata UTF-16LE che è un URI (Uniform Resource Identifier).

Windows gestisce i messaggi con un protocollo "WindowsUri" richiedendo all'utente di visualizzare l'URI ricevuto nell'app configurata come impostazione predefinita per tale protocollo URI specifico. Ad esempio, http:// URI aperti nel Web browser predefinito. Windows apre un URI nell'app predefinita anche se un'altra app viene sottoscritta anche a "WindowsUri".

Anziché chiamare il metodo PublishBinaryMessage con questo protocollo, usare il metodo PublishUriMessage .

Se si pubblica un URI in un computer che non esegue Windows, l'URI viene formattato automaticamente in base alla tecnologia di prossimità supportata dal computer. Ad esempio, se il computer usa hardware NFC per prossimità, l'URI viene formattato come record URI NDEF.

Se si esegue la sottoscrizione per un messaggio "WindowsUri" e il computer Windows riceve un messaggio formattato per la tecnologia di prossimità supportata dal computer, Windows legge il messaggio formattato e restituisce solo l'URI come contenuto del messaggio.

Protocollo "WindowsMime"

I dati del messaggio sono di tipo mime specifico. Ad esempio, se i dati del messaggio sono un'immagine jpeg, il tipo di messaggio è "WindowsMime.image/jpeg".

Windows gestisce i messaggi "WindowsMime" richiedendo all'utente di visualizzare il contenuto mime ricevuto, anche se un'app viene sottoscritto anche per il contenuto mime.

Se si pubblica un messaggio "WindowsMime" in un computer che non esegue Windows, il contenuto del messaggio viene formattato automaticamente in base alla tecnologia di prossimità supportata dal computer. Ad esempio, se il computer usa hardware NFC per prossimità, il contenuto del messaggio viene formattato come record Mime NDEF.

Se si pubblica un messaggio "WindowsMime", è sempre necessario includere il tipo mime. Se si esegue la sottoscrizione a un messaggio "WindowsMime", per sottoscrivere tutti i tipi mime, è possibile usare "WindowsMime" senza specificare il tipo mime. Se si sottoscrive un tipo mime specifico e il computer Windows riceve un messaggio formattato per la tecnologia di prossimità supportata dal computer, Windows legge il messaggio formattato e restituisce solo il contenuto mime come contenuto del messaggio. Se si sottoscrive tutti i tipi mime, i primi 256 byte ricevuti sono la stringa di tipo mime ASCII e i byte rimanenti sono il contenuto mime.

Protocollo "Windows:WriteTag"

Si tratta dello stesso protocollo di Windows , ad eccezione del fatto che il contenuto deve essere scritto in un tag statico. Il messaggio non viene trasmesso a alcun dispositivo, ad eccezione di un tag statico scrivibile. Questo protocollo è valido solo per le pubblicazioni. Un esempio di questo protocollo è "Windows:WriteTag.SampleSubtype".

Protocollo "WindowsUri:WriteTag"

Si tratta dello stesso protocollo WindowsUri , ad eccezione del fatto che il contenuto deve essere scritto in un tag statico. Il messaggio non viene trasmesso a alcun dispositivo, ad eccezione di un tag statico scrivibile. Questo protocollo è valido solo per le pubblicazioni.

Protocollo "WindowsMime:WriteTag"

Questo è lo stesso del protocollo WindowsMime , ad eccezione del fatto che il contenuto deve essere scritto in un tag statico. Il messaggio non viene trasmesso a alcun dispositivo, ad eccezione di un tag statico scrivibile. Questo protocollo è valido solo per le pubblicazioni. Un esempio di questo protocollo è "WindowsMime:WriteTag.image/jpeg".

Protocollo "LaunchApp:WriteTag"

Scrive un tag che può essere usato per avviare un'app specifica con parametri di avvio facoltativi. Se si pubblica un messaggio LaunchApp:WriteTag in un tag, il risultato quando tale tag viene toccato a un computer equivale a chiamare il metodo PeerFinder.Start e passare i parametri di avvio. Il messaggio deve essere una stringa con codifica UTF-16LE in cui i valori sono delimitati da caratteri di tabulazioni o valori Null nel formato seguente.

<launch arguments>[tab]<app platform 1>[tab]<app name 1>...[tab]<app platform N>[tab]<app name N>

Gli argomenti di avvio sono facoltativi. Il messaggio può ometterli.

<app platform 1>[tab]<app name 1>...[tab]<app platform N>[tab]<app name N>

È necessario specificare almeno una piattaforma app e il nome dell'app. La piattaforma app per un Windows 8 e un computer successivo è Windows. Il formato dell'ID app di prossimità è <il nome> della famiglia di pacchetti!<ID> app. È possibile ottenere il nome della famiglia di pacchetti dalla proprietà Windows.ApplicationModel.Package.Current.Id.FamilyName . È necessario copiare il valore ID dell'app dall'attributo ID dell'elemento Application nel manifesto del pacchetto per l'app. Un esempio di questo messaggio è "user=default\tWindows\tExample.Proximity.JS_8wekyb3d8bbwe! Proximity.App".

È anche possibile supportare altre piattaforme di app. Per altre informazioni, vedere AlternativeIdentities.

Protocollo "WriteableTag"

Quando si esegue la sottoscrizione per questo protocollo di messaggio, se un tag scrivibile viene portato in prossimità, viene ricevuto un messaggio di prossimità che contiene un int32 (little-endian) che indica la dimensione massima scrivibile del tag. Questo protocollo è valido solo per le sottoscrizioni.

Protocollo "Pairing:Bluetooth"

Windows sottoscrive questo tipo di messaggio per completare un'associazione Bluetooth tramite prossimità. Questo protocollo non deve essere usato nelle app.

Protocollo "NDEF"

Il contenuto del messaggio sono record NDEF formattati correttamente. Il tipo sottostante del contenuto di una pubblicazione tramite NDEF come tipo di messaggio è contenuto nei record NDEF. Una sottoscrizione per il tipo NDEF sottoscrive tutti i messaggi in formato NDEF.

Protocollo "NDEF:ext"

I dati del messaggio sono record NDEF definiti dall'applicazione (valore del campo TNF di 0x04).

Questo protocollo avvierà un'applicazione configurata correttamente per gestire questi eventi se non è già in esecuzione l'applicazione che sottoscrive questi eventi. Per designare un'app per gestire un particolare protocollo usando NDEF:ext, devi aggiungere un tag Protocol al manifesto dell'app per specificare l'URI che avvierà l'app. La sintassi del manifesto appropriata è illustrata nell'esempio seguente.

<Extensions>
  <Extension Category="windows.protocol">
    <Protocol Name="contoso.com+testapp" />
  </Extension>
</Extensions>

Nota

Il formato URI usato nel manifesto dell'app è leggermente diverso dal formato URI usato nel tag NFC, in quanto l'URI del manifesto usa un carattere '+' anziché un carattere ':'. L'URI nel tag NFC che attiva l'app con l'esempio di manifesto precedente è contoso.com:testapp.

Protocollo "NDEF:MIME"

I dati del messaggio sono un messaggio mime NDEF formattato correttamente (valore del campo TNF di 0x02). Ad esempio, "NDEF:MIME.image/jpeg". Questo protocollo si applica solo alle sottoscrizioni, quando si pubblica contenuto NDEF, usare NDEF.

Protocollo "NDEF:URI"

I dati del messaggio sono un messaggio NDEF formattato correttamente di un tipo definito da uno spazio dei nomi URI (valore del campo TNF di 0x03). Questo protocollo si applica solo alle sottoscrizioni, quando si pubblica contenuto NDEF, usare NDEF. Ciò significa che il formato dei dati è identificato dall'URI specificato. Un esempio di questo protocollo è "NDEF:URI.http://contoso.com/sometype".

Protocollo "NDEF:wkt"

I dati del messaggio sono un messaggio NDEF formattato correttamente di un tipo definito dal forum NFC (valore del campo TNF di 0x01). Un esempio di questo tipo è "NDEF:wkt. U" per il tipo noto di URI. Questo protocollo si applica solo alle sottoscrizioni, quando si pubblica contenuto NDEF, usare NDEF.

Protocollo "NDEF:WriteTag"

I dati del messaggio devono essere scritti in un tag statico standard del forum NFC. I dati del messaggio devono essere in un formato NDEF appropriato. Questo protocollo è valido solo per le pubblicazioni.

Protocollo "NDEF:Unknown"

I dati del messaggio sono un messaggio NDEF non tipizzato (valore del campo TNF di 0x05). Questo protocollo si applica solo alle sottoscrizioni, quando si pubblica contenuto NDEF, usare NDEF.

Vedi anche

Si applica a