27/11/2023
- Introduktion til Google Play Services API'er
- Forudsætninger: Opsætning af Google Play Services
- Tilgang til API'er uden autorisation
- Tilgang til API'er med autorisation
- Verificering af API-tilgængelighed
- Hvad hvis Google Play Services ikke er tilgængelig?
- Play Integrity API: Sikring af din app
- Sammenligning: GoogleApi vs. GoogleApiClient (forældet)
- Ofte Stillede Spørgsmål (FAQ)
- Konklusion
Introduktion til Google Play Services API'er
I den moderne Android-udviklingsverden er Google Play Services en fundamental komponent, der giver adgang til en bred vifte af funktioner og tjenester, som apps kan udnytte. Disse tjenester spænder fra lokationstjenester og Google Maps til in-app køb og push-notifikationer. For at kunne benytte sig af disse kraftfulde API'er, er det essentielt at forstå, hvordan man korrekt interagerer med dem. Dette indebærer primært brugen af klientobjekter, som fungerer som broen mellem din app og Google Play Services.

Disse klientobjekter er ansvarlige for at håndtere forbindelsen til Google Play Services, administrere anmodninger og sikre, at de udføres, når en forbindelse er tilgængelig. Det gode er, at det ikke er ressourcekrævende at oprette disse klientobjekter, hvilket giver udviklere fleksibilitet til at skabe nye efter behov. Denne artikel vil guide dig igennem processen med at verificere tilgængeligheden af disse API'er og sikre, at din app fungerer problemfrit.
Forudsætninger: Opsætning af Google Play Services
Før du overhovedet kan begynde at tænke på at bruge Google Play Services API'er, er det afgørende, at du har korrekt opsat Google Play Services i dit Android-projekt. Dette trin er fundamentalt for at sikre, at din app kan kommunikere effektivt med de nødvendige tjenester. Sørg for at have de seneste versioner af Google Play Services SDK'en inkluderet i din `build.gradle`-fil.
Vigtig Advarsel: Det er værd at bemærke, at `GoogleApiClient` er blevet forældet. Hvis din app stadig benytter sig af `GoogleApiClient`, er det stærkt anbefalet at migrere til de tilsvarende GoogleApi-baserede API'er. Dette indebærer en opdatering til de nyeste SDK-versioner. Ved at følge denne vejledning sikrer du, at din app anvender de mest moderne og understøttede metoder.
Tilgang til API'er uden autorisation
For at få adgang til en Google Play Services API, der ikke kræver specifik brugerautorisation, er processen relativt ligetil. Du skal blot oprette en instans af den relevante serviceklient. Når du opretter denne instans, skal du give et `Context` eller et `Activity` objekt med. Dette objekt giver klienten den nødvendige kontekst for at fungere korrekt.
Hvis det er nødvendigt, vil systemet automatisk bede brugeren om at opdatere Google Play Services, før nogen API-kald kan udføres. Dette sikrer, at brugeren altid har den seneste version, hvilket minimerer potentielle kompatibilitetsproblemer.
Eksempel: Hentning af lokation med Fused Location Provider
Lad os se på et konkret eksempel. Hvis du ønsker at hente enhedens seneste kendte lokation ved hjælp af Fused Location Provider, kan du gøre det som følger:
Kotlin:
// Koden der kræver lokationstilladelser er udeladt for korthedens skyld. val client = LocationServices.getFusedLocationProviderClient(this) // Hent den seneste kendte lokation. // I nogle sjældne situationer kan denne være null. client.lastLocation.addOnSuccessListener { location: Location? -> location?.let { // Logik til at håndtere lokationsobjektet. } } Java:
// Koden der kræver lokationstilladelser er udeladt for korthedens skyld. FusedLocationProviderClient client = LocationServices.getFusedLocationProviderClient(this); // Hent den seneste kendte lokation. // I nogle sjældne situationer kan denne være null. client.getLastLocation().addOnSuccessListener(this, location -> { if (location != null) { // Logik til at håndtere lokationsobjektet. } }); Disse kodeeksempler illustrerer, hvordan du opretter en klient og anmoder om lokationsdata. Husk at implementere den nødvendige logik til at håndtere det returnerede `Location`-objekt, herunder tilfældet hvor det måtte være null.
Tilgang til API'er med autorisation
Når du arbejder med Google Play Services API'er, der kræver brugerautorisation – for eksempel adgang til brugerens Google-konto eller data – skal du følge den specifikke vejledning for autorisation. Dette indebærer typisk at guide brugeren igennem en godkendelsesproces.
Hvis din app bruger en API, der kræver et `GoogleSignInAccount`-objekt, kan du opnå dette ved at bruge metoden `AuthorizationResult.toGoogleSignInAccount()`. Dette sikrer, at du har de nødvendige oplysninger til at autentificere brugeren og få adgang til de ønskede data.
Verificering af API-tilgængelighed
Før du implementerer en funktion i din app, der er afhængig af en specifik Google Play Services API, er det en god praksis at kontrollere, om denne API faktisk er tilgængelig på brugerens enhed. Dette kan gøres ved at kalde metoden `checkApiAvailability()`. Denne kontrol er især vigtig, hvis du ønsker at deaktivere en funktion, når den tilhørende API ikke er tilgængelig, for at undgå fejl og give en bedre brugeroplevelse.

