Matchmaking API

Przewodnik po interfejsie Health Connect Matchmaking API

Przegląd

Interfejs Matchmaking API umożliwia aplikacji wykrywanie innych aplikacji i urządzeń, które mogą zapisywać dane o zdrowiu, do których odczytu Twoja aplikacja ma uprawnienia. Ułatwia to użytkownikom łączenie ulubionych źródeł danych z Twoją aplikacją.

Ekran Matchmaking wykrywa aplikacje i urządzenia zgodne z Health Connect. Następnie porównuje wymagane przez Twoją aplikację uprawnienia do odczytu z możliwościami zapisu tych aplikacji i urządzeń. Na ekranie wyświetlają się aplikacje i Urządzenia, które zadeklarowały uprawnienia do zapisu co najmniej jednego z określonych typów rekordów, do których odczytu Twoja aplikacja ma uprawnienia, ale jeszcze ich nie przyznały.

Zanim zaczniesz

W tym przewodniku zakładamy, że masz już skonfigurowaną aplikację Health Connect i dostępną instancję HealthConnectClient.

Konfiguracja wersji beta

Interfejs Matchmaking API jest dostępny w ramach aktualizacji Health Connect, która jest stopniowo wdrażana na urządzeniach produkcyjnych. Do początku czerwca 2026 r. powinna być dostępna na wszystkich urządzeniach. Aby przetestować funkcje dopasowywania przed udostępnieniem tej aktualizacji, zarejestruj urządzenie testowe w programie Android Beta.

Sprawdzanie dostępności Health Connect

Zanim spróbujesz użyć Health Connect, Twoja aplikacja powinna sprawdzić, czy Health Connect jest dostępna na urządzeniu użytkownika. Health Connect może nie być zainstalowana na urządzeniu użytkownika lub może być wyłączona.

Aby sprawdzić dostępność, użyj HealthConnectClient.getSdkStatus(). Jeśli Health Connect nie jest dostępna, poproś użytkownika o zainstalowanie lub zaktualizowanie Health Connect ze Sklepu Google Play.

Sprawdzanie dostępności funkcji

Aby sprawdzić, czy urządzenie użytkownika obsługuje dopasowywanie w Health Connect, sprawdź dostępność FEATURE_MATCHMAKING:

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

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

Implementacja

Proces dopasowywania jest uruchamiany za pomocą MatchmakingRequest. Ta prośba określa, które typy rekordów ma zbierać Twoja aplikacja, i umożliwia uwzględnianie lub wykluczanie określonych źródeł danych, takich jak aplikacje lub urządzenia:

  • recordTypes: zbiór klas Record, takich jak StepsRecord::class. Jeśli jest pusty, proces uwzględnia wszystkie typy rekordów, do których odczytu Twoja aplikacja ma uprawnienia.
  • includedDataSources: zbiór obiektów DataOrigin, które mają być uwzględniane.
  • excludedDataSources: zbiór obiektów DataOrigin, które mają być wykluczane.

Aby zintegrować interfejs Matchmaking API z aplikacją, wykonaj te czynności.

Sprawdzanie, czy dopasowywanie jest możliwe

Zanim wyświetlisz punkt wejścia do dopasowywania, użyj checkIfMatchmakingIsPossible(), aby sprawdzić, czy istnieją odpowiednie aplikacje lub urządzenia pasujące do żądanych typów rekordów:

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
    }
}

Zalecamy regularne sprawdzanie, czy dopasowywanie jest możliwe. Użytkownicy mogą później zainstalować dodatkowe aplikacje lub połączyć urządzenia z wzajemnie zgodnymi typami danych. Częstym rozwiązaniem jest sprawdzanie przy każdym uruchomieniu aplikacji. Jeśli funkcja zwróci wartość true, wyświetl punkt wejścia, aby uruchomić proces dopasowywania.

Uruchamianie procesu dopasowywania

Jeśli dopasowywanie jest możliwe, użyj createMatchmakingIntent(), aby uzyskać Intent do uruchomienia procesu Health Connect, a następnie uruchom go za pomocą interfejsu 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)
}

Po uruchomieniu tej intencji Health Connect wyświetli ekran, na którym użytkownicy mogą zobaczyć zgodne aplikacje i urządzenia oraz wybrać, czy chcą je połączyć, aby udostępniać dane Twojej aplikacji.