Condividi tramite


ProximityDevice.PublishMessage Metodo

Definizione

Overload

PublishMessage(String, String)

Pubblica un messaggio ai sottoscrittori del tipo di messaggio specificato.

PublishMessage(String, String, MessageTransmittedHandler)

Pubblica un messaggio ai sottoscrittori del tipo di messaggio specificato. Il gestore specificato viene chiamato quando il messaggio è stato trasmesso.

PublishMessage(String, String)

Pubblica un messaggio ai sottoscrittori del tipo di messaggio specificato.

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

Parametri

messageType
String

Platform::String

winrt::hstring

Tipo di messaggio da recapitare ai sottoscrittori.

message
String

Platform::String

winrt::hstring

Messaggio da recapitare ai sottoscrittori.

Restituisce

Int64

long long

long

ID pubblicazione univoco per il messaggio pubblicato. Passare questo valore al metodo StopPublishingMessage per interrompere la pubblicazione del messaggio.

Attributi

Requisiti Windows

Funzionalità dell'app
ID_CAP_PROXIMITY [Windows Phone] proximity ID_CAP_PROXIMITY [Windows Phone]

Esempio

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

Commenti

È possibile sottoscrivere messaggi pubblicati usando il metodo SubscribeForMessage .

I messaggi continuano a essere pubblicati finché non viene chiamato il metodo StopPublishingMessage o l'oggetto ProximityDevice viene rilasciato.

I messaggi vengono recapitati a tutte le applicazioni che hanno sottoscritto il tipo di messaggio , come indicato dal parametro messageType . I valori del tipo di messaggio sono stringhe con distinzione tra maiuscole e minuscole costituite da due parti: il protocollo e il sottotipo. Il protocollo è innanzitutto seguito da un punto (.) e quindi dal sottotipo. Per il metodo PublishMessage, il protocollo deve sempre essere "Windows.". Il sottotipo è una stringa di caratteri alfanumerici e i caratteri aggiuntivi seguenti: . ( ) + , - : = @ ; $ _ ! * '. Il sottotipo non può superare una lunghezza di 250 caratteri.

Per pubblicare messaggi usando un altro tipo di messaggio, ad esempio "WindowsMime" o "NDEF:WriteTag", è necessario usare il metodo PublishBinaryMessage .

È possibile usare il metodo PublishUriMessage per pubblicare un URI (Uniform Resource Identifier) in un computer di prossimità.

I messaggi vengono convertiti in caratteri UTF-8 prima che vengano trasmessi.

Per le app UWP, le pubblicazioni e le sottoscrizioni sono attive solo se l'app chiamante è in primo piano.

Importante

Le API di prossimità non forniscono l'autenticazione, la crittografia o l'integrità dei messaggi. Non usare la prossimità per scambiare informazioni riservate degli utenti, ad esempio password, dati finanziari, messaggi di testo, messaggi di testo, messaggi di posta elettronica, fotografie o numeri di ID del governo.

Vedi anche

Si applica a

PublishMessage(String, String, MessageTransmittedHandler)

Pubblica un messaggio ai sottoscrittori del tipo di messaggio specificato. Il gestore specificato viene chiamato quando il messaggio è stato trasmesso.

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

Parametri

messageType
String

Platform::String

winrt::hstring

Tipo di messaggio da recapitare ai sottoscrittori.

message
String

Platform::String

winrt::hstring

Messaggio da recapitare ai sottoscrittori.

messageTransmittedHandler
MessageTransmittedHandler

Gestore da chiamare quando il messaggio è stato trasmesso.

Restituisce

Int64

long long

long

ID pubblicazione univoco per il messaggio pubblicato.

Attributi

Requisiti Windows

Funzionalità dell'app
ID_CAP_PROXIMITY [Windows Phone] proximity ID_CAP_PROXIMITY [Windows Phone]

Esempio

    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

Commenti

È possibile sottoscrivere messaggi pubblicati usando il metodo SubscribeForMessage .

I messaggi continuano a essere pubblicati finché non viene chiamato il metodo StopPublishingMessage o l'oggetto ProximityDevice viene rilasciato.

I messaggi vengono recapitati a tutte le applicazioni che hanno sottoscritto il tipo di messaggio , come indicato dal parametro messageType . I valori del tipo di messaggio sono stringhe con distinzione tra maiuscole e minuscole costituite da due parti: il protocollo e il sottotipo. Il protocollo è innanzitutto seguito da un punto (.) e quindi dal sottotipo. Per il metodo PublishMessage , il protocollo deve sempre essere "Windows.". Il sottotipo è una stringa di caratteri alfanumerici e i caratteri aggiuntivi seguenti: . ( ) + , - : = @ ; $ _ ! * '. Il sottotipo non può superare una lunghezza di 250 caratteri.

Per pubblicare messaggi usando un altro tipo di messaggio, ad esempio "WindowsMime" o "NDEF:WriteTag", è necessario usare il metodo PublishBinaryMessage .

È possibile usare il metodo PublishUriMessage per pubblicare un URI (Uniform Resource Identifier) in un computer di prossimità.

I messaggi vengono convertiti in caratteri UTF-8 prima che vengano trasmessi.

Per le app UWP, le pubblicazioni e le sottoscrizioni sono attive solo se l'app chiamante è in primo piano.

Importante

Le API di prossimità non forniscono l'autenticazione, la crittografia o l'integrità dei messaggi. Non usare la prossimità per scambiare informazioni riservate degli utenti, ad esempio password, dati finanziari, messaggi di testo, messaggi di testo, messaggi di posta elettronica, fotografie o numeri di ID del governo.

Vedi anche

Si applica a