ProximityDevice.PublishMessage Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
PublishMessage(String, String) |
Публикует сообщение подписчикам указанного типа сообщения. |
PublishMessage(String, String, MessageTransmittedHandler) |
Публикует сообщение подписчикам указанного типа сообщения. Указанный обработчик вызывается при передаче сообщения. |
PublishMessage(String, String)
Публикует сообщение подписчикам указанного типа сообщения.
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
Параметры
- messageType
-
String
Platform::String
winrt::hstring
Тип сообщения для доставки подписчикам.
- message
-
String
Platform::String
winrt::hstring
Сообщение для доставки подписчикам.
Возвращаемое значение
Уникальный идентификатор публикации для опубликованного сообщения. Передайте это значение в метод StopPublishingMessage , чтобы остановить публикацию сообщения.
- Атрибуты
Требования к Windows
Возможности приложения |
ID_CAP_PROXIMITY [Windows Phone]
proximity
ID_CAP_PROXIMITY [Windows Phone]
|
Примеры
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
Комментарии
Вы можете подписаться на опубликованные сообщения с помощью метода SubscribeForMessage .
Сообщения продолжают публиковаться до тех пор, пока не будет вызван метод StopPublishingMessage или не будет освобожден объект ProximityDevice .
Сообщения доставляются всем приложениям, которые подписаны на тип сообщения (как указано параметром messageType ). Значения типов сообщений — это строки с учетом регистра, состоящие из двух частей: протокола и подтипа. Сначала используется протокол , за которым следует точка (.), а затем подтип. Для метода PublishMessage протокол всегда должен быть "Windows". Подтип представляет собой строку буквенно-цифровых символов и следующих дополнительных символов: . ( ) + , - : = @ ; $ _ ! * '. Длина подтипа не может превышать 250 символов.
Чтобы опубликовать сообщения с помощью другого типа сообщений, например "WindowsMime" или "NDEF:WriteTag", необходимо использовать метод PublishBinaryMessage .
Метод PublishUriMessage можно использовать для публикации универсального кода ресурса (URI) на прокси-компьютере.
Перед передачей сообщения преобразуются в символы UTF-8.
Для приложений UWP публикации и подписки активны, только если вызывающее приложение находится на переднем плане.
Важно!
API близкого взаимодействия не обеспечивают проверку подлинности, шифрование или целостность сообщений. Не используйте близкое расположение для обмена конфиденциальными сведениями пользователей, такими как пароли, финансовые данные, текстовые сообщения, электронные письма, фотографии или номера идентификаторов государственных организаций.
См. также раздел
- PublishMessage(String, String, MessageTransmittedHandler)
- PublishBinaryMessage(String, IBuffer)
- PublishUriMessage(Uri)
- StopPublishingMessage(Int64)
- Близкое взаимодействие и касание (C#/VB/C++)
- Образец Proximity
Применяется к
PublishMessage(String, String, MessageTransmittedHandler)
Публикует сообщение подписчикам указанного типа сообщения. Указанный обработчик вызывается при передаче сообщения.
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
Параметры
- messageType
-
String
Platform::String
winrt::hstring
Тип сообщения для доставки подписчикам.
- message
-
String
Platform::String
winrt::hstring
Сообщение для доставки подписчикам.
- messageTransmittedHandler
- MessageTransmittedHandler
Обработчик, вызываемый при передаче сообщения.
Возвращаемое значение
Уникальный идентификатор публикации для опубликованного сообщения.
- Атрибуты
Требования к Windows
Возможности приложения |
ID_CAP_PROXIMITY [Windows Phone]
proximity
ID_CAP_PROXIMITY [Windows Phone]
|
Примеры
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
Комментарии
Вы можете подписаться на опубликованные сообщения с помощью метода SubscribeForMessage .
Сообщения продолжают публиковаться до тех пор, пока не будет вызван метод StopPublishingMessage или не будет освобожден объект ProximityDevice .
Сообщения доставляются всем приложениям, которые подписаны на тип сообщения (как указано параметром messageType ). Значения типов сообщений — это строки с учетом регистра, состоящие из двух частей: протокола и подтипа. Сначала используется протокол , за которым следует точка (.), а затем подтип. Для метода PublishMessageпротокол всегда должен быть "Windows". Подтип представляет собой строку буквенно-цифровых символов и следующих дополнительных символов: . ( ) + , - : = @ ; $ _ ! * '. Длина подтипа не может превышать 250 символов.
Чтобы опубликовать сообщения с помощью другого типа сообщений, например "WindowsMime" или "NDEF:WriteTag", необходимо использовать метод PublishBinaryMessage .
Метод PublishUriMessage можно использовать для публикации универсального кода ресурса (URI) на прокси-компьютере.
Перед передачей сообщения преобразуются в символы UTF-8.
Для приложений UWP публикации и подписки активны, только если вызывающее приложение находится на переднем плане.
Важно!
API близкого взаимодействия не обеспечивают проверку подлинности, шифрование или целостность сообщений. Не используйте близкое расположение для обмена конфиденциальными сведениями пользователей, такими как пароли, финансовые данные, текстовые сообщения, электронные письма, фотографии или номера идентификаторов государственных организаций.
См. также раздел
- PublishMessage(String, String)
- PublishBinaryMessage(String, IBuffer)
- PublishUriMessage(Uri)
- StopPublishingMessage(Int64)
- Близкое взаимодействие и касание (C#/VB/C++)
- Образец Proximity