Compartilhar via


ProximityDevice.PublishBinaryMessage Método

Definição

Sobrecargas

PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler)

Publica uma mensagem que contém dados binários para assinantes do tipo de mensagem especificado. O manipulador especificado é chamado quando a mensagem é transmitida.

PublishBinaryMessage(String, IBuffer)

Publica para assinantes da mensagem especificada um tipo de mensagem que contém dados binários.

PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler)

Publica uma mensagem que contém dados binários para assinantes do tipo de mensagem especificado. O manipulador especificado é chamado quando a mensagem é transmitida.

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

O tipo de mensagem a ser entregue aos assinantes.

message
IBuffer

Os dados de mensagem binária a serem entregues aos assinantes.

messageTransmittedHandler
MessageTransmittedHandler

O manipulador a ser chamado quando a mensagem tiver sido transmitida.

Retornos

Int64

long long

long

Uma ID de publicação exclusiva para a mensagem publicada.

Atributos

Requisitos do Windows

Funcionalidades do aplicativo
ID_CAP_PROXIMITY [Windows Phone] proximity ID_CAP_PROXIMITY [Windows Phone]

Exemplos

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

Comentários

Você pode publicar várias mensagens do mesmo tipo de mensagem e cada publicação terá uma ID exclusiva associada a ela.

Você pode parar de publicar uma mensagem passando a ID de publicação retornada pelo método PublishBinaryMessage para o método StopPublishingMessage .

As mensagens continuam a ser publicadas até que o método StopPublishingMessage seja chamado ou o ProximityDevice seja liberado.

Você pode assinar mensagens publicadas usando o método SubscribeForMessage .

Você pode usar o método PublishMessage para publicar uma mensagem de texto em um computador próximo. Você pode usar o método PublishUriMessage para publicar um URI (Uniform Resource Identifier) em um computador próximo.

Importante

As APIs de proximidade não fornecem autenticação, criptografia ou integridade da mensagem. Não use proximidade para trocar informações confidenciais do usuário, como senhas, dados financeiros, mensagens de texto, email, fotografias ou números de ID do governo.

Tipos de mensagem

Para obter detalhes sobre os tipos de mensagens que você pode publicar com o método [PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler), consulte os comentários no tópico PublishBinaryMessage(String, IBuffer).

Confira também

Aplica-se a

PublishBinaryMessage(String, IBuffer)

Publica para assinantes da mensagem especificada digitar uma mensagem que contém dados binários.

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

O tipo de mensagem a ser entregue aos assinantes.

message
IBuffer

Os dados de mensagem binária a serem entregues aos assinantes.

Retornos

Int64

long long

long

Uma ID de publicação exclusiva para a mensagem publicada.

Atributos

Requisitos do Windows

Funcionalidades do aplicativo
ID_CAP_PROXIMITY [Windows Phone] proximity ID_CAP_PROXIMITY [Windows Phone]

Exemplos

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

Comentários

Você pode publicar várias mensagens do mesmo tipo de mensagem e cada publicação terá uma ID exclusiva associada a ela.

Você pode parar de publicar uma mensagem passando a ID da publicação (recuperada por PublishBinaryMessage) para StopPublishingMessage.

As mensagens continuam a ser publicadas até que StopPublishingMessage seja chamado ou o ProximityDevice seja liberado.

Você pode assinar mensagens publicadas usando o método SubscribeForMessage .

Você pode usar o método PublishMessage para publicar uma mensagem de texto em um computador próximo. Você pode usar o método PublishUriMessage para publicar um URI (Uniform Resource Identifier) em um computador próximo.

Importante

As APIs de proximidade não fornecem autenticação, criptografia nem integridade da mensagem. Não use proximidade para trocar informações confidenciais do usuário, como senhas, dados financeiros, mensagens de texto, email, fotografias ou números de ID do governo.

Tipos de mensagem

Você usa o parâmetro messageType para fornecer um identificador que identifica exclusivamente a mensagem publicada e também define o significado da mensagem e do público-alvo do assinante pretendido.

Os valores de tipo de mensagem são cadeias de caracteres que diferenciam maiúsculas de minúsculas que consistem em duas partes: o protocolo, seguido por um ponto (.), seguido pelo subtipo .

O subtipo é uma cadeia de caracteres em que cada caractere pode ser alfanumérico ou qualquer caractere URI válido, conforme definido pelo RFC 3986. Aqui estão esses caracteres.

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

