Partager via


ProximityDevice.PublishBinaryMessage Méthode

Définition

Surcharges

PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler)

Publie un message qui contient des données binaires pour les abonnés du type de message spécifié. Le gestionnaire spécifié est appelé lorsque le message a été transmis.

PublishBinaryMessage(String, IBuffer)

Publie aux abonnés du type de message spécifié un message qui contient des données binaires.

PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler)

Publie un message qui contient des données binaires pour les abonnés du type de message spécifié. Le gestionnaire spécifié est appelé lorsque le message a été transmis.

public:
 virtual long long PublishBinaryMessage(Platform::String ^ messageType, IBuffer ^ message, MessageTransmittedHandler ^ messageTransmittedHandler) = PublishBinaryMessage;
/// [Windows.Foundation.Metadata.Overload("PublishBinaryMessageWithCallback")]
long PublishBinaryMessage(winrt::hstring const& messageType, IBuffer const& message, MessageTransmittedHandler const& messageTransmittedHandler);
[Windows.Foundation.Metadata.Overload("PublishBinaryMessageWithCallback")]
public long PublishBinaryMessage(string messageType, IBuffer message, MessageTransmittedHandler messageTransmittedHandler);
function publishBinaryMessage(messageType, message, messageTransmittedHandler)
Public Function PublishBinaryMessage (messageType As String, message As IBuffer, messageTransmittedHandler As MessageTransmittedHandler) As Long

Paramètres

messageType
String

Platform::String

winrt::hstring

Type de message à remettre aux abonnés.

message
IBuffer

Données de message binaire à remettre aux abonnés.

messageTransmittedHandler
MessageTransmittedHandler

Gestionnaire à appeler lorsque le message a été transmis.

Retours

Int64

long long

long

ID de publication unique pour le message publié.

Attributs

Configuration requise pour Windows

Fonctionnalités de l’application
ID_CAP_PROXIMITY [Windows Phone] proximity ID_CAP_PROXIMITY [Windows Phone]

Exemples

Windows.Networking.Proximity.ProximityDevice proximityDevice;

private void PublishLaunchApp()
{
    proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();

if (proximityDevice != null)
    {
        // The format of the app launch string is: "<args>\tWindows\t<AppName>".
        // The string is tab or null delimited.

        // The <args> string must have at least one character.
        string launchArgs = "user=default";

        // The format of the AppName is: PackageFamilyName!PRAID.
        string praid = "MyAppId"; // The Application Id value from your package.appxmanifest.

        string appName = Windows.ApplicationModel.Package.Current.Id.FamilyName + "!" + praid;

        string launchAppMessage = launchArgs + "\tWindows\t" + appName;

        var dataWriter = new Windows.Storage.Streams.DataWriter();
        dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE;
        dataWriter.WriteString(launchAppMessage);
        var launchAppPubId =
        proximityDevice.PublishBinaryMessage(
            "LaunchApp:WriteTag", dataWriter.DetachBuffer(), 
            proximityWriteTagLaunchAppMessageTransmitCallback);
    }
}

private void proximityWriteTagLaunchAppMessageTransmitCallback(
    Windows.Networking.Proximity.ProximityDevice sender,
    long messageId)
{
    // The LaunchApp message has been successfully written to a tag.
}
   Private proximityDevice As Windows.Networking.Proximity.ProximityDevice

   Private Sub PublishLaunchApp()
       proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault()

   If proximityDevice IsNot Nothing Then
           ' The format of the app launch string is: "<args>" & vbTab & "Windows" vbTab & "<AppName>".
           ' The string is tab or null delimited.

           ' The <args> string must have at least one character.
           Dim launchArgs = "user=default"

           ' The format of the AppName is: PackageFamilyName!PRAID.
           Dim praid = "MyAppId" ' The Application Id value from your package.appxmanifest.

           Dim appName = Windows.ApplicationModel.Package.Current.Id.FamilyName & "!" & praid

           Dim launchAppMessage = launchArgs & vbTab & "Windows" & vbTab & appName

           Dim dataWriter = New Windows.Storage.Streams.DataWriter()
           dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE
           dataWriter.WriteString(launchAppMessage)
           Dim launchAppPubId =
              proximityDevice.PublishBinaryMessage(
                 "LaunchApp:WriteTag", dataWriter.DetachBuffer(),
                 AddressOf proximityWriteTagLaunchAppMessageTransmitCallback)
       End If
   End Sub

   Private Sub proximityWriteTagLaunchAppMessageTransmitCallback(
       sender As Windows.Networking.Proximity.ProximityDevice,
       messageId As Long)
       ' The LaunchApp message has been successfully written to a tag.
   End Sub

