빠른 페어링 호환 앱 통합

빠른 페어링을 사용하면 OEM 호환 앱을 페어링 및 사용 환경에 긴밀하게 통합할 수 있습니다. 사용자가 빠른 페어링을 완료한 후 사용자의 참여를 유도하는 데 선택적으로 활용할 수 있는 여러 통합 지점이 있습니다.

구매 직후 환경 (OOBE) 중 설치

빠른 페어링을 사용하면 사용자는 구매 직후 환경 (OOBE)의 마지막 단계로 헤드셋의 호환 앱을 다운로드할 수 있습니다. 이 정보는 페어링이 완료되었으며 아직 앱이 설치되지 않은 경우 앱을 다운로드하거나 앱을 열어 사용할 수 있음을 알리는 알림으로 사용자에게 표시됩니다.

이 기능을 시작하려면 호환 앱의 패키지 이름을 콘솔의 기기 세부정보에 추가하세요.

빠른 페어링으로 실행되는 호환 앱에는 추가 데이터 요소가 포함됩니다.

설정 슬라이스 통합

호환 앱에서 슬라이스를 제공하여 기기의 블루투스 설정 페이지에서 사용할 수 있는 옵션을 더욱 개선할 수 있습니다.

이러한 설정 슬라이스를 제공하려면 호환 앱에서 SliceProvider를 구현해야 합니다. OOBE 슬라이스와 일반 설정 항목, 두 가지 유형의 슬라이스를 사용할 수 있습니다. 사용자가 호환 앱 내에서 아직 헤드셋을 구성하지 않았고 나머지 슬라이스가 항상 포함되어야 하는 경우 OOBE 슬라이스를 포함해야 합니다. 아래 코드 샘플을 참고하세요.

@Nullable
@Override
public Slice onBindSlice(Uri sliceUri) {
  String address = sliceUri.getQueryParameter("addr");
  if (address == null) {
    return null;
  }
  String path = sliceUri.getPathSegments().get(/* index= */ 0);
  if ("settings_slice".equals(path)) {
    return createSettingSlice(sliceUri, address);
  } else if ("oobe_slice".equals(path)) {
    return createOobeReminderSlice(sliceUri, address);
  }
  return null;
}

oobe_slice는 사용자가 호환 앱에서 아직 기기 설정을 완료하지 않은 경우 기기 설정을 완료하도록 알리는 데 사용됩니다. 호환 앱은 사용자가 기기 설정을 완료한 후 슬라이스를 다시 제공하면 안 됩니다.

@Nullable
private Slice createOobeReminderSlice(Uri sliceUri, String address) {
  if (!deviceHasGoneThroughOobe(address)) {
    ListBuilder listBuilder =
        new ListBuilder(context, sliceUri, ListBuilder.INFINITY);
    addOobeSlice(listBuilder, context, address);
    return listBuilder.build();
  }
  return null;
}

private static void addOobeSlice(
    ListBuilder listBuilder, Context context, String address) {
  listBuilder.addRow(
      createRow(
          context,
          R.drawable.icon_oobe,
          R.string.title_oobe,
          R.string.summary_oobe,
          R.string.label_oobe,
          createOobePendingIntent(context, address)));
}

setting_slice에서 호환 앱은 흔히 사용되는 설정 링크를 제공할 수 있습니다.

private Slice createSettingSlice(Uri sliceUri, String address) {
  ListBuilder listBuilder =
      new ListBuilder(context, sliceUri, ListBuilder.INFINITY);
  // TODO: Add your customized slice here.
  addRow1(listBuilder, context, address);
  addRow2(listBuilder, context, address);
  return listBuilder.build();
}

private static void addRow1(
    ListBuilder listBuilder, Context context, String address) {
  listBuilder.addRow(
      createRow(
          context,
          R.drawable.fp_slice_row1_icon,
          R.string.fp_slice_row1_title_gestures,
          R.string.fp_slice_row1_summary_gestures,
          R.string.fp_slice_row1_label_gestures,
          createPendingIntent(context, address)));
}

private static void addRow2(
    ListBuilder listBuilder, Context context, String address) {
  ...
}

각 Slice에는 제목, 부제목, 아이콘, 작업이 있어야 합니다.

private static RowBuilder createRow(
    Context context,
    @DrawableRes int iconId,
    @StringRes int titleId,
    @StringRes int summaryId,
    @StringRes int actionTitleId,
    PendingIntent pendingIntent) {
  SliceAction action =
      SliceAction.createDeeplink(
          pendingIntent,
          IconCompat.createWithResource(context, iconId),
          ListBuilder.ICON_IMAGE,
          context.getString(actionTitleId));
  return new RowBuilder()
      .setTitleItem(
          IconCompat.createWithResource(context, iconId),
          ListBuilder.ICON_IMAGE)
      .setTitle(context.getString(titleId))
      .setSubtitle(context.getString(summaryId))
      .setPrimaryAction(action);
}

SliceProvider를 구현한 후 다음을 콘솔에 추가하여 빠른 페어링 서비스에서 올바른 앱과 통신 중인지 확인할 수 있도록 합니다.

펌웨어 업데이트 인텐트

연결된 기기의 펌웨어 버전이 오래되거나 기기 콘솔에 구성된 펌웨어 버전과 정확히 다르게 말하는 경우 빠른 페어링은 펌웨어 버전 확인 후 com.google.android.gms.nearby.fastpair.ACTION_FIRMWARE_UPDATE_BROADCAST 인텐트를 사용하여 호환 앱에 알립니다. 인텐트에는 다음과 같은 추가 정보가 있습니다.

  • com.google.android.gms.nearby.fastpair.EXTRA_LOCAL_FIRMWARE_VERSION - 연결된 기기의 펌웨어 버전
  • com.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN, 빠른 페어링에서 알림을 표시한 경우 true로 설정