دسترسی به APIهای Google

برای دسترسی به API های ارائه شده توسط سرویس های Google Play در برنامه Android خود، باید از اشیاء مشتری API استفاده کنید. این اشیاء اتصال به سرویس‌های Google Play را کنترل می‌کنند، درخواست‌ها را در صف قرار می‌دهند و زمانی که اتصال در دسترس است، آنها را به ترتیب اجرا می‌کنند. می‌توانید در صورت نیاز کلاینت‌های API جدیدی ایجاد کنید، زیرا ساخت آن‌ها ارزان است.

شروع کنید

قبل از شروع، مطمئن شوید که خدمات Google Play را در پروژه برنامه خود تنظیم کرده اید .

برای دسترسی به سرویسی که نیازی به مجوز ندارد، یک نمونه از شی مشتری سرویس ایجاد کنید که یک Context یا یک Object Activity را ارسال کنید. در صورت لزوم، از کاربران خواسته می‌شود تا خدمات Google Play را قبل از اجرای هر گونه تماس API ارتقا دهند.

قطعه کد زیر نحوه دریافت آخرین مکان شناخته شده دستگاه را با استفاده از 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هایی که به مجوز کاربر نیاز دارند، راهنمای مجوز دسترسی به داده‌های کاربر Google را دنبال کنید. اگر از یک API استفاده می کنید که به یک شیء GoogleSignInAccount نیاز دارد، از روش AuthorizationResult#toGoogleSignInAccount() استفاده کنید.

در دسترس بودن API را بررسی کنید

قبل از فعال کردن یک ویژگی که به یک API خدمات Google Play بستگی دارد، با فراخوانی 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."));
}