Remarques

Vous pouvez publier plusieurs messages du même type de message et chaque publication aura un ID unique associé.

Vous pouvez arrêter la publication d’un message en passant l’ID de publication retourné par la méthode PublishBinaryMessage à la méthode StopPublishingMessage .

Les messages continuent d’être publiés jusqu’à ce que la méthode StopPublishingMessage soit appelée ou que l’objet ProximityDevice soit libéré.

Vous pouvez vous abonner aux messages publiés à l’aide de la méthode SubscribeForMessage .

Vous pouvez utiliser la méthode PublishMessage pour publier un sms sur un ordinateur proche. Vous pouvez utiliser la méthode PublishUriMessage pour publier un URI (Uniform Resource Identifier) sur un ordinateur proche.

Important

Les API de proximité ne fournissent pas d’authentification, de chiffrement ou d’intégrité des messages. N’utilisez pas la proximité pour échanger des informations sensibles sur les utilisateurs, telles que des mots de passe, des données financières, des sms, des e-mails, des photographies ou des numéros d’identification gouvernementaux.

Types de messages

Pour plus d’informations sur les types de messages que vous pouvez publier avec la méthode [PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler), consultez les remarques de la rubrique PublishBinaryMessage(String, IBuffer).

Voir aussi

S’applique à

PublishBinaryMessage(String, IBuffer)

Publie aux abonnés du type de message spécifié un message qui contient des données binaires.

public:
 virtual long long PublishBinaryMessage(Platform::String ^ messageType, IBuffer ^ message) = PublishBinaryMessage;
/// [Windows.Foundation.Metadata.Overload("PublishBinaryMessage")]
long PublishBinaryMessage(winrt::hstring const& messageType, IBuffer const& message);
[Windows.Foundation.Metadata.Overload("PublishBinaryMessage")]
public long PublishBinaryMessage(string messageType, IBuffer message);
function publishBinaryMessage(messageType, message)
Public Function PublishBinaryMessage (messageType As String, message As IBuffer) As Long

Paramètres

messageType
String

Platform::String

winrt::hstring

Type de message à remettre aux abonnés.

message
IBuffer

Données de message binaire à remettre aux abonnés.

Retours

Int64

long long

long

ID de publication unique pour le message publié.

Attributs

Configuration requise pour Windows

Fonctionnalités de l’application
ID_CAP_PROXIMITY [Windows Phone] proximity ID_CAP_PROXIMITY [Windows Phone]

Exemples

Windows.Networking.Proximity.ProximityDevice proximityDevice;

private void PublishLaunchApp()
{
    proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();

if (proximityDevice != null)
    {
        // The format of the app launch string is: "<args>\tWindows\t<AppName>".
        // The string is tab or null delimited.

        // The <args> string must have at least one character.
        string launchArgs = "user=default";

        // The format of the AppName is: PackageFamilyName!PRAID.
        string praid = "MyAppId"; // The Application Id value from your package.appxmanifest.

        string appName = Windows.ApplicationModel.Package.Current.Id.FamilyName + "!" + praid;

        string launchAppMessage = launchArgs + "\tWindows\t" + appName;

        var dataWriter = new Windows.Storage.Streams.DataWriter();
        dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE;
        dataWriter.WriteString(launchAppMessage);
        var launchAppPubId =
        proximityDevice.PublishBinaryMessage(
            "LaunchApp:WriteTag", dataWriter.DetachBuffer());
    }
}
Private proximityDevice As Windows.Networking.Proximity.ProximityDevice

