宣伝と発見

ユーザーが必要な権限をすべて付与すると、アプリはアドバタイズメントと検出を開始して付近のデバイスを検出できます。

まず、ユースケースの Strategy を選択します。選択した Strategy によって、アプリの接続トポロジが決まります(1 つの広告主から N 人の発見者へ、または M 人の広告主から N 人の発見者へ)。

アドバタイズするデバイスでは、目的の Strategy と、アプリを識別する serviceId パラメータを指定して、startAdvertising() を呼び出します。

付近の広告主を検出するデバイスでは、同じ StrategyserviceId を使用して startDiscovery() を呼び出します。

serviceId 値はアプリを一意に識別するものにする必要があります。アプリのパッケージ名(com.google.example.myapp など)を使用することをおすすめします。

次の例は、広告方法を示しています。

private void startAdvertising() {
  AdvertisingOptions advertisingOptions =
      new AdvertisingOptions.Builder().setStrategy(STRATEGY).build();
  Nearby.getConnectionsClient(context)
      .startAdvertising(
          getLocalUserName(), SERVICE_ID, connectionLifecycleCallback, advertisingOptions)
      .addOnSuccessListener(
          (Void unused) -> {
            // We're advertising!
          })
      .addOnFailureListener(
          (Exception e) -> {
            // We were unable to start advertising.
          });
}

ConnectionLifecycleCallback パラメータは、発見者が広告主への接続をリクエストしたときに呼び出されるコールバックです。このコールバックの定義について詳しくは、接続を管理するをご覧ください。

次の例は、検出方法を示しています。

private void startDiscovery() {
  DiscoveryOptions discoveryOptions =
      new DiscoveryOptions.Builder().setStrategy(STRATEGY).build();
  Nearby.getConnectionsClient(context)
      .startDiscovery(SERVICE_ID, endpointDiscoveryCallback, discoveryOptions)
      .addOnSuccessListener(
          (Void unused) -> {
            // We're discovering!
          })
      .addOnFailureListener(
          (Exception e) -> {
            // We're unable to start discovering.
          });
}

EndpointDiscoveryCallback パラメータは、付近の広告主が検出または失われたときに呼び出されるコールバックです。このコールバックの定義について詳しくは、接続を管理するをご覧ください。

アドバタイズする必要がなくなった場合は stopAdvertising() を呼び出し、検出する必要がなくなった場合は stopDiscovery() を呼び出します。