ProximityDevice.PublishBinaryMessage メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler) |
バイナリ データを含むメッセージを、指定したメッセージの種類のサブスクライバーに発行します。 指定されたハンドラーは、メッセージが送信されたときに呼び出されます。 |
PublishBinaryMessage(String, IBuffer) |
指定したメッセージ型のサブスクライバーに、バイナリ データを含むメッセージを発行します。 |
PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler)
バイナリ データを含むメッセージを、指定したメッセージの種類のサブスクライバーに発行します。 指定されたハンドラーは、メッセージが送信されたときに呼び出されます。
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
パラメーター
- messageType
-
String
Platform::String
winrt::hstring
サブスクライバーに配信するメッセージの種類。
- message
- IBuffer
サブスクライバーに配信するバイナリ メッセージ データ。
- messageTransmittedHandler
- MessageTransmittedHandler
メッセージが送信されたときに呼び出すハンドラー。
戻り値
パブリッシュされたメッセージの一意のパブリケーション ID。
- 属性
Windows の要件
アプリの機能 |
ID_CAP_PROXIMITY [Windows Phone]
proximity
ID_CAP_PROXIMITY [Windows Phone]
|
例
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
注釈
同じメッセージの種類の複数のメッセージを発行することができ、各パブリケーションには一意の ID が関連付けられます。
PublishBinaryMessage メソッドから返されたパブリケーション ID を StopPublishingMessage メソッドに渡すことで、メッセージの発行を停止できます。
メッセージは、 StopPublishingMessage メソッドが呼び出されるか 、ProximityDevice が解放されるまで発行されます。
SubscribeForMessage メソッドを使用して、パブリッシュされたメッセージをサブスクライブできます。
PublishMessage メソッドを使用して、近接コンピューターにテキスト メッセージを発行できます。 PublishUriMessage メソッドを使用して、近接コンピューターに Uniform Resource Identifier (URI) を発行できます。
重要
近接 API では、認証、暗号化、またはメッセージの整合性は提供されません。 パスワード、財務データ、テキスト メッセージ、電子メール、写真、政府 ID 番号などのユーザーの機密情報を交換するために近接性を使用しないでください。
メッセージ型
[PublishBinaryMessage(String, IBuffer, MessageTransmittedHandler) メソッドを使用して発行できるメッセージの種類の詳細については、 PublishBinaryMessage(String, IBuffer) トピックの解説を参照してください。
こちらもご覧ください
適用対象
PublishBinaryMessage(String, IBuffer)
指定したメッセージ型のサブスクライバーに、バイナリ データを含むメッセージを発行します。
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
パラメーター
- messageType
-
String
Platform::String
winrt::hstring
サブスクライバーに配信するメッセージの種類。
- message
- IBuffer
サブスクライバーに配信するバイナリ メッセージ データ。
戻り値
パブリッシュされたメッセージの一意のパブリケーション ID。
- 属性
Windows の要件
アプリの機能 |
ID_CAP_PROXIMITY [Windows Phone]
proximity
ID_CAP_PROXIMITY [Windows Phone]
|
例
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
注釈
同じメッセージの種類の複数のメッセージを発行でき、各パブリケーションには一意の ID が関連付けられます。
パブリケーション ID (PublishBinaryMessage によって取得) を StopPublishingMessage に渡すことで、メッセージの発行を停止できます。
メッセージは、 StopPublishingMessage が呼び出されるか、 ProximityDevice が解放されるまで発行されます。
SubscribeForMessage メソッドを使用して、パブリッシュされたメッセージをサブスクライブできます。
PublishMessage メソッドを使用して、近接コンピューターにテキスト メッセージを発行できます。 PublishUriMessage メソッドを使用して、近接コンピューターに Uniform Resource Identifier (URI) を発行できます。
重要
近接 API では、認証、暗号化、メッセージの整合性は提供されません。 パスワード、財務データ、テキスト メッセージ、電子メール、写真、政府 ID 番号などのユーザーの機密情報を交換するために近接性を使用しないでください。
メッセージ型
messageType パラメーターを使用して、パブリッシュされたメッセージを一意に識別する識別子を指定し、メッセージの意味と対象サブスクライバーの対象ユーザーも定義します。
メッセージ型の値は、大文字と小文字を区別する文字列で、 プロトコルの後にドット (.) が続き、 サブタイプが続きます。
サブタイプは、RFC 3986 で定義されている英数字または任意の有効な URI 文字を各文字にできる文字の文字列です。 これらの文字を次に示します。
- . _ ~ : / ? # [ ] @ ! $ & ' ( ) * + , ;= %
サブタイプの長さが 250 文字を超えることはできません。
メッセージの種類の プロトコル 部分でサポートされている値を次に示します。
"Windows" プロトコル
メッセージにはバイナリ データが含まれています。
"WindowsUri" プロトコル
メッセージ データには、URI (Uniform Resource Identifier) である UTF-16LE でエンコードされた文字列が含まれています。
Windows は、その特定の URI プロトコルの既定値として構成されているアプリで受信した URI を表示するようにユーザーに求めることで、"WindowsUri" のプロトコルを持つメッセージを処理します。 たとえば、 http:// URI は既定の Web ブラウザーで開きます。 別のアプリも "WindowsUri" にサブスクライブしている場合でも、Windows は既定のアプリで URI を開きます。
このプロトコルで PublishBinaryMessage メソッドを呼び出す代わりに、 PublishUriMessage メソッドを使用します。
Windows を実行していないコンピューターに URI を発行すると、コンピューターでサポートされている近接テクノロジに基づいて URI が自動的に書式設定されます。 たとえば、コンピューターが近くに NFC ハードウェアを使用している場合、URI は NDEF URI レコードとして書式設定されます。
"WindowsUri" メッセージをサブスクライブしていて、お使いのコンピューターがサポートする近接テクノロジ用に書式設定されたメッセージを Windows コンピューターが受信した場合、Windows は書式設定されたメッセージを読み取り、メッセージの内容として URI のみを返します。
"WindowsMime" プロトコル
メッセージ データは特定の MIME の種類です。 たとえば、メッセージ データが jpeg 画像の場合、メッセージの種類は "WindowsMime.image/jpeg" になります。
Windows では、アプリが MIME コンテンツもサブスクライブしている場合でも、受信した MIME コンテンツを表示するようにユーザーに求めることで、"WindowsMime" メッセージを処理します。
Windows を実行していないコンピューターに "WindowsMime" メッセージを発行すると、コンピューターでサポートされている近接テクノロジに基づいてメッセージの内容が自動的に書式設定されます。 たとえば、コンピューターが近くに NFC ハードウェアを使用している場合、メッセージの内容は NDEF Mime レコードとして書式設定されます。
"WindowsMime" メッセージを発行する場合は、常に mime の種類を含める必要があります。 "WindowsMime" メッセージをサブスクライブする場合は、すべての MIME の種類をサブスクライブするために、mime の種類を指定せずに "WindowsMime" を使用できます。 特定の 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 でエンコードされた文字列である必要があります。この文字列の値は、次の形式のタブ文字または null 値で区切られます。
<launch arguments>[tab]<app platform 1>[tab]<app name 1>...[tab]<app platform N>[tab]<app name N>
起動引数は省略可能です。 メッセージではそれらを省略できます。
<app platform 1>[tab]<app name 1>...[tab]<app platform N>[tab]<app name N>
少なくとも 1 つのアプリ プラットフォームとアプリ名を指定する必要があります。 Windows 8以降のコンピューターのアプリ プラットフォームは Windows です。 近接アプリ ID の形式はパッケージ< ファミリ名>です。<アプリ ID>。 パッケージ ファミリ名は 、Windows.ApplicationModel.Package.Current.Id.FamilyName プロパティから取得できます。 アプリのパッケージ マニフェストの Application 要素の Id 属性からアプリ ID の値をコピーする必要があります。 このメッセージの例として、"user=default\tWindows\tExample.Proximity.JS_8wekyb3d8bbwe!Proximity.App"。
他のアプリ プラットフォームをサポートすることもできます。 詳細については、「 AlternateIdentities」を参照してください。
"WriteableTag" プロトコル
このメッセージ プロトコルをサブスクライブするときに、書き込み可能なタグが近接に取り込まれると、タグの最大書き込み可能サイズを示す int32 (リトル エンディアン) を含む近接メッセージが受信されます。 このプロトコルは、サブスクリプションでのみ有効です。
"ペアリング:Bluetooth" プロトコル
Windows は、このメッセージの種類をサブスクライブして、近接通信を使用して Bluetooth ペアリングを完了します。 このプロトコルは、アプリで使用することを意図したものではありません。
"NDEF" プロトコル
メッセージの内容は、正しくフォーマットされた NDEF レコードです。 メッセージの種類として NDEF を使用するパブリケーションのコンテンツの基になる型は、NDEF レコードに含まれています。 NDEF 型のサブスクリプションは、すべての NDEF 形式のメッセージをサブスクライブします。
"NDEF:ext" プロトコル
メッセージ・データは、アプリケーション定義の NDEF レコード (0x04の TNF フィールド値) です。
このプロトコルは、実行中のアプリケーションが既にこれらのイベントをサブスクライブしていない場合に、これらのイベントを処理するように適切に構成されたアプリケーションを起動します。 NDEF:ext を使用して特定のプロトコルを処理するアプリを指定するには、アプリ マニフェストに Protocol タグを追加して、アプリを起動する URI を指定する必要があります。 次の例では、適切なマニフェスト構文を示します。
<Extensions>
<Extension Category="windows.protocol">
<Protocol Name="contoso.com+testapp" />
</Extension>
</Extensions>
Note
アプリ マニフェストで使用される URI 形式は、NFC タグで使用される URI 形式とは若干異なります。マニフェスト URI では、':' 文字ではなく '+' 文字が使用されます。 上記のマニフェスト サンプルでアプリをアクティブにする NFC タグの URI は contoso.com:testapp です。
"NDEF:MIME" プロトコル
メッセージ データは、適切に書式設定された NDEF mime メッセージ (0x02 の TNF フィールド値) です。 たとえば、"NDEF:MIME.image/jpeg" などです。 このプロトコルはサブスクリプションにのみ適用され、NDEF コンテンツを発行する場合は NDEF を使用します。
"NDEF:URI" プロトコル
メッセージ データは、URI 名前空間 (0x03 の TNF フィールド値) によって定義された型の適切に書式設定された NDEF メッセージです。このプロトコルはサブスクリプションにのみ適用され、NDEF コンテンツを発行する場合は NDEF を使用します。 これは、データ形式が指定された URI によって識別されることを意味します。 このプロトコルの例として、"NDEF:URI.http://contoso.com/sometype"" があります。
"NDEF:wkt" プロトコル
メッセージ データは、NFC フォーラム (0x01 の TNF フィールド値) で定義された型の適切に書式設定された NDEF メッセージです。この型の例として、"NDEF:wkt" があります。URI の既知の種類の U" です。 このプロトコルはサブスクリプションにのみ適用され、NDEF コンテンツを発行する場合は NDEF を使用します。
"NDEF:WriteTag" プロトコル
メッセージ データは、NFC フォーラムの標準静的タグに書き込む必要があります。 メッセージ データは、適切な NDEF 形式である必要があります。 このプロトコルはパブリケーションでのみ有効です。
"NDEF:Unknown" プロトコル
メッセージ・データは、型指定されていない NDEF メッセージ (0x05の TNF フィールド値) です。このプロトコルはサブスクリプションにのみ適用され、NDEF コンテンツを発行する場合は NDEF を使用します。