Private Sub PublishLaunchApp()
    proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault()

If proximityDevice IsNot Nothing Then
        ' The format of the app launch string is: "<args>" & vbTab & "Windows" vbTab & "<AppName>".
        ' The string is tab or null delimited.

        ' The <args> string must have at least one character.
        Dim launchArgs = "user=default"

        ' The format of the AppName is: PackageFamilyName!PRAID.
        Dim praid = "MyAppId" ' The Application Id value from your package.appxmanifest.

        Dim appName = Windows.ApplicationModel.Package.Current.Id.FamilyName & "!" & praid

        Dim launchAppMessage = launchArgs & vbTab & "Windows" & vbTab & appName

        Dim dataWriter = New Windows.Storage.Streams.DataWriter()
        dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE
        dataWriter.WriteString(launchAppMessage)
        Dim launchAppPubId =
           proximityDevice.PublishBinaryMessage(
              "LaunchApp:WriteTag", dataWriter.DetachBuffer())
    End If
End Sub

Remarques

Vous pouvez publier plusieurs messages du même type de message, et chaque publication aura un ID unique associé.

Vous pouvez arrêter la publication d’un message en passant l’ID de publication (récupéré par PublishBinaryMessage) à StopPublishingMessage.

Les messages continuent d’être publiés jusqu’à ce que StopPublishingMessage soit appelé ou que l’objet ProximityDevice soit libéré.

Vous pouvez vous abonner aux messages publiés à l’aide de la méthode SubscribeForMessage .

Vous pouvez utiliser la méthode PublishMessage pour publier un sms sur un ordinateur proche. Vous pouvez utiliser la méthode PublishUriMessage pour publier un URI (Uniform Resource Identifier) sur un ordinateur proche.

Important

Les API de proximité ne fournissent pas d’authentification, de chiffrement, ni d’intégrité des messages. N’utilisez pas la proximité pour échanger des informations sensibles à l’utilisateur, telles que des mots de passe, des données financières, des sms, des e-mails, des photographies ou des numéros d’identité gouvernementaux.

Types de messages

Vous utilisez le paramètre messageType pour fournir un identificateur qui identifie de façon unique le message publié et définit également la signification du message et l’audience d’abonné prévue.

Les valeurs de type de message sont des chaînes respectant la casse qui se composent de deux parties : le protocole, suivi d’un point (.), suivi du sous-type.

Le sous-type est une chaîne de caractères où chaque caractère peut être alphanumérique ou n’importe quel caractère URI valide tel que défini par RFC 3986. Voici ces caractères.

- . _ ~ : / ? # [ ] @ ! $ & ' ( ) * + , ; = %

Le sous-type ne peut pas dépasser une longueur de 250 caractères.

Voici les valeurs prises en charge pour la partie protocole du type de message.

Protocole « Windows »

Le message contient des données binaires.

Protocole « WindowsUri »

Les données de message contiennent une chaîne encodée UTF-16LE qui est un URI (Uniform Resource Identifier).|

Windows gère les messages avec un protocole « WindowsUri » en invitant l’utilisateur à afficher l’URI reçu dans l’application configurée par défaut pour ce protocole URI spécifique. Par exemple, http:// URI ouverts dans le navigateur web par défaut. Windows ouvre un URI dans l’application par défaut même si une autre application est également abonnée à « WindowsUri ».

Au lieu d’appeler la méthode PublishBinaryMessage avec ce protocole, utilisez la méthode PublishUriMessage .

Si vous publiez un URI sur un ordinateur qui n’exécute pas Windows, l’URI est automatiquement mis en forme en fonction de la technologie de proximité prise en charge par votre ordinateur. Par exemple, si votre ordinateur utilise du matériel NFC pour la proximité, l’URI est mis en forme en tant qu’enregistrement URI NDEF.

