Compartir a través de


ProximityDevice.PublishBinaryMessage Método

Definición

Sobrecargas

PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler)

Publica un mensaje que contiene datos binarios a los suscriptores del tipo de mensaje especificado. Se llama al controlador especificado cuando se ha transmitido el mensaje.

PublishBinaryMessage(String, IBuffer)

Publica en los suscriptores del tipo de mensaje especificado un mensaje que contiene datos binarios.

PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler)

Publica un mensaje que contiene datos binarios a los suscriptores del tipo de mensaje especificado. Se llama al controlador especificado cuando se ha transmitido el mensaje.

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

Parámetros

messageType
String

Platform::String

winrt::hstring

Tipo de mensaje que se va a entregar a los suscriptores.

message
IBuffer

Datos de mensajes binarios que se van a entregar a los suscriptores.

messageTransmittedHandler
MessageTransmittedHandler

Controlador al que se va a llamar cuando se ha transmitido el mensaje.

Devoluciones

Int64

long long

long

Identificador de publicación único para el mensaje publicado.

Atributos

Requisitos de Windows

Características de aplicaciones
ID_CAP_PROXIMITY [Windows Phone] proximity ID_CAP_PROXIMITY [Windows Phone]

Ejemplos

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

Comentarios

Puede publicar varios mensajes del mismo tipo de mensaje y cada publicación tendrá un identificador único asociado.

Puede dejar de publicar un mensaje pasando el identificador de publicación devuelto por el método PublishBinaryMessage al método StopPublishingMessage .

Los mensajes se seguirán publicando hasta que se llame al método StopPublishingMessage o se libere ProximityDevice .

Puede suscribirse a mensajes publicados mediante el método SubscribeForMessage .

Puede usar el método PublishMessage para publicar un mensaje de texto en un equipo proxy. Puede usar el método PublishUriMessage para publicar un identificador uniforme de recursos (URI) en un equipo proxy.

Importante

Las API de proximidad no proporcionan autenticación, cifrado ni integridad de mensajes. No use la proximidad para intercambiar información confidencial del usuario, como contraseñas, datos financieros, mensajes de texto, correo electrónico, fotografías o números de identificación gubernamentales.

Tipos de mensajes

Para obtener más información sobre los tipos de mensajes que puede publicar con el método [PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler), vea los comentarios en el tema PublishBinaryMessage(String, IBuffer).

Consulte también

Se aplica a

PublishBinaryMessage(String, IBuffer)

Publica en los suscriptores del tipo de mensaje especificado un mensaje que contiene datos binarios.

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

Parámetros

messageType
String

Platform::String

winrt::hstring

Tipo de mensaje que se va a entregar a los suscriptores.

message
IBuffer

Datos de mensajes binarios que se van a entregar a los suscriptores.

Devoluciones

Int64

long long

long

Identificador de publicación único para el mensaje publicado.

Atributos

Requisitos de Windows

Características de aplicaciones
ID_CAP_PROXIMITY [Windows Phone] proximity ID_CAP_PROXIMITY [Windows Phone]

Ejemplos

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

Comentarios

Puede publicar varios mensajes del mismo tipo de mensaje y cada publicación tendrá un identificador único asociado.

Puede dejar de publicar un mensaje pasando el identificador de publicación (recuperado por PublishBinaryMessage) a StopPublishingMessage.

Los mensajes se siguen publicando hasta que se llama a StopPublishingMessage o se libera ProximityDevice .

Puede suscribirse a mensajes publicados mediante el método SubscribeForMessage .

Puede usar el método PublishMessage para publicar un mensaje de texto en un equipo proxy. Puede usar el método PublishUriMessage para publicar un identificador uniforme de recursos (URI) en un equipo proxy.

Importante

Las API de proximidad no proporcionan autenticación, cifrado ni integridad de mensajes. No use la proximidad para intercambiar información confidencial del usuario, como contraseñas, datos financieros, mensajes de texto, correo electrónico, fotografías o números de identificación gubernamentales.

Tipos de mensajes

El parámetro messageType se usa para proporcionar un identificador que identifica de forma única el mensaje publicado y también define el significado del mensaje y la audiencia de suscriptor prevista.

Los valores de tipo de mensaje son cadenas que distinguen mayúsculas de minúsculas que constan de dos partes: el protocolo, seguido de un punto (.), seguido del subtipo .