Bemærk: Selvom det anbefales at tjekke tilgængeligheden, er det teknisk muligt at kalde API-metoderne direkte uden denne forudgående kontrol. Hvis API'en ikke er tilgængelig, vil kaldet simpelthen fejle. Brugen af `checkApiAvailability()` giver dig dog mulighed for at håndtere situationen proaktivt.
Eksempel: Verifikation af Fused Location Provider
Lad os se på, hvordan du kan verificere tilgængeligheden af Fused Location Provider:
Kotlin:
val googleApiAvailability = GoogleApiAvailability.getInstance() val resultCode = googleApiAvailability.isGooglePlayServicesAvailable(this) if (resultCode == ConnectionResult.SUCCESS) { // Google Play Services er tilgængelig, og Fused Location Provider kan bruges. println("Fused Location Provider er tilgængelig.") } else { // Håndter situationen, hvor Google Play Services ikke er tilgængelig. // Du kan vise en besked til brugeren eller deaktivere lokationsbaserede funktioner. println("Google Play Services er ikke tilgængelig. Fejlkode: $resultCode") } Java:
GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance(); int resultCode = googleApiAvailability.isGooglePlayServicesAvailable(this); if (resultCode == ConnectionResult.SUCCESS) { // Google Play Services er tilgængelig, og Fused Location Provider kan bruges. System.out.println("Fused Location Provider er tilgængelig."); } else { // Håndter situationen, hvor Google Play Services ikke er tilgængelig. // Du kan vise en besked til brugeren eller deaktivere lokationsbaserede funktioner. System.out.println("Google Play Services er ikke tilgængelig. Fejlkode: " + resultCode); } I disse eksempler bruges `GoogleApiAvailability.isGooglePlayServicesAvailable(Context)` til at tjekke den generelle tilgængelighed af Google Play Services. Hvis resultatkoden er `ConnectionResult.SUCCESS`, betyder det, at tjenesterne er tilgængelige. Du kan derefter fortsætte med at bruge de relevante API'er.
Hvad hvis Google Play Services ikke er tilgængelig?
Hvis `isGooglePlayServicesAvailable()` returnerer en anden kode end `ConnectionResult.SUCCESS`, indikerer det, at Google Play Services enten mangler, er forældet eller har en anden form for problem på enheden. I sådanne tilfælde er det vigtigt at håndtere situationen elegant:
- Informér brugeren: Vis en klar og venlig besked til brugeren om, at Google Play Services er nødvendigt for at bruge den pågældende funktion.
- Tilbyd opdatering: Brug `GoogleApiAvailability.getErrorDialog()` til at vise en dialogboks, der giver brugeren mulighed for at opdatere eller installere Google Play Services fra Google Play Store.
- Deaktiver funktioner: Hvis funktionen er kritisk, kan du vælge at deaktivere den midlertidigt og informere brugeren om årsagen.
- Brug alternative løsninger: Overvej, om der findes alternative, mindre funktionsrige metoder til at opnå et lignende resultat uden Google Play Services.
Play Integrity API: Sikring af din app
Udover at sikre funktionalitet, er det også vigtigt at beskytte din app mod misbrug og uautoriseret adgang. Her kommer Play Integrity API ind i billedet. Ved at integrere Play Integrity API kan din app foretage verifikationer på kritiske tidspunkter for at sikre, at:
- Brugeranmodninger stammer fra en uændret version af din app.
- Appen er installeret via Google Play Store.
- Appen kører på en ægte Android-enhed.
Din app kan kalde Play Integrity API'en på strategiske punkter. Serveren i din backend kan derefter analysere de modtagne oplysninger og træffe beslutninger om, hvordan den skal reagere for at forhindre misbrug, uautoriseret adgang og potentielle angreb. Dette tilføjer et ekstra lag af sikkerhed og troværdighed til din applikation.
Sammenligning: GoogleApi vs. GoogleApiClient (forældet)
For at give et klarere billede af den anbefalede praksis, lad os sammenligne den nuværende `GoogleApi`-tilgang med den forældede `GoogleApiClient`:
| Funktion | GoogleApi (Anbefalet) | GoogleApiClient (Forældet) |
|---|---|---|
| Opsætning | Bruger `Api` og `GoogleApi.Settings` til at konfigurere forbindelsen. | Krævede manuel oprettelse af `GoogleApiClient.Builder`. |
| Håndtering af forbindelser | Automatisk håndtering af forbindelser og genoprettelse. | Krævede manuel implementering af `ConnectionCallbacks` og `OnConnectionFailedListener`. |
| API-kald | Direkte kald på klientobjekter (f.eks. `FusedLocationProviderClient`). | Krævede at tilføje API'er til `GoogleApiClient.Builder` og derefter kalde metoder på klienten. |
| Understøttelse | Aktivt understøttet og fremtidssikret. | Forældet - ingen fremtidige opdateringer eller support forventes. |
| Fleksibilitet | Mere modulær og lettere at integrere med andre Google-tjenester. | Mindre fleksibel og mere kompleks at administrere. |
Som tabellen tydeligt viser, tilbyder `GoogleApi` en mere strømlinet, robust og fremtidssikret løsning sammenlignet med den forældede `GoogleApiClient`. Overgangen til `GoogleApi` er afgørende for at opretholde kompatibilitet og udnytte de nyeste funktioner.
Ofte Stillede Spørgsmål (FAQ)
Spørgsmål: Hvad er den primære forskel mellem `GoogleApi` og `GoogleApiClient`?
Svar: `GoogleApi` er den moderne, anbefalede måde at interagere med Google Play Services på, mens `GoogleApiClient` er forældet og bør undgås i nye projekter.
Spørgsmål: Skal jeg altid tjekke `isGooglePlayServicesAvailable()` før et API-kald?
Svar: Det er god praksis, især hvis du vil give brugeren en bedre oplevelse ved at deaktivere eller informere om manglende funktionalitet. API-kald vil dog fejle, hvis tjenesterne ikke er tilgængelige, selv uden forudgående kontrol.
Spørgsmål: Hvordan kan jeg få brugerens samtykke til at bruge lokationstjenester?
Svar: Du skal anmode om de nødvendige lokationstilladelser i din app's manifestfil og ved kørselstidspunktet, før du kan få adgang til lokationsdata.
Spørgsmål: Hvad gør Play Integrity API?
Svar: Play Integrity API hjælper med at verificere, at din app kører på en legitim enhed og ikke er blevet manipuleret med, hvilket forbedrer appens sikkerhed.
Konklusion
At mestre interaktionen med Google Play Services er afgørende for at bygge moderne, funktionsrige Android-apps. Ved at forstå vigtigheden af klientobjekter, korrekt fejlhåndtering, brugerautorisation og sikkerhedsforanstaltninger som Play Integrity API, kan du sikre, at din app leverer en pålidelig og sikker oplevelse for dine brugere. Husk altid at holde dig opdateret med de seneste anbefalinger og undgå forældede metoder som `GoogleApiClient`.
Hvis du vil læse andre artikler, der ligner Google Play Services API Tilgængelighed, kan du besøge kategorien Teknologi.
