Matchmaking API

คำแนะนำเกี่ยวกับ Health Connect Matchmaking API

ภาพรวม

Matchmaking API ช่วยให้แอปของคุณค้นพบแอปและอุปกรณ์อื่นๆ ที่เขียนข้อมูลสุขภาพซึ่งแอปของคุณมีสิทธิ์อ่านได้ ซึ่งจะช่วยให้ผู้ใช้ เชื่อมต่อแหล่งข้อมูลโปรดกับแอปของคุณได้โดยไม่ยุ่งยาก

หน้าจอการจับคู่จะค้นหาแอปและอุปกรณ์ที่เข้ากันได้กับ Health Connect จากนั้นจะอ้างอิงสิทธิ์การอ่านที่จำเป็นของแอปกับความสามารถในการเขียนของแอปและอุปกรณ์เหล่านั้น หน้าจอจะแสดงแอปและอุปกรณ์ ที่ประกาศสิทธิ์เขียนแล้ว แต่ยังไม่ได้รับสิทธิ์สำหรับบันทึกประเภทใดประเภทหนึ่ง ที่ระบุซึ่งแอปของคุณได้รับอนุญาตให้อ่าน

อยู่แล้ว

ก่อนเริ่มต้น

คู่มือนี้ถือว่าคุณได้กำหนดค่า Health Connect ในแอปแล้ว และมีอินสแตนซ์ของ HealthConnectClient พร้อมใช้งาน

ตรวจสอบความพร้อมใช้งานของ Health Connect

ก่อนที่จะพยายามใช้ Health Connect แอปของคุณควรยืนยันว่า Health Connect พร้อมใช้งานในอุปกรณ์ของผู้ใช้หรือไม่ Health Connect อาจไม่ได้ติดตั้ง ในอุปกรณ์ของผู้ใช้ หรืออาจถูกปิดใช้

ใช้ HealthConnectClient.getSdkStatus() เพื่อตรวจสอบความพร้อมให้บริการ หาก Health Connect ไม่พร้อมให้บริการ ให้แจ้งให้ผู้ใช้ ติดตั้งหรืออัปเดต Health Connect จาก Google Play Store

ตรวจสอบความพร้อมใช้งานของฟีเจอร์

หากต้องการดูว่าอุปกรณ์ของผู้ใช้รองรับการจับคู่ใน Health Connect หรือไม่ ให้ตรวจสอบความพร้อมใช้งานของFEATURE_MATCHMAKING

if (healthConnectClient
    .features
    .getFeatureStatus(
    HealthConnectFeatures.FEATURE_MATCHMAKING
    ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

// Feature is available
} else {
// Feature isn't available
}

การใช้งาน

ระบบจะเปิดตัวโฟลว์การจับคู่โดยใช้ MatchmakingRequest คำขอนี้ กำหนดประเภทบันทึกที่คุณต้องการให้แอปเก็บรวบรวม และช่วยให้คุณรวมหรือ ยกเว้นแหล่งข้อมูลที่เฉพาะเจาะจง เช่น แอปหรืออุปกรณ์ ได้ดังนี้

  • recordTypes: ชุดของคลาส Record เช่น StepsRecord::class หาก ว่างเปล่า ขั้นตอนจะพิจารณาประเภทบันทึกทั้งหมดที่แอปของคุณมีสิทธิ์อ่าน
  • includedDataSources: ชุดออบเจ็กต์ DataOrigin ที่จะรวมไว้โดยเฉพาะ
  • excludedDataSources: ชุดออบเจ็กต์ DataOrigin ที่จะยกเว้น

ทำตามขั้นตอนต่อไปนี้เพื่อผสานรวม Matchmaking API เข้ากับแอปพลิเคชัน

ตรวจสอบว่าจับคู่ได้หรือไม่

ก่อนที่จะแสดงจุดแรกเข้าของการจับคู่ ให้ใช้ checkIfMatchmakingIsPossible() เพื่อพิจารณาว่ามีแอปหรืออุปกรณ์จับคู่ที่เกี่ยวข้อง สำหรับประเภทบันทึกที่ขอหรือไม่

suspend fun checkMatchmakingPossible(healthConnectClient: HealthConnectClient) {
    val request = MatchmakingRequest(recordTypes = setOf(StepsRecord::class))
    val response = healthConnectClient.checkIfMatchmakingIsPossible(request)

    if (response.isMatchmakingPossible) {
        // Relevant apps or devices found. Show entry point to launch flow.
    } else {
        // Handle case where no new data sources are available
    }
}

เราขอแนะนำให้ตรวจสอบว่าการจับคู่เป็นไปได้หรือไม่เป็นประจำ ผู้ใช้อาจติดตั้งแอปเพิ่มเติมในภายหลังหรือเชื่อมต่ออุปกรณ์ที่มีประเภทข้อมูลที่เข้ากันได้ แนวทางที่ใช้กันโดยทั่วไปคือการตรวจสอบทุกครั้งที่แอป เริ่มต้น หากแสดง true ให้แสดงจุดแรกเข้าเพื่อเปิดตัวขั้นตอนการจับคู่

เปิดตัวขั้นตอนการจับคู่

หากจับคู่ได้ ให้ใช้ createMatchmakingIntent() เพื่อรับ Intent เพื่อเปิดตัวโฟลว์ Health Connect จากนั้นเปิดตัวโดยใช้ Activity Result API

// Create the matchmaking launcher
val matchmakingLauncher = registerForActivityResult(
    ActivityResultContracts.StartActivityForResult()
) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
        // Matchmaking finished successfully.
        // User successfully granted at least one permission.
    } else {
        // User canceled flow or didn't grant permissions.
    }
}

fun launchMatchmaking(healthConnectClient: HealthConnectClient) {
    val request = MatchmakingRequest(recordTypes = setOf(StepsRecord::class))
    val intent = healthConnectClient.createMatchmakingIntent(request)
    matchmakingLauncher.launch(intent)
}

การเปิดใช้ Intent นี้จะทำให้ Health Connect แสดงหน้าจอที่ผู้ใช้สามารถดูแอปและอุปกรณ์ที่เข้ากันได้ รวมถึงเลือกเชื่อมต่อเพื่อแชร์ข้อมูลกับแอปของคุณ

หน้าจอการจับคู่แสดงรายการแอปที่แชร์ข้อมูลกับ Health Connect ได้
รูปที่ 1 ระบบจะแสดงแอปที่เขียนข้อมูลซึ่งผู้ใช้อาจต้องการแชร์

หน้าจอการจับคู่แสดงรายการแอปที่แชร์ข้อมูลกับ Health Connect ได้

หน้าจอสิทธิ์ของ Health Connect เพื่ออนุญาตหรือไม่อนุญาตการแชร์ข้อมูล
รูปที่ 2 ผู้ใช้ให้สิทธิ์แอปในการอ่านข้อมูลจาก Health Connect

หน้าจอสิทธิ์ของ Health Connect เพื่ออนุญาตหรือไม่อนุญาตการแชร์ข้อมูล