El subtipo es una cadena de caracteres donde cada carácter puede ser alfanumérico o cualquier carácter URI válido según lo definido por RFC 3986. Estos son esos caracteres.

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

El subtipo no puede superar una longitud de 250 caracteres.

Estos son los valores admitidos para la parte de protocolo del tipo de mensaje.

Protocolo "Windows"

El mensaje contiene datos binarios.

Protocolo "WindowsUri"

Los datos del mensaje contienen una cadena codificada UTF-16LE que es un identificador uniforme de recursos (URI).|

Windows controla los mensajes con un protocolo de "WindowsUri" al pedir al usuario que vea el URI recibido en la aplicación que está configurada como el valor predeterminado para ese protocolo de URI específico. Por ejemplo, http:// URI abiertos en el explorador web predeterminado. Windows abre un URI en la aplicación predeterminada aunque otra aplicación también esté suscrita a "WindowsUri".

En lugar de llamar al método PublishBinaryMessage con este protocolo, use el método PublishUriMessage .

Si publica un URI en un equipo que no ejecuta Windows, el URI se da formato automáticamente en función de la tecnología de proximidad que admita el equipo. Por ejemplo, si el equipo usa hardware NFC para la proximidad, el URI tiene el formato de registro URI de NDEF.

Si va a suscribirse a un mensaje "WindowsUri" y el equipo Windows recibe un mensaje con formato para la tecnología de proximidad que admite el equipo, Windows lee el mensaje con formato y devuelve solo el URI como contenido del mensaje.

Protocolo "WindowsMime"

Los datos del mensaje son de un tipo mime específico. Por ejemplo, si los datos del mensaje son una imagen jpeg, el tipo de mensaje es "WindowsMime.image/jpeg".

Windows controla los mensajes "WindowsMime" al pedir al usuario que vea el contenido mime que se recibió, incluso si una aplicación también está suscrita al contenido mime.

Si publica un mensaje "WindowsMime" en un equipo que no ejecuta Windows, el contenido del mensaje se da formato automáticamente en función de la tecnología de proximidad que admite el equipo. Por ejemplo, si el equipo usa hardware NFC para la proximidad, el contenido del mensaje tiene el formato de registro Mime de NDEF.

Si va a publicar un mensaje "WindowsMime", siempre debe incluir el tipo mime. Si vas a suscribirte a un mensaje "WindowsMime", para suscribirte a todos los tipos mime, puedes usar "WindowsMime" sin especificar el tipo mime. Si se suscribe a un tipo mime específico y el equipo Windows recibe un mensaje con formato para la tecnología de proximidad que admite el equipo, Windows lee el mensaje con formato y devuelve solo el contenido mime como contenido del mensaje. Si se suscribe a todos los tipos mime, los primeros 256 bytes recibidos son la cadena de tipo mime ASCII y los bytes restantes son el contenido mime.

Protocolo "Windows:WriteTag"

Esto es lo mismo que el protocolo de Windows , salvo que el contenido está pensado para escribirse en una etiqueta estática. El mensaje no se transmite a ningún dispositivo, excepto una etiqueta estática grabable. Este protocolo solo es válido para las publicaciones. Un ejemplo de este protocolo es "Windows:WriteTag.SampleSubtype".

Protocolo "WindowsUri:WriteTag"

Es lo mismo que el protocolo WindowsUri , salvo que el contenido está pensado para escribirse en una etiqueta estática. El mensaje no se transmite a ningún dispositivo, excepto una etiqueta estática grabable. Este protocolo solo es válido para las publicaciones.

Protocolo "WindowsMime:WriteTag"

Es lo mismo que el protocolo WindowsMime , salvo que el contenido está pensado para escribirse en una etiqueta estática. El mensaje no se transmite a ningún dispositivo, excepto una etiqueta estática grabable. Este protocolo solo es válido para las publicaciones. Un ejemplo de este protocolo es "WindowsMime:WriteTag.image/jpeg".

Protocolo "LaunchApp:WriteTag"

Escribe una etiqueta que se puede usar para iniciar una aplicación específica con parámetros de inicio opcionales. Si publica un mensaje LaunchApp:WriteTag en una etiqueta, el resultado cuando se pulsa esa etiqueta en un equipo es el mismo que llamar al método PeerFinder.Start y pasar los parámetros de inicio. El mensaje debe ser una cadena codificada con UTF-16LE en la que los valores se delimitan por caracteres de tabulación o valores NULL en el siguiente formulario.

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

