การจับคู่ด่วนช่วยให้แอปที่ใช้ร่วมกันกับ OEM ผสานรวมกับประสบการณ์การจับคู่และการใช้งานได้อย่างลงตัว มีจุดผสานรวมหลายจุดที่อาจเลือกใช้เพื่อดึงดูดผู้ใช้หลังจากที่จับคู่ด่วนเสร็จแล้ว
การติดตั้งระหว่างแกะกล่อง (OOBE)
การจับคู่ด่วนช่วยให้ผู้ใช้ดาวน์โหลดแอปที่ใช้ร่วมกันสำหรับชุดหูฟังเป็นขั้นตอนสุดท้ายของประสบการณ์การใช้งานนอกกล่อง (OOBE) ซึ่งจะแสดงให้ผู้ใช้เห็นในการแจ้งเตือนที่บอกว่าจับคู่เสร็จแล้ว และผู้ใช้สามารถดาวน์โหลดแอปหากยังไม่ได้ติดตั้ง หรือเปิดแอปแล้วเริ่มใช้งานได้เลย
หากต้องการเริ่มต้นใช้งานฟีเจอร์นี้ ให้เพิ่มชื่อแพ็กเกจของแอปที่ใช้ร่วมกันลงในรายละเอียดอุปกรณ์บนคอนโซล
แอปที่ใช้ร่วมกันที่เปิดตัวโดยการจับคู่ด่วนประกอบด้วยองค์ประกอบข้อมูลเพิ่มเติมต่อไปนี้
android.bluetooth.device.extra.DEVICE
- อุปกรณ์บลูทูธ ที่เรียกใช้การแจ้งเตือน
การผสานรวมส่วนแบ่งการตั้งค่า
แอปที่ใช้ร่วมกันอาจระบุส่วนแบ่งเพื่อเพิ่มประสิทธิภาพให้กับตัวเลือกที่มีอยู่ในหน้าการตั้งค่าบลูทูธของอุปกรณ์
SliceProvider ต้องติดตั้งใช้งานโดยแอปที่ใช้ร่วมกันเพื่อระบุส่วนการตั้งค่าเหล่านี้ ส่วนแบ่งที่ใช้ได้มี 2 ประเภท ได้แก่ ส่วนแบ่ง 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) {
...
}
แต่ละส่วนต้องมีชื่อ ชื่อรอง ไอคอน และการดำเนินการ
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 ได้
ความตั้งใจในการอัปเดตเฟิร์มแวร์
เมื่อเวอร์ชันเฟิร์มแวร์ของอุปกรณ์ที่เชื่อมต่อล้าสมัยหรือพูดต่างจากเวอร์ชันเฟิร์มแวร์ที่กำหนดค่าไว้ในคอนโซลอุปกรณ์
การจับคู่ด่วนจะแจ้งแอปที่ใช้ร่วมกันด้วย Intent com.google.android.gms.nearby.fastpair.ACTION_FIRMWARE_UPDATE_BROADCAST
หลังจากตรวจสอบเวอร์ชันเฟิร์มแวร์ Intent มีข้อมูลเพิ่มเติมต่อไปนี้
com.google.android.gms.nearby.fastpair.EXTRA_LOCAL_FIRMWARE_VERSION
เวอร์ชันเฟิร์มแวร์ของอุปกรณ์ที่เชื่อมต่อcom.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN
ตั้งค่าเป็นtrue
หากการจับคู่ด่วนแสดงการแจ้งเตือน