Si vous vous abonnez à un message « WindowsUri » et que votre ordinateur Windows reçoit un message mis en forme pour la technologie de proximité prise en charge par votre ordinateur, Windows lit le message mis en forme et retourne uniquement l’URI comme contenu du message.

Protocole « WindowsMime »

Les données de message sont d’un type mime spécifique. Par exemple, si les données de message sont une image jpeg, le type de message est « WindowsMime.image/jpeg ».

Windows gère les messages « WindowsMime » en invitant l’utilisateur à afficher le contenu MIME qui a été reçu, même si une application est également abonnée au contenu mime.

Si vous publiez un message « WindowsMime » sur un ordinateur qui n’exécute pas Windows, le contenu du message est automatiquement mis en forme en fonction de la technologie de proximité prise en charge par votre ordinateur. Par exemple, si votre ordinateur utilise du matériel NFC pour la proximité, le contenu du message est mis en forme en tant qu’enregistrement MIME NDEF.

Si vous publiez un message « WindowsMime », vous devez toujours inclure le type mime. Si vous vous abonnez à un message « WindowsMime », pour vous abonner à tous les types mime, vous pouvez utiliser « WindowsMime » sans spécifier le type mime. Si vous vous abonnez à un type mime spécifique et que votre ordinateur Windows reçoit un message mis en forme pour la technologie de proximité prise en charge par votre ordinateur, Windows lit le message mis en forme et retourne uniquement le contenu mime comme contenu du message. Si vous vous abonnez à tous les types mime, les 256 premiers octets reçus sont la chaîne de type MIME ASCII, et les octets restants sont le contenu mime.

Protocole « Windows :WriteTag »

Il s’agit de la même chose que le protocole Windows , sauf que le contenu est destiné à être écrit dans une balise statique. Le message n’est transmis à aucun appareil à l’exception d’une balise statique accessible en écriture. Ce protocole n’est valide que pour les publications. Un exemple de ce protocole est « Windows :WriteTag.SampleSubtype ».

Protocole « WindowsUri :WriteTag »

Il s’agit de la même chose que le protocole WindowsUri , sauf que le contenu est destiné à être écrit dans une balise statique. Le message n’est transmis à aucun appareil à l’exception d’une balise statique accessible en écriture. Ce protocole n’est valide que pour les publications.

Protocole « WindowsMime :WriteTag »

Il s’agit de la même chose que le protocole WindowsMime , sauf que le contenu est destiné à être écrit dans une balise statique. Le message n’est transmis à aucun appareil à l’exception d’une balise statique accessible en écriture. Ce protocole n’est valide que pour les publications. Un exemple de ce protocole est « WindowsMime :WriteTag.image/jpeg ».

Protocole « LaunchApp :WriteTag »

Écrit une balise qui peut être utilisée pour lancer une application spécifique avec des paramètres de lancement facultatifs. Si vous publiez un message LaunchApp :WriteTag sur une balise, le résultat lorsque cette balise est utilisée sur un ordinateur est identique à l’appel de la méthode PeerFinder.Start et à la transmission de vos paramètres de lancement. Le message doit être une chaîne encodée en UTF-16LE, où les valeurs sont délimitées par des caractères de tabulation ou des valeurs null sous la forme suivante.

<launch arguments>[tab]<app platform 1>[tab]<app name 1>...[tab]<app platform N>[tab]<app name N>

Les arguments de lancement sont facultatifs. Le message peut les omettre.

<app platform 1>[tab]<app name 1>...[tab]<app platform N>[tab]<app name N>

