信息
您所需的主题如下所示。但此主题未包含在此库中。

ProximityDevice.PublishBinaryMessage(String, IBuffer) | publishBinaryMessage(String, IBuffer) Method

向指定消息类型订户发布包含二进制数据的消息。

语法


var number = proximityDevice.publishBinaryMessage(messageType, message);

参数

messageType

类型: String [JavaScript] | System.String [.NET] | Platform::String [C++]

发送给订户的消息的类型。

message

类型: IBuffer

发送给订户的二进制消息数据。

返回值

类型: Number [JavaScript] | System.Int64 [.NET] | int64 [C++]

发布消息的唯一发布 ID。

备注

您可以发布相同消息类型的各种信息,并且每个发布将具有与其关联的唯一 ID。

可以通过传递由 PublishBinaryMessage 方法返回的释放 ID到 StopPublishingMessage 方法停止消息发布。

消息将继续发布,直到调用了 StopPublishingMessage 方法或者释放了 ProximityDevice

可以使用 SubscribeForMessage 方法描述发布的消息。

可以使用 PublishMessage 方案将文本消息发布给某个接近程度计算机。可以使用 PublishUriMessage 方法将统一资源标识符 (URI) 发布给某个接近程度计算机。

重要事项  

邻近 API 不提供身份验证、加密或消息的完整性。不要使用邻近感应来交换用户敏感信息,如密码、财务数据、文本消息、电子邮件、照片或身份证号码。

消息类型

使用 messageType 参数提供唯一标识发布消息的标识符,也定义消息和计划的订户用户的含义。

消息类型的值是区分大小写的字符串,包含两个部分:协议子类型协议在前,跟着一个句点 (.),然后是子类型。子类型是由字母数字字符和任何如 RFC 3986 所定义的有效 URI 字符:- . _~ : / ? # [ ] @ ! $ & ‘ ( ) * + , ; = % 所组成的字符串。子类型的长度不能超过 250 个字符。下表显示了消息类型的协议部分支持的值。

Windows

该消息包含二进制数据。

WindowsUri

消息数据包含作为网址的 UTF-16LE 编码的字符串。

Windows 通过提示用户查看在处理特定 URI 协议的 Windows 默认应用程序中接收的 URI 将始终都会处理“WindowsUri”,例如 http:// URI 在默认浏览器中打开。Windows 将打开在默认应用程序的 URI,即使另一应用程序还订阅“WindowsUri”。

代替在使用此协议的情况下调用 PublishBinaryMessage 方法,使用 PublishUriMessage 方法。

如果您向未运行 Windows 的计算机发布 Uri,则 Uri 会依据您的计算机支持的接近技术自动进行格式化。例如,如果您的计算机使用针对接近程度的 NFC 硬件,则 URI 的格式设置为 NDEF URI 记录。

如果您正在订阅 "WindowsUri" 消息,并且您的 Windows 计算机接收针对您的计算机支持的接近技术设置格式的消息,则 Windows 读取格式消息并仅返回 Uri 作为消息内容。

WindowsMime

消息数据是特定 mime 类型。例如,如果消息数据是 jpeg 图像,则消息类型为“WindowsMime.image/jpeg”。

Windows 通过提示用户查看接收的笑剧内容始终将总是处理“WindowsMime”消息,即使应用程序也为笑剧目录订阅。

如果您向未运行 Windows 的计算机发布 "WindowsMime" 消息,则消息内容会依据您的计算机支持的接近技术自动进行格式化。例如,如果您的计算机使用针对接近程度的 NFC 硬件,则消息内容的格式设置为 NDEF Mime 记录。

如果您发布 "WindowsMime" 消息,则必须始终包括 mime 类型。如果您正在订阅 "WindowsMime" 消息,则可以使用 "WindowsMime" 而不必指定 mime 类型来订阅所有 mime 类型。如果您订阅某个 mime 类型,并且您的 Windows 计算机接收针对您的计算机支持的接近技术设置格式的消息,则 Windows 读取格式消息并仅返回 mime 内容作为消息内容。如果订阅所有 mime 类型,则接收的前 256 个字节是 ASCII mime 类型字符串,而余下的字节是 mime 内容。

Windows:WriteTag

这与 Windows 协议相同,除了该内容是要写入静态标记的。消息没有传输到除了可编写静态标记的任何计算机上。该协议只对出版物有效。此协议的一个示例为“Windows:WriteTag.SampleSubtype”。