O subtipo não pode exceder um comprimento de 250 caracteres.

Aqui estão os valores com suporte para a parte de protocolo do tipo de mensagem.

Protocolo "Windows"

A mensagem contém dados binários.

Protocolo "WindowsUri"

Os dados da mensagem contêm uma cadeia de caracteres codificada em UTF-16LE que é um URI (Uniform Resource Identifier). |

O Windows manipula mensagens com um protocolo de "WindowsUri" solicitando que o usuário exiba o URI recebido no aplicativo configurado como o padrão para esse protocolo de URI específico. Por exemplo, http:// URIs abertos no navegador da Web padrão. O Windows abre um URI no aplicativo padrão mesmo que outro aplicativo também esteja inscrito em "WindowsUri".

Em vez de chamar o método PublishBinaryMessage com esse protocolo, use o método PublishUriMessage .

Se você publicar um URI em um computador que não esteja executando o Windows, o URI será formatado automaticamente com base na tecnologia de proximidade compatível com o computador. Por exemplo, se o computador usar hardware NFC para proximidade, o URI será formatado como um registro de URI NDEF.

Se você estiver assinando uma mensagem "WindowsUri" e seu computador Windows receber uma mensagem formatada para a tecnologia de proximidade compatível com o computador, o Windows lerá a mensagem formatada e retornará apenas o URI como o conteúdo da mensagem.

Protocolo "WindowsMime"

Os dados da mensagem são de um tipo mime específico. Por exemplo, se os dados da mensagem forem uma imagem jpeg, o tipo de mensagem será "WindowsMime.image/jpeg".

O Windows lida com mensagens "WindowsMime" solicitando que o usuário exiba o conteúdo mime recebido, mesmo que um aplicativo também esteja inscrito no conteúdo mime.

Se você publicar uma mensagem "WindowsMime" em um computador que não esteja executando o Windows, o conteúdo da mensagem será formatado automaticamente com base na tecnologia de proximidade compatível com o computador. Por exemplo, se o computador usar hardware NFC para proximidade, o conteúdo da mensagem será formatado como um registro Mime do NDEF.

Se você estiver publicando uma mensagem "WindowsMime", sempre deverá incluir o tipo mime. Se você estiver assinando uma mensagem "WindowsMime", para assinar todos os tipos de mime, poderá usar "WindowsMime" sem especificar o tipo mime. Se você assinar um tipo mime específico e seu computador Windows receber uma mensagem formatada para a tecnologia de proximidade compatível com o computador, o Windows lerá a mensagem formatada e retornará apenas o conteúdo mime como o conteúdo da mensagem. Se você assinar todos os tipos mime, os primeiros 256 bytes recebidos serão a cadeia de caracteres do tipo mime ASCII e os bytes restantes serão o conteúdo mime.

Protocolo "Windows:WriteTag"

Isso é o mesmo que o protocolo do Windows , exceto que o conteúdo deve ser gravado em uma marca estática. A mensagem não é transmitida para nenhum dispositivo, exceto uma marca estática gravável. Esse protocolo só é válido para publicações. Um exemplo desse protocolo é "Windows:WriteTag.SampleSubtype".

Protocolo "WindowsUri:WriteTag"

Isso é o mesmo que o protocolo WindowsUri , exceto que o conteúdo deve ser gravado em uma marca estática. A mensagem não é transmitida para nenhum dispositivo, exceto uma marca estática gravável. Esse protocolo só é válido para publicações.

Protocolo "WindowsMime:WriteTag"

Isso é o mesmo que o protocolo WindowsMime , exceto que o conteúdo deve ser gravado em uma marca estática. A mensagem não é transmitida para nenhum dispositivo, exceto uma marca estática gravável. Esse protocolo só é válido para publicações. Um exemplo desse protocolo é "WindowsMime:WriteTag.image/jpeg".

Protocolo "LaunchApp:WriteTag"

Grava uma marca que pode ser usada para iniciar um aplicativo específico com parâmetros de inicialização opcionais. Se você publicar uma mensagem LaunchApp:WriteTag em uma marca, o resultado quando essa marca for tocada em um computador será o mesmo que chamar o método PeerFinder.Start e passar os parâmetros de inicialização. A mensagem deve ser uma cadeia de caracteres codificada em UTF-16LE em que os valores são delimitados por caracteres de tabulação ou valores nulos no formulário a seguir.

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