Vous devez spécifier au moins une plateforme d’application et un nom d’application. La plateforme d’application pour un ordinateur Windows 8 et ultérieur est Windows. Le format de l’ID de l’application de proximité est <le nom> de la famille de packages .<ID de> l’application. Vous pouvez obtenir le nom de la famille de packages à partir de la propriété Windows.ApplicationModel.Package.Current.Id.FamilyName . Vous devez copier la valeur id de l’application à partir de l’attribut Id de l’élément Application dans le manifeste du package de votre application. Un exemple de ce message est « user=default\tWindows\tExample.Proximity.JS_8wekyb3d8bbwe ! Proximity.App ».

Vous pouvez également prendre en charge d’autres plateformes d’application. Pour plus d’informations, consultez AlternateIdentities.

Protocole « WriteableTag »

Lors de l’abonnement à ce protocole de message, si une balise accessible en écriture est introduite à proximité, un message de proximité est reçu qui contient un int32 (little-endian) indiquant la taille maximale accessible en écriture de la balise. Ce protocole n’est valide que pour les abonnements.

Protocole « Appairage :Bluetooth »

Windows s’abonne à ce type de message pour effectuer un couplage Bluetooth à l’aide de la proximité. Ce protocole n’est pas destiné à être utilisé dans les applications.

Protocole « NDEF »

Le contenu du message est un enregistrement NDEF correctement mis en forme. Le type sous-jacent du contenu d’une publication utilisant NDEF comme type de message est contenu dans les enregistrements NDEF. Un abonnement pour le type NDEF s’abonne à tous les messages au format NDEF.

Protocole « NDEF :ext »

Les données de message sont des enregistrements NDEF définis par l’application (valeur de champ TNF de 0x04).

Ce protocole lance une application correctement configurée pour gérer ces événements si aucune application en cours d’exécution ne s’abonne déjà à ces événements. Pour désigner une application pour gérer un protocole particulier à l’aide de NDEF :ext, vous devez ajouter une balise protocole au manifeste de l’application afin de spécifier l’URI qui lancera l’application. La syntaxe de manifeste appropriée est illustrée dans l’exemple suivant.

<Extensions>
  <Extension Category="windows.protocol">
    <Protocol Name="contoso.com+testapp" />
  </Extension>
</Extensions>

Notes

Le format URI utilisé dans le manifeste de l’application diffère légèrement du format URI utilisé sur la balise NFC, en ce que l’URI de manifeste utilise un caractère «+ » plutôt qu’un caractère « : ». L’URI de la balise NFC qui active l’application avec l’exemple de manifeste ci-dessus est contoso.com :testapp.

Protocole « NDEF :MIME »

Les données de message sont un message mime NDEF correctement mis en forme (valeur de champ TNF de 0x02). Par exemple, « NDEF :MIME.image/jpeg ». Ce protocole s’applique uniquement aux abonnements. Lors de la publication de contenu NDEF, utilisez NDEF.

Protocole « NDEF :URI »

Les données de message sont un message NDEF correctement mis en forme d’un type défini par un espace de noms URI (valeur de champ TNF de 0x03). Ce protocole s’applique uniquement aux abonnements. Lors de la publication de contenu NDEF, utilisez NDEF. Cela signifie que le format de données est identifié par l’URI spécifié. Un exemple de ce protocole est « NDEF :URI.http://contoso.com/sometype" ;.

Protocole « NDEF :wkt »

Les données de message sont un message NDEF correctement mis en forme d’un type défini par le forum NFC (valeur de champ TNF de 0x01). Un exemple de ce type est « NDEF :wkt. U » pour le type bien connu d’URI. Ce protocole s’applique uniquement aux abonnements. Lors de la publication de contenu NDEF, utilisez NDEF.

Protocole « NDEF :WriteTag »

Les données de message doivent être écrites dans une balise statique standard du forum NFC. Les données de message doivent être au format NDEF approprié. Ce protocole n’est valide que pour les publications.

Protocole « NDEF :Unknown »

Les données de message sont un message NDEF non typé (valeur de champ TNF de 0x05). Ce protocole s’applique uniquement aux abonnements. Lors de la publication de contenu NDEF, utilisez NDEF.

Voir aussi

S’applique à