כדי לגשת לממשקי API שמבוססים על שירותי Google Play באפליקציה ל-Android, צריך להשתמש באובייקטים של לקוחות API. האובייקטים האלה מטפלים בחיבור ל-Google Play Services, מוסיפים בקשות לתור ומפעילים אותן לפי הסדר כשהחיבור זמין. אפשר ליצור לקוחות API חדשים לפי הצורך, כי הם זולים ליצור.
שנתחיל?
לפני שמתחילים, חשוב להגדיר את Google Play Services בפרויקט האפליקציה.
כדי לגשת לשירות שלא מחייב הרשאה, יוצרים מכונה של אובייקט הלקוח של השירות ומעבירים אובייקט Context
או אובייקט Activity
. אם יש צורך, המשתמשים יתבקשו לשדרג את Google Play Services לפני ביצוע הקריאות ל-API.
קטע הקוד הבא מראה איך לקבל את המיקום האחרון הידוע של המכשיר באמצעות Fused Location Provider:
Kotlin
// Code required for requesting location permissions omitted for brevity. val client = LocationServices.getFusedLocationProviderClient(this) // Get the last known location. In some rare situations, this can be null. client.lastLocation.addOnSuccessListener { location : Location? -> location?.let { // Logic to handle location object. } }
Java
// Code required for requesting location permissions omitted for brevity. FusedLocationProviderClient client = LocationServices.getFusedLocationProviderClient(this); // Get the last known location. In some rare situations, this can be null. client.getLastLocation() .addOnSuccessListener(this, location -> { if (location != null) { // Logic to handle location object. } });
כדי לגשת לממשקי API שדורשים הרשאת משתמש, יש לפעול לפי ההוראות במדריך למתן הרשאת גישה לנתוני משתמשים ב-Google.
אם אתם משתמשים ב-API שדורש אובייקט GoogleSignInAccount
, צריך להשתמש ב-method AuthorizationResult#toGoogleSignInAccount()
.
בדיקת זמינות ה-API
לפני שמפעילים תכונה שמבוססת על ממשק API של Google Play Services, צריך לבדוק אם ה-API זמין במכשיר באמצעות קריאה ל-checkApiAvailability()
.
בקטע הקוד הבא מוסבר איך לבדוק אם ספק המיקום המשולב זמין:
Kotlin
fun getLastLocationIfApiAvailable(context: Context?): Task<Location>? { val client = getFusedLocationProviderClient(context) return GoogleApiAvailability.getInstance() .checkApiAvailability(client) .onSuccessTask { _ -> client.lastLocation } .addOnFailureListener { _ -> Log.d(TAG, "Location unavailable.")} }
Java
public Task<Location> getLastLocationIfApiAvailable(Context context) { FusedLocationProviderClient client = getFusedLocationProviderClient(context); return GoogleApiAvailability.getInstance() .checkApiAvailability(client) .onSuccessTask(unused -> client.getLastLocation()) .addOnFailureListener(e -> Log.d(TAG, "Location unavailable.")); }