ในการเริ่มต้นใช้งาน FCM ให้สร้างกรณีการใช้งานที่ง่ายที่สุด: ส่งข้อความแจ้งเตือนการทดสอบจากผู้ แต่งการแจ้งเตือน ไปยังอุปกรณ์การพัฒนาเมื่อแอปอยู่ในพื้นหลังบนอุปกรณ์ หน้านี้แสดงขั้นตอนทั้งหมดเพื่อให้บรรลุสิ่งนี้ ตั้งแต่การตั้งค่าไปจนถึงการตรวจสอบ ซึ่งอาจครอบคลุมขั้นตอนที่คุณได้ทำไปแล้วหากคุณได้ ตั้งค่าแอปไคลเอนต์ Android สำหรับ FCM
ตั้งค่า SDK
ส่วนนี้ครอบคลุมงานที่คุณอาจทำเสร็จแล้ว หากคุณได้เปิดใช้งานคุณลักษณะ Firebase อื่นๆ สำหรับแอปของคุณแล้ว
ก่อนจะเริ่ม
ติดตั้งหรืออัปเดต Android Studio เป็นเวอร์ชันล่าสุด
ตรวจสอบให้แน่ใจว่าโครงการของคุณตรงตามข้อกำหนดเหล่านี้:
- เป้าหมาย API ระดับ 19 (KitKat) หรือสูงกว่า
- ใช้ Android 4.4 หรือสูงกว่า
- ใช้ Jetpack (AndroidX) ซึ่งมีคุณสมบัติตรงตามข้อกำหนดเวอร์ชันเหล่านี้:
-
com.android.tools.build:gradle
v3.2.1 หรือใหม่กว่า -
compileSdkVersion
28 หรือใหม่กว่า
-
ตั้งค่าอุปกรณ์จริงหรือใช้ โปรแกรมจำลอง เพื่อเรียกใช้แอปของคุณ
โปรดทราบว่า Firebase SDK ที่มีการพึ่งพาบริการ Google Play กำหนดให้อุปกรณ์หรือโปรแกรมจำลองติดตั้งบริการ Google Playลงชื่อเข้าใช้ Firebase โดยใช้บัญชี Google ของคุณ
หากคุณยังไม่มีโปรเจ็กต์ Android และต้องการลองใช้ผลิตภัณฑ์ Firebase คุณสามารถดาวน์โหลดหนึ่งใน ตัวอย่าง การเริ่มต้นอย่างรวดเร็วของเรา
สร้างโปรเจ็กต์ Firebase
ก่อนที่คุณจะเพิ่ม Firebase ลงในแอป Android ได้ คุณต้องสร้างโปรเจ็กต์ Firebase เพื่อเชื่อมต่อกับแอป Android ก่อน ไปที่ ทำความเข้าใจโปรเจ็กต์ Firebase เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับโปรเจ็กต์ Firebase
ลงทะเบียนแอปของคุณด้วย Firebase
หากต้องการใช้ Firebase ในแอป Android คุณต้องลงทะเบียนแอปกับโปรเจ็กต์ Firebase การลงทะเบียนแอพของคุณมักจะเรียกว่า "การเพิ่ม" แอพของคุณในโครงการของคุณ
ไปที่ คอนโซล Firebase
ตรงกลางหน้าภาพรวมโครงการ ให้คลิกไอคอน Android (
) หรือ เพิ่มแอป เพื่อเริ่มเวิร์กโฟลว์การตั้งค่าป้อนชื่อแพ็กเกจของแอปในช่อง ชื่อแพ็กเกจ Android
ชื่อแพ็กเกจ จะระบุแอปของคุณบนอุปกรณ์และใน Google Play Store โดยไม่ซ้ำกัน
ชื่อแพ็คเกจ มักถูกเรียกว่า ID แอปพลิเคชัน
ค้นหาชื่อแพ็คเกจของแอปในไฟล์ Gradle ของโมดูล (ระดับแอป) ซึ่งมักจะเป็น
app/build.gradle
(ชื่อแพ็คเกจตัวอย่าง:com.yourcompany.yourproject
)โปรดทราบว่าค่าชื่อแพ็กเกจจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และไม่สามารถเปลี่ยนแปลงได้สำหรับแอป Firebase Android นี้หลังจากที่ลงทะเบียนกับโปรเจ็กต์ Firebase แล้ว
(ไม่บังคับ) ป้อนข้อมูลแอปอื่นๆ: ชื่อเล่นแอป และ ใบรับรองการลงนามดีบัก SHA-1
ชื่อเล่นของแอป : ตัวระบุความสะดวกภายในที่มีคุณเท่านั้นที่เห็นในคอนโซล Firebase
ดีบักใบรับรองการเซ็นชื่อ SHA-1 : จำเป็นต้องมี แฮช SHA-1 โดย Firebase Authentication (เมื่อใช้ Google Sign In หรือ หมายเลขโทรศัพท์ลงชื่อเข้าใช้ ) และ Firebase Dynamic Links
คลิก ลงทะเบียนแอป
เพิ่มไฟล์การกำหนดค่า Firebase
เพิ่มไฟล์การกำหนดค่า Firebase Android ในแอปของคุณ:
คลิก ดาวน์โหลด google-services.json เพื่อรับไฟล์กำหนดค่า Firebase Android ของคุณ (
)google-services.json ย้ายไฟล์ปรับแต่งของคุณไปที่ไดเร็กทอรีโมดูล (ระดับแอพ) ของแอพของคุณ
ไฟล์กำหนดค่า Firebase มีตัวระบุที่ไม่ซ้ำแต่ไม่เป็นความลับสำหรับโปรเจ็กต์ของคุณ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับไฟล์กำหนดค่านี้ โปรดไปที่ ทำความเข้าใจโปรเจ็กต์ Firebase
คุณดาวน์โหลด ไฟล์กำหนดค่า Firebase อีกครั้งได้ทุกเมื่อ
ตรวจสอบให้แน่ใจว่าชื่อไฟล์ปรับแต่งไม่ได้ต่อท้ายด้วยอักขระเพิ่มเติม เช่น
(2)
หากต้องการเปิดใช้งานผลิตภัณฑ์ Firebase ในแอปของคุณ ให้เพิ่ม ปลั๊กอิน google-services ลงในไฟล์ Gradle ของคุณ
ในไฟล์ Gradle ระดับราก (ระดับโปรเจ็กต์) ของคุณ (
build.gradle
) ให้เพิ่มกฎเพื่อรวมปลั๊กอิน Google Services Gradle ตรวจสอบว่าคุณมีที่เก็บ Maven ของ Google ด้วยbuildscript { repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository } dependencies { // ... // Add the following line: classpath 'com.google.gms:google-services:4.3.10' // Google Services plugin } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository // ... } }
ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ
app/build.gradle
) ใช้ปลั๊กอิน Google Services Gradle:apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
เพิ่ม Firebase SDK ให้กับแอปของคุณ
ใช้ Firebase Android BoM ประกาศการพึ่งพาไลบรารี Firebase Cloud Messaging Android ใน ไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติ
app/build.gradle
)เพื่อประสบการณ์ที่ดีที่สุดกับ Firebase Cloud Messaging เราขอแนะนำให้ เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase และเพิ่ม Firebase SDK สำหรับ Google Analytics ในแอปของคุณ
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.0.2') // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging' implementation 'com.google.firebase:firebase-analytics' }
เมื่อใช้ Firebase Android BoM แอปของคุณจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ
(ทางเลือก) ประกาศการพึ่งพาไลบรารี Firebase โดยไม่ ใช้ BoM
หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการพึ่งพา
โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลายรายการ ในแอปของคุณ เราขอแนะนำอย่างยิ่งให้ใช้ BoM เพื่อจัดการเวอร์ชันของไลบรารี ซึ่งจะทำให้มั่นใจได้ว่าทุกเวอร์ชันจะเข้ากันได้
dependencies { // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging:23.0.5' implementation 'com.google.firebase:firebase-analytics:21.0.0' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.0.2') // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
เมื่อใช้ Firebase Android BoM แอปของคุณจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ
(ทางเลือก) ประกาศการพึ่งพาไลบรารี Firebase โดยไม่ ใช้ BoM
หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการพึ่งพา
โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลายรายการ ในแอปของคุณ เราขอแนะนำอย่างยิ่งให้ใช้ BoM เพื่อจัดการเวอร์ชันของไลบรารี ซึ่งจะทำให้มั่นใจได้ว่าทุกเวอร์ชันจะเข้ากันได้
dependencies { // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging-ktx:23.0.5' implementation 'com.google.firebase:firebase-analytics-ktx:21.0.0' }
ซิงค์แอปของคุณเพื่อให้แน่ใจว่าการขึ้นต่อกันทั้งหมดมีเวอร์ชันที่จำเป็น
Gradle บิลด์ที่ใช้ปลั๊กอิน Android Gradle (AGP) v4.2 หรือเก่ากว่านั้นจำเป็นต้องเปิดใช้งานการรองรับ Java 8 มิฉะนั้น โปรเจ็กต์ Android เหล่านี้จะเกิดความล้มเหลวในการสร้างเมื่อเพิ่ม Firebase SDK
ในการแก้ไขความล้มเหลวของบิลด์นี้ คุณสามารถทำตามหนึ่งในสองตัวเลือก:
- เพิ่ม
compileOptions
ที่อยู่ในรายการจากข้อความแสดงข้อผิดพลาดไปยังไฟล์build.gradle
ระดับแอป ของคุณ - เพิ่ม
minSdkVersion
สำหรับโครงการ Android ของคุณเป็น 26 หรือสูงกว่า
เรียนรู้เพิ่มเติมเกี่ยวกับความล้มเหลวในการสร้าง นี้ในคำถามที่พบบ่อย นี้
- เพิ่ม
เข้าถึงโทเค็นการลงทะเบียน
ในการส่งข้อความไปยังอุปกรณ์เฉพาะ คุณจำเป็นต้องทราบโทเค็นการลงทะเบียนของอุปกรณ์นั้น เนื่องจากคุณจะต้องป้อนโทเค็นในช่องในคอนโซลการแจ้งเตือนเพื่อให้บทแนะนำนี้สมบูรณ์ โปรดอย่าลืมคัดลอกโทเค็นหรือเก็บไว้อย่างปลอดภัยหลังจากที่คุณดึงข้อมูล
เมื่อเริ่มต้นแอปของคุณเป็นครั้งแรก FCM SDK จะสร้างโทเค็นการลงทะเบียนสำหรับอินสแตนซ์แอปไคลเอ็นต์ หากคุณต้องการกำหนดเป้าหมายอุปกรณ์เครื่องเดียวหรือสร้างกลุ่มอุปกรณ์ คุณจะต้องเข้าถึงโทเค็นนี้โดยขยาย FirebaseMessagingService
และแทนที่ onNewToken
ส่วนนี้อธิบายวิธีการดึงโทเค็นและวิธีการตรวจสอบการเปลี่ยนแปลงโทเค็น เนื่องจากโทเค็นสามารถหมุนได้หลังจากเริ่มต้นเริ่มต้น ขอแนะนำอย่างยิ่งให้ดึงโทเค็นการลงทะเบียนที่อัปเดตล่าสุด
โทเค็นการลงทะเบียนอาจเปลี่ยนแปลงเมื่อ:
- แอพถูกกู้คืนในอุปกรณ์ใหม่
- ผู้ใช้ถอนการติดตั้ง/ติดตั้งแอปอีกครั้ง
- ผู้ใช้ล้างข้อมูลแอป
รับโทเค็นการลงทะเบียนปัจจุบัน
เมื่อคุณต้องการดึงโทเค็นปัจจุบัน ให้เรียก FirebaseMessaging.getInstance().getToken()
:
Java
FirebaseMessaging.getInstance().getToken() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (!task.isSuccessful()) { Log.w(TAG, "Fetching FCM registration token failed", task.getException()); return; } // Get new FCM registration token String token = task.getResult(); // Log and toast String msg = getString(R.string.msg_token_fmt, token); Log.d(TAG, msg); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } });
Kotlin+KTX
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -> if (!task.isSuccessful) { Log.w(TAG, "Fetching FCM registration token failed", task.exception) return@OnCompleteListener } // Get new FCM registration token val token = task.result // Log and toast val msg = getString(R.string.msg_token_fmt, token) Log.d(TAG, msg) Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() })
ตรวจสอบการสร้างโทเค็น
การเรียกกลับ onNewToken
ทุกครั้งที่มีการสร้างโทเค็นใหม่
Java
/** * There are two scenarios when onNewToken is called: * 1) When a new token is generated on initial app startup * 2) Whenever an existing token is changed * Under #2, there are three scenarios when the existing token is changed: * A) App is restored to a new device * B) User uninstalls/reinstalls the app * C) User clears app data */ @Override public void onNewToken(String token) { Log.d(TAG, "Refreshed token: " + token); // If you want to send messages to this application instance or // manage this apps subscriptions on the server side, send the // FCM registration token to your app server. sendRegistrationToServer(token); }
Kotlin+KTX
/** * Called if the FCM registration token is updated. This may occur if the security of * the previous token had been compromised. Note that this is called when the * FCM registration token is initially generated so this is where you would retrieve the token. */ override fun onNewToken(token: String) { Log.d(TAG, "Refreshed token: $token") // If you want to send messages to this application instance or // manage this apps subscriptions on the server side, send the // FCM registration token to your app server. sendRegistrationToServer(token) }
หลังจากที่คุณได้รับโทเค็นแล้ว คุณสามารถส่งไปยังเซิร์ฟเวอร์แอปของคุณและจัดเก็บโดยใช้วิธีการที่คุณต้องการ
ส่งข้อความแจ้งเตือนการทดสอบ
ติดตั้งและเรียกใช้แอปบนอุปกรณ์เป้าหมาย
ตรวจสอบให้แน่ใจว่าแอปอยู่ในพื้นหลังบนอุปกรณ์
เปิดตัว แต่งการแจ้งเตือน และเลือกการ แจ้งเตือนใหม่
ป้อนข้อความ
เลือก ส่งข้อความทดสอบ
ในฟิลด์ชื่อ เพิ่มโทเค็นการลงทะเบียน FCM ให้ป้อนโทเค็นการลงทะเบียนที่คุณได้รับในส่วนก่อนหน้าของคู่มือนี้
คลิก ทดสอบ
หลังจากที่คุณคลิก ทดสอบ อุปกรณ์ไคลเอ็นต์เป้าหมาย (โดยมีแอปอยู่ในพื้นหลัง) ควรได้รับการแจ้งเตือนในถาดการแจ้งเตือนของระบบ
สำหรับข้อมูลเชิงลึกเกี่ยวกับการส่งข้อความไปยังแอปของคุณ โปรดดู แดชบอร์ดการรายงาน FCM ซึ่งบันทึกจำนวนข้อความที่ส่งและเปิดบนอุปกรณ์ Apple และ Android พร้อมด้วยข้อมูลสำหรับ "การแสดงผล" (การแจ้งเตือนที่ผู้ใช้เห็น) สำหรับแอป Android
ขั้นตอนถัดไป
ส่งข้อความไปยังแอพเบื้องหน้า
เมื่อคุณส่งข้อความแจ้งเตือนสำเร็จในขณะที่แอปของคุณอยู่ในพื้นหลัง โปรดดูที่ รับข้อความในแอป Android เพื่อเริ่มต้นส่งไปยังแอปที่อยู่เบื้องหน้า
ไปไกลกว่าข้อความแจ้งเตือน
หากต้องการไปไกลกว่าข้อความแจ้งเตือนและเพิ่มลักษณะการทำงานขั้นสูงอื่นๆ ให้กับแอปของคุณ โปรดดูที่: