다음을 통해 공유


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 매개 변수로 표시된 대로 메시지 유형을 구독한 모든 애플리케이션에 전달됩니다. 메시지 형식 값은 프로토콜 과 하위 형식의 두 부분으로 구성된 대/소문자를 구분하는 문자열입니다. 프로토콜이 먼저 표시되고 점(.)과 하위 형식이 차례로 표시됩니다. 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 매개 변수로 표시된 대로 메시지 유형을 구독한 모든 애플리케이션에 전달됩니다. 메시지 형식 값은 프로토콜 과 하위 형식의 두 부분으로 구성된 대/소문자를 구분하는 문자열입니다. 프로토콜이 먼저 표시되고 점(.)과 하위 형식이 차례로 표시됩니다. PublishMessage 메서드의 경우 프로토콜은 항상 "Windows"여야 합니다. 하위 형식은 영숫자 문자의 문자열이며, 추가 문자는 입니다. ( ) + , - : = @ ; $ _ ! * '. 하위 형식의 길이는 250자를 초과할 수 없습니다.

"WindowsMime" 또는 "NDEF:WriteTag"와 같은 다른 메시지 형식을 사용하여 메시지를 게시하려면 PublishBinaryMessage 메서드를 사용해야 합니다.

PublishUriMessage 메서드를 사용하여 URI(Uniform Resource Identifier)를 근접 컴퓨터에 게시할 수 있습니다.

메시지는 전송되기 전에 UTF-8 문자로 변환됩니다.

UWP 앱의 경우 호출 앱이 포그라운드에 있는 경우에만 게시 및 구독이 활성화됩니다.

중요

근접 API는 인증, 암호화 또는 메시지 무결성을 제공하지 않습니다. 근접성을 사용하여 암호, 재무 데이터, 문자 메시지, 이메일, 사진 또는 정부 ID 번호와 같은 사용자 중요한 정보를 교환하지 마세요.

추가 정보

적용 대상