الوصول إلى Google APIs

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

البدء

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

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

يوضّح مقتطف الرمز التالي كيفية الحصول على آخر موقع جغرافي معروف للجهاز باستخدام 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.
            }
        });

للوصول إلى واجهات برمجة التطبيقات التي تتطلّب تفويض المستخدم، اتّبِع الدليل الخاص بتفويض الوصول إلى بيانات المستخدم على 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.")}
}

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