Los argumentos launch son opcionales. El mensaje puede omitirlos.

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

Debe especificar al menos una plataforma de aplicación y un nombre de aplicación. La plataforma de aplicaciones de un equipo Windows 8 y versiones posteriores es Windows. El formato del identificador de aplicación de proximidad es <el nombre> de familia del paquete.<id. de> aplicación. Puedes obtener el nombre de familia del paquete de la propiedad Windows.ApplicationModel.Package.Current.Id.FamilyName . Debe copiar el valor de id. de aplicación del atributo Id del elemento Application en el manifiesto del paquete de la aplicación. Un ejemplo de este mensaje es "user=default\tWindows\tExample.Proximity.JS_8wekyb3d8bbwe! Proximity.App".

También puede admitir otras plataformas de aplicaciones. Para obtener más información, vea AlternateIdentities.

Protocolo "WriteableTag"

Al suscribirse a este protocolo de mensaje, si una etiqueta grabable se acerca, se recibe un mensaje de proximidad que contiene un valor int32 (little-endian) que indica el tamaño máximo de escritura de la etiqueta. Este protocolo solo es válido para las suscripciones.

Protocolo "Emparejamiento:Bluetooth"

Windows se suscribe a este tipo de mensaje para completar un emparejamiento bluetooth con proximidad. Este protocolo no está pensado para usarse en aplicaciones.

Protocolo "NDEF"

El contenido del mensaje tiene el formato correcto de los registros NDEF. El tipo subyacente del contenido de una publicación mediante NDEF como tipo de mensaje se encuentra en los registros NDEF. Una suscripción para el tipo NDEF se suscribe a todos los mensajes con formato NDEF.

Protocolo "NDEF:ext"

Los datos del mensaje son registros NDEF definidos por la aplicación (valor de campo TNF de 0x04).

Este protocolo iniciará una aplicación configurada correctamente para controlar estos eventos si no hay ninguna aplicación en ejecución que ya se suscriba a estos eventos. Para designar una aplicación para controlar un protocolo determinado mediante NDEF:ext, debe agregar una etiqueta Protocol al manifiesto de la aplicación para especificar el URI que iniciará la aplicación. En el ejemplo siguiente se muestra la sintaxis de manifiesto adecuada.

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

Nota:

El formato de URI usado en el manifiesto de la aplicación es ligeramente diferente del formato de URI usado en la etiqueta NFC, en que el URI del manifiesto usa un carácter "+" en lugar de un carácter ":". El URI de la etiqueta NFC que activa la aplicación con el ejemplo de manifiesto anterior es contoso.com:testapp.

Protocolo "NDEF:MIME"

Los datos del mensaje son un mensaje mime NDEF con el formato correcto (valor de campo TNF de 0x02). Por ejemplo, "NDEF:MIME.image/jpeg". Este protocolo solo se aplica a las suscripciones, al publicar contenido de NDEF, use NDEF.

Protocolo "NDEF:URI"

Los datos del mensaje son un mensaje NDEF con formato correcto de un tipo definido por un espacio de nombres de URI (valor de campo TNF de 0x03). Este protocolo solo se aplica a las suscripciones, al publicar contenido de NDEF, use NDEF. Esto significa que el formato de datos se identifica mediante el URI especificado. Un ejemplo de este protocolo es "NDEF:URI.http://contoso.com/sometype".

Protocolo "NDEF:wkt"

Los datos del mensaje son un mensaje NDEF con formato correcto de un tipo definido por el foro NFC (valor de campo TNF de 0x01). Un ejemplo de este tipo es "NDEF:wkt. U" para el tipo conocido de URI. Este protocolo solo se aplica a las suscripciones, al publicar contenido de NDEF, use NDEF.

Protocolo "NDEF:WriteTag"

Los datos del mensaje deben escribirse en una etiqueta estática estándar del foro NFC. Los datos del mensaje deben tener un formato NDEF adecuado. Este protocolo solo es válido para las publicaciones.

Protocolo "NDEF:Unknown"

Los datos del mensaje son un mensaje NDEF sin tipo (valor de campo TNF de 0x05). Este protocolo solo se aplica a las suscripciones, al publicar contenido de NDEF, use NDEF.

Consulte también

Se aplica a