หากต้องการเข้าถึงAPI ที่ขับเคลื่อนโดยบริการ Google Play ในแอป Android คุณต้องใช้ออบเจ็กต์ไคลเอ็นต์ API ออบเจ็กต์เหล่านี้จะจัดการการเชื่อมต่อกับบริการ Google Play, จัดคิวคำขอ และดำเนินการตามลำดับเมื่อมีการเชื่อมต่อ คุณสามารถสร้างไคลเอ็นต์ API ใหม่ได้ตามต้องการ เนื่องจากการสร้างไคลเอ็นต์ดังกล่าวมีค่าใช้จ่ายไม่มาก
เริ่มต้นใช้งาน
ก่อนเริ่มต้น ให้ตรวจสอบว่าได้ตั้งค่าบริการ Google Play ในโปรเจ็กต์แอปแล้ว
หากต้องการเข้าถึงบริการที่ไม่จําเป็นต้องให้สิทธิ์ ให้สร้างอินสแตนซ์ของออบเจ็กต์ไคลเอ็นต์ของบริการ โดยส่งออบเจ็กต์ Context
หรือ Activity
หากจำเป็น ระบบจะแจ้งให้ผู้ใช้อัปเกรดบริการ Google Play ก่อนเรียกใช้ 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
ให้ใช้เมธอด AuthorizationResult#toGoogleSignInAccount()
ตรวจสอบความพร้อมใช้งานของ API
ก่อนเปิดใช้ฟีเจอร์ที่ขึ้นอยู่กับ Google Play Services API ให้ตรวจสอบว่า 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.")); }