الوصول إلى Google APIs

للوصول إلى واجهات برمجة التطبيقات المستندة إلى "خدمات Google Play" في تطبيق Android، عليك استخدام عناصر عميل واجهة برمجة التطبيقات. تتعامل هذه العناصر مع الاتصال بخدمات Google Play، وتضع الطلبات في قائمة انتظار وتنفّذها بالترتيب عند توفّر اتصال. يمكنك إنشاء عملاء API جدد حسب الحاجة، لأنّ إنشاءهم غير مكلف.

البدء

قبل البدء، تأكَّد من إعداد "خدمات Google Play" في مشروع تطبيقك.

للوصول إلى خدمة لا تتطلّب تفويضًا، أنشئ مثيلاً لكائن عميل الخدمة، مع تمرير كائن Context أو Activity. إذا لزم الأمر، يُطلب من المستخدمين ترقية "خدمات Google Play" قبل تنفيذ أي طلبات بيانات من واجهة برمجة التطبيقات.

يوضّح مقتطف الرمز التالي كيفية الحصول على آخر موقع جغرافي معروف للجهاز باستخدام "موفِّر الموقع المدمج":

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

جافا

// 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.
            }
        });

للوصول إلى واجهات برمجة التطبيقات التي تتطلّب تفويضًا من المستخدم، اتّبِع الدليل الخاص بتفويض الوصول إلى بيانات مستخدمي Google. إذا كنت تستخدم واجهة برمجة تطبيقات تتطلّب عنصر GoogleSignInAccount، استخدِم طريقة AuthorizationResult#toGoogleSignInAccount().

التحقّق من توفّر واجهة برمجة التطبيقات

قبل تفعيل ميزة تعتمد على واجهة برمجة تطبيقات في "خدمات Google Play"، تحقَّق مما إذا كانت واجهة برمجة التطبيقات متاحة على الجهاز من خلال طلب 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.")}
}

جافا

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."));
}