광고 및 탐색

사용자가 필요한 권한을 모두 부여하면 앱에서 근처 기기를 찾기 위해 광고를 검색하고 발견할 수 있습니다.

먼저 사용 사례로 Strategy을 선택합니다. 선택한 Strategy에 따라 앱의 연결 토폴로지가 결정됩니다 (광고주 한 명에서 N명으로, M 광고주에서 N 명으로 연결).

광고할 기기에서 원하는 Strategy와 앱을 식별하는 serviceId 매개변수를 사용하여 startAdvertising()를 호출합니다.

근처 광고주를 검색할 기기에서 동일한 StrategyserviceIdstartDiscovery()를 호출합니다.

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()를 호출합니다.