빠른 페어링을 사용하면 OEM 호환 앱을 페어링 및 사용 환경에 긴밀하게 통합할 수 있습니다. 사용자가 빠른 페어링을 완료한 후 사용자의 참여를 유도하는 데 선택적으로 활용할 수 있는 여러 통합 지점이 있습니다.
구매 직후 환경 (OOBE) 중 설치
빠른 페어링을 사용하면 사용자는 구매 직후 환경 (OOBE)의 마지막 단계로 헤드셋의 호환 앱을 다운로드할 수 있습니다. 이 정보는 페어링이 완료되었으며 아직 앱이 설치되지 않은 경우 앱을 다운로드하거나 앱을 열어 사용할 수 있음을 알리는 알림으로 사용자에게 표시됩니다.
이 기능을 시작하려면 호환 앱의 패키지 이름을 콘솔의 기기 세부정보에 추가하세요.
빠른 페어링으로 실행되는 호환 앱에는 추가 데이터 요소가 포함됩니다.
android.bluetooth.device.extra.DEVICE
- 알림을 트리거한 블루투스 기기입니다.
설정 슬라이스 통합
호환 앱에서 슬라이스를 제공하여 기기의 블루투스 설정 페이지에서 사용할 수 있는 옵션을 더욱 개선할 수 있습니다.
이러한 설정 슬라이스를 제공하려면 호환 앱에서 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
를 구현한 후 다음을 콘솔에 추가하여 빠른 페어링 서비스에서 올바른 앱과 통신 중인지 확인할 수 있도록 합니다.
- 제공업체의 권한
- 호환 앱의 공개 서명
SHA-256
다이제스트- apksigner를 사용하여 SHA-256 다이제스트를 가져올 수 있습니다.
펌웨어 업데이트 인텐트
연결된 기기의 펌웨어 버전이 오래되거나 기기 콘솔에 구성된 펌웨어 버전과 정확히 다르게 말하는 경우 빠른 페어링은 펌웨어 버전 확인 후 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
로 설정