ProximityDevice.PublishMessage Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Sobrecargas
PublishMessage(String, String) |
Publica uma mensagem aos assinantes do tipo de mensagem especificado. |
PublishMessage(String, String, MessageTransmittedHandler) |
Publica uma mensagem aos assinantes do tipo de mensagem especificado. O manipulador especificado é chamado quando a mensagem é transmitida. |
PublishMessage(String, String)
Publica uma mensagem aos assinantes do tipo de mensagem especificado.
public:
virtual long long PublishMessage(Platform::String ^ messageType, Platform::String ^ message) = PublishMessage;
/// [Windows.Foundation.Metadata.Overload("PublishMessage")]
long PublishMessage(winrt::hstring const& messageType, winrt::hstring const& message);
[Windows.Foundation.Metadata.Overload("PublishMessage")]
public long PublishMessage(string messageType, string message);
function publishMessage(messageType, message)
Public Function PublishMessage (messageType As String, message As String) As Long
Parâmetros
- messageType
-
String
Platform::String
winrt::hstring
O tipo de mensagem a ser entregue aos assinantes.
- message
-
String
Platform::String
winrt::hstring
A mensagem a ser entregue aos assinantes.
Retornos
Uma ID de publicação exclusiva para a mensagem publicada. Passe esse valor para o método StopPublishingMessage para parar de publicar a mensagem.
- Atributos
Requisitos do Windows
Funcionalidades do aplicativo |
ID_CAP_PROXIMITY [Windows Phone]
proximity
ID_CAP_PROXIMITY [Windows Phone]
|
Exemplos
Windows.Networking.Proximity.ProximityDevice proximityDevice;
long publishedMessageId = -1;
long subscribedMessageId = -1;
private void initializeProximityDevice()
{
proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();
if (proximityDevice != null)
{
PublishMessageButton.Click += PublishMessage;
SubscribeForMessageButton.Click += SubscribeForMessage;
StopSubscribingForMessageButton.Click += StopSubscribingForMessage;
StopPublishingMessageButton.Click += StopPublishingMessage;
}
else
{
WriteMessageText("Failed to initialized proximity device.\n");
}
}
private void PublishMessage(object sender, RoutedEventArgs e)
{
// Stop publishing the current message.
if (publishedMessageId != -1)
{
proximityDevice.StopPublishingMessage(publishedMessageId);
}
publishedMessageId =
proximityDevice.PublishMessage("Windows.SampleMessage", MessageTextBlock.Text);
}
private void SubscribeForMessage(object sender, RoutedEventArgs e)
{
// Only subscribe for the message one time.
if (subscribedMessageId == -1)
{
subscribedMessageId =
proximityDevice.SubscribeForMessage("Windows.SampleMessage", messageReceived);
}
}
private void messageReceived(
Windows.Networking.Proximity.ProximityDevice device,
Windows.Networking.Proximity.ProximityMessage message)
{
MessageBlock.Text += "Message received: " + message.DataAsString + "\n";
}
private void StopSubscribingForMessage(object sender, RoutedEventArgs e)
{
proximityDevice.StopSubscribingForMessage(subscribedMessageId);
subscribedMessageId = -1;
}
private void StopPublishingMessage(object sender, RoutedEventArgs e)
{
proximityDevice.StopPublishingMessage(publishedMessageId);
publishedMessageId = -1;
}
// Write a message to MessageBlock on the UI thread.
private Windows.UI.Core.CoreDispatcher messageDispatcher = Window.Current.CoreWindow.Dispatcher;
async private void WriteMessageText(string message, bool overwrite = false)
{
await messageDispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
if (overwrite)
MessageBlock.Text = message;
else
MessageBlock.Text += message;
});
}
Private proximityDevice As Windows.Networking.Proximity.ProximityDevice
Private publishedMessageId As Long = -1
Private subscribedMessageId As Long = -1
Private Sub initializeProximityDevice()
proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault()
If proximityDevice IsNot Nothing Then
AddHandler PublishMessageButton.Click, AddressOf PublishMessage
AddHandler SubscribeForMessageButton.Click, AddressOf SubscribeForMessage
AddHandler StopSubscribingForMessageButton.Click, AddressOf StopSubscribingForMessage
AddHandler StopPublishingMessageButton.Click, AddressOf StopPublishingMessage
Else
WriteMessageText("Failed to initialized proximity device." & vbTab)
End If
End Sub
Private Sub PublishMessage(sender As Object, e As RoutedEventArgs)
' Stop publishing the current message.
If publishedMessageId <> -1 Then
proximityDevice.StopPublishingMessage(publishedMessageId)
End If
publishedMessageId =
proximityDevice.PublishMessage("Windows.SampleMessage", MessageTextBlock.Text)
End Sub
Private Sub SubscribeForMessage(sender As Object, e As RoutedEventArgs)
' Only subscribe for the message one time.
If subscribedMessageId = -1 Then
subscribedMessageId =
proximityDevice.SubscribeForMessage("Windows.SampleMessage", AddressOf messageReceived)
End If
End Sub
Private Sub messageReceived(
device As Windows.Networking.Proximity.ProximityDevice,
message As Windows.Networking.Proximity.ProximityMessage)
MessageBlock.Text &= "Message received: " & message.DataAsString & vbTab
End Sub
Private Sub StopSubscribingForMessage(sender As Object, e As RoutedEventArgs)
proximityDevice.StopSubscribingForMessage(subscribedMessageId)
subscribedMessageId = -1
End Sub
Private Sub StopPublishingMessage(sender As Object, e As RoutedEventArgs)
proximityDevice.StopPublishingMessage(publishedMessageId)
publishedMessageId = -1
End Sub
' Write a message to MessageBlock on the UI thread.
Private Async Sub WriteMessageText(message As String, Optional overwrite As Boolean = False)
Await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
Sub()
If overwrite Then
MessageBlock.Text = message
Else
MessageBlock.Text &= message
End If
End Sub)
End Sub
Comentários
Você pode assinar mensagens publicadas usando o método SubscribeForMessage .
As mensagens continuam a ser publicadas até que o método StopPublishingMessage seja chamado ou o objeto ProximityDevice seja liberado.
As mensagens são entregues a todos os aplicativos que se inscreveram no tipo de mensagem (conforme indicado pelo parâmetro messageType ). 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 e o subtipo. O protocolo é primeiro, seguido por um ponto (.) e, em seguida, o subtipo. Para o método PublishMessage, o protocolo deve ser sempre "Windows". O subtipo é uma cadeia de caracteres alfanuméricos e os seguintes caracteres adicionais: . ( ) + , - : = @ ; $ _ ! * '. O subtipo não pode exceder um comprimento de 250 caracteres.
Para publicar mensagens usando outro tipo de mensagem, como "WindowsMime" ou "NDEF:WriteTag", você deve usar o método PublishBinaryMessage .
Você pode usar o método PublishUriMessage para publicar um URI (Uniform Resource Identifier) em um computador próximo.
As mensagens são convertidas em caracteres UTF-8 antes de serem transmitidas.
Para aplicativos UWP, publicações e assinaturas só estarão ativas se o aplicativo de chamada estiver em primeiro plano.
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.
Confira também
- PublishMessage(String, String, MessageTransmittedHandler)
- PublishBinaryMessage(String, IBuffer)
- PublishUriMessage(Uri)
- StopPublishingMessage(Int64)
- Proximidade e toques (C#/VB/C++)
- Exemplo de proximidade
Aplica-se a
PublishMessage(String, String, MessageTransmittedHandler)
Publica uma mensagem aos assinantes do tipo de mensagem especificado. O manipulador especificado é chamado quando a mensagem é transmitida.
public:
virtual long long PublishMessage(Platform::String ^ messageType, Platform::String ^ message, MessageTransmittedHandler ^ messageTransmittedHandler) = PublishMessage;
/// [Windows.Foundation.Metadata.Overload("PublishMessageWithCallback")]
long PublishMessage(winrt::hstring const& messageType, winrt::hstring const& message, MessageTransmittedHandler const& messageTransmittedHandler);
[Windows.Foundation.Metadata.Overload("PublishMessageWithCallback")]
public long PublishMessage(string messageType, string message, MessageTransmittedHandler messageTransmittedHandler);
function publishMessage(messageType, message, messageTransmittedHandler)
Public Function PublishMessage (messageType As String, message As String, messageTransmittedHandler As MessageTransmittedHandler) As Long
Parâmetros
- messageType
-
String
Platform::String
winrt::hstring
O tipo de mensagem a ser entregue aos assinantes.
- message
-
String
Platform::String
winrt::hstring
A mensagem a ser entregue aos assinantes.
- messageTransmittedHandler
- MessageTransmittedHandler
O manipulador a ser chamado quando a mensagem tiver sido transmitida.
Retornos
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;
long publishedMessageId = -1;
long subscribedMessageId = -1;
private void initializeProximityDevice()
{
proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();
if (proximityDevice != null)
{
PublishMessageButton.Click += PublishMessage;
SubscribeForMessageButton.Click += SubscribeForMessage;
StopSubscribingForMessageButton.Click += StopSubscribingForMessage;
StopPublishingMessageButton.Click += StopPublishingMessage;
}
else
{
WriteMessageText("Failed to initialized proximity device.\n");
}
}
private void PublishMessage(object sender, RoutedEventArgs e)
{
// Stop publishing the current message.
if (publishedMessageId != -1)
{
proximityDevice.StopPublishingMessage(publishedMessageId);
}
publishedMessageId =
proximityDevice.PublishMessage("Windows.SampleMessage", MessageTextBlock.Text,
MessagePublished);
}
private void MessagePublished(
Windows.Networking.Proximity.ProximityDevice sender,
long messageId)
{
// The message has been successfully published.
}
private void SubscribeForMessage(object sender, RoutedEventArgs e)
{
// Only subscribe for the message one time.
if (subscribedMessageId == -1)
{
subscribedMessageId =
proximityDevice.SubscribeForMessage("Windows.SampleMessage", messageReceived);
}
}
private void messageReceived(
Windows.Networking.Proximity.ProximityDevice device,
Windows.Networking.Proximity.ProximityMessage message)
{
MessageBlock.Text += "Message received: " + message.DataAsString + "\n";
}
private void StopSubscribingForMessage(object sender, RoutedEventArgs e)
{
proximityDevice.StopSubscribingForMessage(subscribedMessageId);
subscribedMessageId = -1;
}
private void StopPublishingMessage(object sender, RoutedEventArgs e)
{
proximityDevice.StopPublishingMessage(publishedMessageId);
publishedMessageId = -1;
}
// Write a message to MessageBlock on the UI thread.
private Windows.UI.Core.CoreDispatcher messageDispatcher = Window.Current.CoreWindow.Dispatcher;
async private void WriteMessageText(string message, bool overwrite = false)
{
await messageDispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
if (overwrite)
MessageBlock.Text = message;
else
MessageBlock.Text += message;
});
}
Private proximityDevice As Windows.Networking.Proximity.ProximityDevice
Private publishedMessageId As Long = -1
Private subscribedMessageId As Long = -1
Private Sub initializeProximityDevice()
proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault()
If proximityDevice IsNot Nothing Then
AddHandler PublishMessageButton.Click, AddressOf PublishMessage
AddHandler SubscribeForMessageButton.Click, AddressOf SubscribeForMessage
AddHandler StopSubscribingForMessageButton.Click, AddressOf StopSubscribingForMessage
AddHandler StopPublishingMessageButton.Click, AddressOf StopPublishingMessage
Else
WriteMessageText("Failed to initialized proximity device." & vbTab)
End If
End Sub
Private Sub PublishMessage(sender As Object, e As RoutedEventArgs)
' Stop publishing the current message.
If publishedMessageId <> -1 Then
proximityDevice.StopPublishingMessage(publishedMessageId)
End If
publishedMessageId =
proximityDevice.PublishMessage("Windows.SampleMessage", MessageTextBlock.Text,
AddressOf MessagePublished)
End Sub
Private Sub MessagePublished(
sender As Windows.Networking.Proximity.ProximityDevice,
messageId As Long)
' The message has been successfully published.
End Sub
Private Sub SubscribeForMessage(sender As Object, e As RoutedEventArgs)
' Only subscribe for the message one time.
If subscribedMessageId = -1 Then
subscribedMessageId =
proximityDevice.SubscribeForMessage("Windows.SampleMessage", AddressOf messageReceived)
End If
End Sub
Private Sub messageReceived(
device As Windows.Networking.Proximity.ProximityDevice,
message As Windows.Networking.Proximity.ProximityMessage)
MessageBlock.Text &= "Message received: " & message.DataAsString & vbTab
End Sub
Private Sub StopSubscribingForMessage(sender As Object, e As RoutedEventArgs)
proximityDevice.StopSubscribingForMessage(subscribedMessageId)
subscribedMessageId = -1
End Sub
Private Sub StopPublishingMessage(sender As Object, e As RoutedEventArgs)
proximityDevice.StopPublishingMessage(publishedMessageId)
publishedMessageId = -1
End Sub
' Write a message to MessageBlock on the UI thread.
Private Async Sub WriteMessageText(message As String, Optional overwrite As Boolean = False)
Await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
Sub()
If overwrite Then
MessageBlock.Text = message
Else
MessageBlock.Text &= message
End If
End Sub)
End Sub
Comentários
Você pode assinar mensagens publicadas usando o método SubscribeForMessage .
As mensagens continuam a ser publicadas até que o método StopPublishingMessage seja chamado ou o objeto ProximityDevice seja liberado.
As mensagens são entregues a todos os aplicativos que se inscreveram no tipo de mensagem (conforme indicado pelo parâmetro messageType ). 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 e o subtipo. O protocolo é primeiro, seguido por um ponto (.) e, em seguida, o subtipo. Para o método PublishMessage , o protocolo deve ser sempre "Windows". O subtipo é uma cadeia de caracteres alfanuméricos e os seguintes caracteres adicionais: . ( ) + , - : = @ ; $ _ ! * '. O subtipo não pode exceder um comprimento de 250 caracteres.
Para publicar mensagens usando outro tipo de mensagem, como "WindowsMime" ou "NDEF:WriteTag", você deve usar o método PublishBinaryMessage .
Você pode usar o método PublishUriMessage para publicar um URI (Uniform Resource Identifier) em um computador próximo.
As mensagens são convertidas em caracteres UTF-8 antes de serem transmitidas.
Para aplicativos UWP, publicações e assinaturas só estarão ativas se o aplicativo de chamada estiver em primeiro plano.
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.
Confira também
- PublishMessage(String, String)
- PublishBinaryMessage(String, IBuffer)
- PublishUriMessage(Uri)
- StopPublishingMessage(Int64)
- Proximidade e toques (C#/VB/C++)
- Exemplo de proximidade