Os argumentos de inicialização são opcionais. A mensagem pode omitê-los.

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

Você deve especificar pelo menos uma plataforma de aplicativo e o nome do aplicativo. A plataforma de aplicativo para um computador Windows 8 e posterior é o Windows. O formato da ID do aplicativo de proximidade é <o nome> da família de pacotes!<ID do> aplicativo. Você pode obter o nome da família de pacotes na propriedade Windows.ApplicationModel.Package.Current.Id.FamilyName . Você deve copiar o valor da ID do aplicativo do atributo ID do elemento Application no manifesto do pacote para seu aplicativo. Um exemplo dessa mensagem é "user=default\tWindows\tExample.Proximity.JS_8wekyb3d8bbwe! Proximity.App".

Você também pode dar suporte a outras plataformas de aplicativo. Para obter mais informações, consulte AlternateIdentities.

Protocolo "WriteableTag"

Ao assinar este protocolo de mensagem, se uma marca gravável for colocada por proximidade, uma mensagem de proximidade será recebida que contém um int32 (little-endian) indicando o tamanho máximo gravável da marca. Esse protocolo só é válido para assinaturas.

Protocolo "Emparelhamento:Bluetooth"

O Windows assina esse tipo de mensagem para concluir um emparelhamento Bluetooth usando proximidade. Esse protocolo não se destina a ser usado em aplicativos.

Protocolo "NDEF"

O conteúdo da mensagem é registros NDEF formatados corretamente. O tipo subjacente do conteúdo de uma publicação usando o NDEF como o tipo de mensagem está contido nos registros NDEF. Uma assinatura do tipo NDEF assina todas as mensagens formatadas do NDEF.

Protocolo "NDEF:ext"

Os dados da mensagem são registros NDEF definidos pelo aplicativo (valor de campo TNF de 0x04).

Esse protocolo iniciará um aplicativo configurado corretamente para lidar com esses eventos se não houver nenhum aplicativo em execução que já esteja assinando esses eventos. Para designar um aplicativo para manipular um protocolo específico usando NDEF:ext, você deve adicionar uma marca Protocol ao manifesto do aplicativo para especificar o URI que iniciará o aplicativo. A sintaxe de manifesto apropriada é demonstrada no exemplo a seguir.

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

Observação

O formato URI usado no manifesto do aplicativo é ligeiramente diferente do formato URI usado na marca NFC, na qual o URI de manifesto usa um caractere '+' em vez de um caractere ':'. O URI na marca NFC que ativa o aplicativo com o exemplo de manifesto acima é contoso.com:testapp.

Protocolo "NDEF:MIME"

Os dados da mensagem são uma mensagem de mímica NDEF formatada corretamente (valor de campo TNF de 0x02). Por exemplo, "NDEF:MIME.image/jpeg". Esse protocolo só se aplica a assinaturas, ao publicar conteúdo NDEF, usar o NDEF.

Protocolo "NDEF:URI"

Os dados da mensagem são uma mensagem NDEF formatada corretamente de um tipo definido por um namespace de URI (valor de campo TNF de 0x03). Esse protocolo só se aplica a assinaturas, ao publicar conteúdo NDEF, usar o NDEF. Isso significa que o formato de dados é identificado pelo URI especificado. Um exemplo desse protocolo é "NDEF:URI.http://contoso.com/sometype".

Protocolo "NDEF:wkt"

Os dados da mensagem são uma mensagem NDEF formatada corretamente de um tipo definido pelo fórum NFC (valor de campo TNF de 0x01). Um exemplo desse tipo é "NDEF:wkt. U" para o tipo conhecido de URI. Esse protocolo só se aplica a assinaturas, ao publicar conteúdo NDEF, usar o NDEF.

Protocolo "NDEF:WriteTag"

Os dados da mensagem devem ser gravados em uma marca estática padrão do fórum NFC. Os dados da mensagem devem estar em um formato NDEF adequado. Esse protocolo só é válido para publicações.

Protocolo "NDEF:Unknown"

Os dados da mensagem são uma mensagem NDEF não tipada (valor de campo TNF de 0x05). Esse protocolo só se aplica a assinaturas, ao publicar conteúdo NDEF, usar o NDEF.

Confira também

Aplica-se a