برای دسترسی به API های ارائه شده توسط سرویسهای گوگل پلی در برنامه اندروید خود، باید از اشیاء کلاینت API استفاده کنید. این اشیاء اتصال به سرویسهای گوگل پلی را مدیریت میکنند، درخواستها را در صف قرار میدهند و در صورت وجود اتصال، آنها را به ترتیب اجرا میکنند. میتوانید در صورت نیاز کلاینتهای API جدید ایجاد کنید، زیرا ساخت آنها ارزان است.
شروع کنید
قبل از شروع، مطمئن شوید که سرویسهای گوگل پلی را در پروژه اپلیکیشن خود تنظیم کردهاید .
برای دسترسی به سرویسی که نیازی به مجوز ندارد، یک نمونه از شیء کلاینت سرویس ایجاد کنید و یک شیء Context یا Activity به آن ارسال کنید. در صورت لزوم، قبل از اجرای هرگونه فراخوانی API، از کاربران خواسته میشود که سرویسهای Google Play را ارتقا دهند.
قطعه کد زیر نحوه دریافت آخرین موقعیت مکانی شناخته شده دستگاه را با استفاده از Fused Location Provider نشان میدهد:
کاتلین
// 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. } }
جاوا
// 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هایی که نیاز به مجوز کاربر دارند، راهنمای مجوز دسترسی به دادههای کاربر گوگل را دنبال کنید. اگر از APIای استفاده میکنید که به شیء GoogleSignInAccount نیاز دارد، از متد AuthorizationResult#toGoogleSignInAccount() استفاده کنید.
بررسی در دسترس بودن API
قبل از فعال کردن ویژگیای که به API سرویسهای گوگل پلی وابسته است، با فراخوانی تابع checkApiAvailability() بررسی کنید که آیا API روی دستگاه موجود است یا خیر.
قطعه کد زیر نحوه بررسی در دسترس بودن ارائه دهنده مکان ادغام شده را نشان میدهد:
کاتلین
fun getLastLocationIfApiAvailable(context: Context?): Task<Location>? { val client = getFusedLocationProviderClient(context) return GoogleApiAvailability.getInstance() .checkApiAvailability(client) .onSuccessTask { _ -> client.lastLocation } .addOnFailureListener { _ -> Log.d(TAG, "Location unavailable.")} }
جاوا
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.")); }