公開と登録

Nearby Messages は、付近のデバイスがメッセージのやり取りをするパブリッシュ / サブスクライブ API です データの小さなペイロードです。デバイスがメッセージを公開すると、付近のデバイスは メッセージを受信しますこのガイドでは、Terraform ワークフローの メッセージをパブリッシュし、メッセージをサブスクライブするために、アプリが実装する必要がある やり取りできます

近くにあるデバイスのセットは、2、 Bluetooth。付近のデバイスからトークンを検出すると、 Nearby Messages サーバーにリクエストを送信して、トークンを検証し、 アプリケーションの現在のサブスクリプション セットに応じて配信されます。

アプリは、デバイスの検出に使用するメディアのセットを制御できます。 メディアがトークンのブロードキャストに使用されるかどうか、トークンのスキャンに使用されるかどうか。 デフォルトでは、すべてのメディアでブロードキャストとスキャンが行われます。タスク サブセットやメディアでの検索、ブロードキャストとスキャンのどちらの パブリケーションと Cloud Storage バケットを 。

公開と登録を能動的に行っているときに「Nearby は使用中」と表示される通知 が表示され、Nearby がアクティブであることがユーザーに通知されます。この通知は 1 つ以上のアプリが Nearby を使用しているときにのみ表示され、 Nearby が不要な場合にバッテリーを節約できます。提供するサービス ユーザーに次のオプションを使用できます。

  • Nearby を無効にするにはアプリに移動してください。
  • アプリでの Nearby の使用を強制的に停止する。
  • [Nearby の設定] 画面に移動します。

PublishCallback() を使用できます。 および SubscribeCallback() アプリが Nearby の使用を強制的に停止したケースをリッスンします。この 場合、 onExpired() メソッドがトリガーされます。

Nearby Messages API はバッテリー駆動時間に影響する可能性があるため、 フォアグラウンド アクティビティからのみ使用してください(例外は BLE バックグラウンド サブスクライブ)。

publish() を呼び出す および/または subscribe() Nearby Messages API を使用します。アプリは 対称に unpublish() および unsubscribe()onStop()

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    mMessageListener = new MessageListener() {
        @Override
        public void onFound(Message message) {
            Log.d(TAG, "Found message: " + new String(message.getContent()));
        }

        @Override
        public void onLost(Message message) {
            Log.d(TAG, "Lost sight of message: " + new String(message.getContent()));
        }
    }

    mMessage = new Message("Hello World".getBytes());
}

@Override
public void onStart() {
    super.onStart();
    ...
    Nearby.getMessagesClient(this).publish(mMessage);
    Nearby.getMessagesClient(this).subscribe(mMessageListener);
}

@Override
public void onStop() {
    Nearby.getMessagesClient(this).unpublish(mMessage);
    Nearby.getMessagesClient(this).unsubscribe(mMessageListener);
    ...
    super.onStop();
}

メッセージの公開

メッセージを公開するには、Nearby.getMessagesClient(Activity).publish() を呼び出します。 メッセージのバイト配列を渡します。メッセージは 24 時間以内の間隔で 3 KB - これらのメッセージはより迅速に配信できますが、最大 100 KB までは サポートしています。このサービスは、Google Cloud サービスなど、 保存できます。

必要に応じて PublishOptions.setStrategy() を呼び出すこともできます。 戦略を設定する 使用できます。

次の例は、publish() を呼び出して小さいテキストを送信する方法を示しています。 メッセージ:

private void publish(String message) {
    Log.i(TAG, "Publishing message: " + message);
    mActiveMessage = new Message(message.getBytes());
    Nearby.getMessagesClient(this).publish(mActiveMessage);
}

メッセージの公開を停止する

メッセージの公開を停止するには、unpublish() を呼び出します。少なくとも アプリは onStop() で unpublish を呼び出す必要があります。 メソッドを呼び出します。同じ Message を渡します。 オブジェクト(この例では mActiveMessage)。

次のコード例は、unpublish() の呼び出しを示しています。

private void unpublish() {
    Log.i(TAG, "Unpublishing.");
    if (mActiveMessage != null) {
        Nearby.getMessagesClient(this).unpublish(mActiveMessage);
        mActiveMessage = null;
    }
}

メッセージに登録する

他のデバイスからのメッセージを受信するには、Nearby.getMessagesClient(Activity).subscribe() を呼び出します。以下に合格する必要があります MessageListener サブスクライブされたメッセージを受信できます

必要に応じて SubscribeOptions.setStrategy() を呼び出すこともできます。 戦略を設定する 使用できます。

次の例は、メッセージのサブスクライブを示しています。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    mMessageListener = new MessageListener() {
        @Override
        public void onFound(Message message) {
            Log.d(TAG, "Found message: " + new String(message.getContent()));
        }

        @Override
        public void onLost(Message message) {
            Log.d(TAG, "Lost sight of message: " + new String(message.getContent()));
        }
    }
}

// Subscribe to receive messages.
private void subscribe() {
    Log.i(TAG, "Subscribing.");
    Nearby.getMessagesClient(this).subscribe(mMessageListener, options);
}

配信停止

配信を停止してデバイス メッセージを受信しないようにするには、 Nearby.getMessagesClient(Activity).unsubscribe()。同じ MessageListener サブスクライブに使用されたオブジェクト(この例では mMessageListener)。

次のコード例は登録解除を示しています。

private void unsubscribe() {
    Log.i(TAG, "Unsubscribing.");
    Nearby.getMessagesClient(this).unsubscribe(mMessageListener);
}