宣传和发现

在用户授予所有必需的权限后,您的应用就可以开始 通告和发现,以寻找附近的设备。

首先,为您的用例选择一个 Strategy。 您选择的 Strategy 决定了应用的连接拓扑(一个 一个广告客户到 N 个发现者,或者 M 个广告客户到 N 个发现者)。

在将要通告的设备上,使用所需的startAdvertising() Strategy 和用于标识应用的 serviceId 参数。

在会发现附近广告客户的设备上,使用以下电话号码致电 startDiscovery(): 相同的 StrategyserviceId

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 参数是将调用的回调 当发现者请求与广告客户建立关联时请参阅管理 “Connections”可详细了解 定义此回调。

以下示例展示了如何发现:

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 参数是将调用的回调 当发现或丢失附近的广告客户时。请参阅管理 “Connections”可详细了解 定义此回调。

在不再需要广告时调用 stopAdvertising(); 当您不再需要探索时,不妨stopDiscovery()