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

サブスクライバーに配信するメッセージ。

戻り値

Int64

long long

long

発行されたメッセージの一意のパブリケーション 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)

指定したメッセージの種類のサブスクライバーにメッセージを発行します。 指定したハンドラーは、メッセージが送信されたときに呼び出されます。

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

メッセージが送信されたときに呼び出すハンドラー。

戻り値

Int64

long long

long

発行されたメッセージの一意のパブリケーション 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 番号などのユーザーの機密情報を交換するために近接通信を使用しないでください。

こちらもご覧ください

適用対象