ProximityDevice.PublishMessage メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
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
サブスクライバーに配信するメッセージ。
戻り値
発行されたメッセージの一意のパブリケーション ID。 この値を 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 パラメーターで示されます)。 メッセージ型の値は、 プロトコル とサブタイプの 2 つの部分で構成される大文字と小文字を区別する文字列です。 プロトコルは最初に、次にドット (.) が続き、次にサブタイプが続きます。 PublishMessage メソッドの場合、 プロトコル は常に "Windows" である必要があります。 サブタイプは、英数字と追加文字の文字列です。( ) + , - : = @ ;$ _ !* '. サブタイプの長さは 250 文字を超えることはできません。
"WindowsMime" や "NDEF:WriteTag" などの別のメッセージの種類を使用してメッセージを発行するには、 PublishBinaryMessage メソッドを使用する必要があります。
PublishUriMessage メソッドを使用して、Uri (Uniform Resource Identifier) を近接コンピューターに発行できます。
メッセージは、送信される前に UTF-8 文字に変換されます。
UWP アプリの場合、パブリケーションとサブスクリプションは、呼び出し元のアプリがフォアグラウンドにある場合にのみアクティブになります。
重要
近接 API では、認証、暗号化、またはメッセージの整合性は提供されません。 パスワード、財務データ、テキスト メッセージ、電子メール、写真、政府 ID 番号などのユーザーの機密情報を交換するために近接通信を使用しないでください。
こちらもご覧ください
- PublishMessage(String, String, MessageTransmittedHandler)
- PublishBinaryMessage(String, IBuffer)
- PublishUriMessage(Uri)
- StopPublishingMessage(Int64)
- 近接とタップ (C#/VB/C++)
- 近接通信のサンプル
適用対象
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
メッセージが送信されたときに呼び出すハンドラー。
戻り値
発行されたメッセージの一意のパブリケーション ID。
- 属性
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 パラメーターで示されます)。 メッセージ型の値は、 プロトコル とサブタイプの 2 つの部分で構成される大文字と小文字を区別する文字列です。 プロトコルは最初に、次にドット (.) が続き、次にサブタイプが続きます。 PublishMessage メソッドの場合、プロトコルは常に "Windows" である必要があります。 サブタイプは、英数字と追加文字の文字列です。( ) + , - : = @ ;$ _ !* '. サブタイプの長さは 250 文字を超えることはできません。
"WindowsMime" や "NDEF:WriteTag" などの別のメッセージの種類を使用してメッセージを発行するには、 PublishBinaryMessage メソッドを使用する必要があります。
PublishUriMessage メソッドを使用して、Uri (Uniform Resource Identifier) を近接コンピューターに発行できます。
メッセージは、送信される前に UTF-8 文字に変換されます。
UWP アプリの場合、パブリケーションとサブスクリプションは、呼び出し元のアプリがフォアグラウンドにある場合にのみアクティブになります。
重要
近接 API では、認証、暗号化、またはメッセージの整合性は提供されません。 パスワード、財務データ、テキスト メッセージ、電子メール、写真、政府 ID 番号などのユーザーの機密情報を交換するために近接通信を使用しないでください。
こちらもご覧ください
- PublishMessage(String, String)
- PublishBinaryMessage(String, IBuffer)
- PublishUriMessage(Uri)
- StopPublishingMessage(Int64)
- 近接とタップ (C#/VB/C++)
- 近接通信のサンプル