WindowsUri:WriteTag

这与 WindowsUri 协议相同,除此之外,该内容预期写入静态标记。消息没有传输到除了可编写静态标记的任何计算机上。该协议只对出版物有效。

WindowsMime:WriteTag

这与 WindowsMime 协议相同,除此之外,该内容预期写入静态标记。消息没有传输到除了可编写静态标记的任何计算机上。该协议只对出版物有效。此协议的示例为“WindowsMime:WriteTag.image/jpeg”。

LaunchApp:WriteTag

编写可用于生成使用选项生成参数的特定应用程序的标记。如果您向一个标记发布 LaunchApp:WriteTag 消息,当在计算机上敲击该标记时,结果与调用 PeerFinder.Start 方法并传递您的启动参数一样。消息必须为 UTF-16LE 编码的字符串,其中的值由以下形式的标记字符或空值分隔:

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

您必须至少指定一个应用程序平台和应用程序名称。Windows 8 计算机的应用程序平台为 Windows。接近程度应用程序 Id 的格式为 <package family name>!<app Id>。您可以从 Windows.ApplicationModel.Package.Current.Id.FamilyName 属性中获取包系列名称。必须在您应用程序中包的清单复制 Application 元素的 Id 属性中的应用程序 Id 值。 此消息的示例为“user=default\tWindows\tExample.Proximity.JS_8wekyb3d8bbwe!Proximity.App”。

您还可以支持其他应用程序平台。有关更多信息,请参见 AlternateIdentities

WriteableTag

当订阅对于此消息协议时,如果一个可写标记传递到接近程度上,接近程度消息接收包含 int32 的 (little endian) 指示标记的最大可写范围。该协议只对订阅有效。

Pairing:Bluetooth

使用接近程度,Windows 订阅此消息类型完成蓝牙配对。此协议不应在应用程序中使用。

NDEF

消息内容为格式正确的 NDEF 记录。使用 NDEF 作为消息类型的发布的内容基础类型包含在 NDEF 记录中。NDEF 类型的订阅将订阅所有 NDEF 格式的消息。

NDEF:ext

消息数据是应用程序定义的 NDEF 记录(0x04 的 TNF 字段值)。此协议仅适用于订阅,当发布 NDEF 内容时,请使用 NDEF

NDEF:MIME

消息数据是格式正确的 NDEF mime 消息(0x02 的 TNF 字段值)。例如,“NDEF:MIME.image/jpeg”。此协议仅适用于订阅,当发布 NDEF 内容时,请使用 NDEF

NDEF:URI

消息数据为格式正确的 NDEF 消息,其类型由 URI 命名空间定义(0x03 的 TNF 字段值)。此协议仅适用于订阅,那么,当发布 NDEF 内容时,请使用 NDEF。这意味着数据格式由指定的 URI 标识。此协议的示例为“NDEF:URI.http://contoso.com/sometype”。

NDEF:wkt

消息数据为格式正确的 NDEF 消息,其类型由 NFC 论坛定义(0x01 的 TNF 字段值)。此类型的示例是 URI 已知类型“NDEF:wkt.U”。此协议仅适用于订阅,当发布 NDEF 内容时,请使用 NDEF

NDEF:WriteTag

应向 NFC 论坛标准静态标记写入消息数据。消息数据必须使用正确的 NDEF 格式。该协议只对出版物有效。

NDEF:未知

消息数据是一个非类型化 NDEF 消息(0x05 的 TNF 字段值)。此协议仅适用于订阅,那么,当发布 NDEF 内容时,请使用 NDEF

示例


 var proximityDevice;

    function publishLaunchApp() {
 proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();

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

     // The <args> string can be an empty string ("").
     var launchArgs = "user=default";

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

     var appName = Windows.ApplicationModel.Package.current.id.familyName + "!" + praid;

     var 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());
 }
    }


要求

最低支持客户端

Windows 8

最低支持服务器

Windows Server 2012

最低支持电话

Windows Phone 8

命名空间

Windows.Networking.Proximity
Windows::Networking::Proximity [C++]

元数据

Windows.winmd

Capabilities

proximity
ID_CAP_PROXIMITY [Windows Phone]

另请参见

ProximityDevice
PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler)
接近程度和轻击 (JavaScript)
接近程度和轻击 (C#/VB/C++)
示例
接近程度示例

 

 

显示: