Freigeben über


ProximityDevice.PublishMessage Methode

Definition

Überlädt

PublishMessage(String, String)

Veröffentlicht eine Nachricht für Abonnenten des angegebenen Nachrichtentyps.

PublishMessage(String, String, MessageTransmittedHandler)

Veröffentlicht eine Nachricht für Abonnenten des angegebenen Nachrichtentyps. Der angegebene Handler wird aufgerufen, wenn die Nachricht übertragen wurde.

PublishMessage(String, String)

Veröffentlicht eine Nachricht für Abonnenten des angegebenen Nachrichtentyps.

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

Parameter

messageType
String

Platform::String

winrt::hstring

Der Typ der Nachricht, die an Abonnenten übermittelt werden soll.

message
String

Platform::String

winrt::hstring

Die Nachricht, die an Abonnenten übermittelt werden soll.

Gibt zurück

Int64

long long

long

Eine eindeutige Veröffentlichungs-ID für die veröffentlichte Nachricht. Übergeben Sie diesen Wert an die StopPublishingMessage-Methode , um die Veröffentlichung der Nachricht zu beenden.

Attribute

Windows-Anforderungen

App-Funktionen
ID_CAP_PROXIMITY [Windows Phone] proximity ID_CAP_PROXIMITY [Windows Phone]

Beispiele

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

Hinweise

Sie können veröffentlichte Nachrichten abonnieren, indem Sie die SubscribeForMessage-Methode verwenden.

Nachrichten werden weiterhin veröffentlicht, bis die StopPublishingMessage-Methode aufgerufen oder das ProximityDevice-Objekt freigegeben wird.

Nachrichten werden an alle Anwendungen übermittelt, die den Nachrichtentyp abonniert haben (wie durch den messageType-Parameter angegeben). Nachrichtentypwerte sind Zeichenfolgen, bei denen die Groß-/Kleinschreibung beachtet wird, die aus zwei Teilen bestehen: dem Protokoll und dem Untertyp. Das Protokoll ist zuerst, gefolgt von einem Punkt (.) und dann dem Untertyp. Für die PublishMessage-Methode muss das Protokoll immer "Windows" sein. Der Untertyp ist eine Zeichenfolge aus alphanumerischen Zeichen und den folgenden zusätzlichen Zeichen: . ( ) + , - : = @ ; $ _ ! * '. Der Untertyp darf eine Länge von 250 Zeichen nicht überschreiten.

Um Nachrichten mit einem anderen Nachrichtentyp wie "WindowsMime." oder "NDEF:WriteTag" zu veröffentlichen, müssen Sie die PublishBinaryMessage-Methode verwenden.

Sie können die PublishUriMessage-Methode verwenden, um einen URI (Uniform Resource Identifier) auf einem benachbarten Computer zu veröffentlichen.

Nachrichten werden in UTF-8-Zeichen konvertiert, bevor sie übertragen werden.

Für UWP-Apps sind Veröffentlichungen und Abonnements nur aktiv, wenn sich die aufrufende App im Vordergrund befindet.

Wichtig

Die Näherungs-APIs bieten keine Authentifizierung, Verschlüsselung oder Nachrichtenintegrität. Verwenden Sie die Nähe nicht, um vertrauliche Benutzerinformationen wie Kennwörter, Finanzdaten, SMS, E-Mails, Fotos oder Behörden-ID-Nummern auszutauschen.

Weitere Informationen

Gilt für:

PublishMessage(String, String, MessageTransmittedHandler)

Veröffentlicht eine Nachricht für Abonnenten des angegebenen Nachrichtentyps. Der angegebene Handler wird aufgerufen, wenn die Nachricht übertragen wurde.

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

Parameter

messageType
String

Platform::String

winrt::hstring

Der Typ der Nachricht, die an Abonnenten übermittelt werden soll.

message
String

Platform::String

winrt::hstring

Die Nachricht, die an Abonnenten übermittelt werden soll.

messageTransmittedHandler
MessageTransmittedHandler

Der Handler, der aufgerufen werden soll, wenn die Nachricht übertragen wurde.

Gibt zurück

Int64

long long

long

Eine eindeutige Veröffentlichungs-ID für die veröffentlichte Nachricht.

Attribute

Windows-Anforderungen

App-Funktionen
ID_CAP_PROXIMITY [Windows Phone] proximity ID_CAP_PROXIMITY [Windows Phone]

Beispiele

    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

Hinweise

Sie können veröffentlichte Nachrichten abonnieren, indem Sie die SubscribeForMessage-Methode verwenden.

Nachrichten werden weiterhin veröffentlicht, bis die StopPublishingMessage-Methode aufgerufen oder das ProximityDevice-Objekt freigegeben wird.

Nachrichten werden an alle Anwendungen übermittelt, die den Nachrichtentyp abonniert haben (wie durch den messageType-Parameter angegeben). Nachrichtentypwerte sind Zeichenfolgen, bei denen die Groß-/Kleinschreibung beachtet wird, die aus zwei Teilen bestehen: dem Protokoll und dem Untertyp. Das Protokoll ist zuerst, gefolgt von einem Punkt (.) und dann dem Untertyp. Für die PublishMessage-Methode muss das Protokoll immer "Windows" sein. Der Untertyp ist eine Zeichenfolge aus alphanumerischen Zeichen und den folgenden zusätzlichen Zeichen: . ( ) + , - : = @ ; $ _ ! * '. Der Untertyp darf eine Länge von 250 Zeichen nicht überschreiten.

Um Nachrichten mit einem anderen Nachrichtentyp wie "WindowsMime." oder "NDEF:WriteTag" zu veröffentlichen, müssen Sie die PublishBinaryMessage-Methode verwenden.

Sie können die PublishUriMessage-Methode verwenden, um einen URI (Uniform Resource Identifier) auf einem benachbarten Computer zu veröffentlichen.

Nachrichten werden in UTF-8-Zeichen konvertiert, bevor sie übertragen werden.

Für UWP-Apps sind Veröffentlichungen und Abonnements nur aktiv, wenn sich die aufrufende App im Vordergrund befindet.

Wichtig

Die Näherungs-APIs bieten keine Authentifizierung, Verschlüsselung oder Nachrichtenintegrität. Verwenden Sie die Nähe nicht, um vertrauliche Benutzerinformationen wie Kennwörter, Finanzdaten, SMS, E-Mails, Fotos oder Behörden-ID-Nummern auszutauschen.

Weitere Informationen

Gilt für: