ในการเริ่มต้นใช้งาน 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 คลิก ดาวน์โหลด google-services.json เพื่อรับไฟล์กำหนดค่า Firebase Android
ย้ายไฟล์กำหนดค่าของคุณไปยังไดเรกทอรีรากของ โมดูล (ระดับแอป) ของแอป
ไฟล์กำหนดค่า Firebase มีตัวระบุที่ไม่ซ้ำใครแต่ไม่เป็นความลับสำหรับโครงการของคุณ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับไฟล์กำหนดค่านี้ โปรดไป ที่ ทำความเข้าใจโครงการ Firebase
คุณดาวน์โหลด ไฟล์กำหนดค่า Firebase อีกครั้งได้ทุกเมื่อ
ตรวจสอบให้แน่ใจว่าชื่อไฟล์ config ไม่ได้ต่อท้ายด้วยอักขระเพิ่มเติม เช่น
(2)
ในการทำให้ค่าในไฟล์กำหนด
เข้าถึงได้โดย Firebase SDK คุณต้องใช้ ปลั๊กอิน Gradle ของบริการ Google (google-services.json google-services
)ในไฟล์ Gradle ระดับรูท (ระดับโครงการ) (
<project>/build.gradle.kts
หรือ<project>/build.gradle
) ให้เพิ่มปลั๊กอินบริการของ Google เป็นการพึ่งพา:Kotlin
plugins { id("com.android.application") version "7.2.0" apply false // ... // Add the dependency for the Google services Gradle plugin id("com.google.gms.google-services") version "4.3.15" apply false }
Groovy
plugins { id 'com.android.application' version '7.2.0' apply false // ... // Add the dependency for the Google services Gradle plugin id 'com.google.gms.google-services' version '4.3.15' apply false }
ในไฟล์ Gradle ของ โมดูล (ระดับแอป) (โดยปกติคือ
<project>/<app-module>/build.gradle.kts
หรือ<project>/<app-module>/build.gradle
) ให้เพิ่มปลั๊กอินบริการของ Google:Kotlin
plugins { id("com.android.application") // Add the Google services Gradle plugin id("com.google.gms.google-services") // ... }
Groovy
plugins { id 'com.android.application' // Add the Google services Gradle plugin id 'com.google.gms.google-services' // ... }
เพิ่ม Firebase SDK ลงในแอปของคุณ
ใน ไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ
<project>/<app-module>/build.gradle.kts
หรือ<project>/<app-module>/build.gradle
) เพิ่มการพึ่งพาสำหรับ Firebase Cloud คลังข้อความ Android ขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมการกำหนดเวอร์ชันของไลบรารีเพื่อประสบการณ์ที่ดีที่สุดกับ Firebase Cloud Messaging เราขอแนะนำ ให้เปิดใช้ Google Analytics ในโครงการ Firebase และเพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปของคุณ
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add 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 { // Add 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.2.1") implementation("com.google.firebase:firebase-analytics-ktx:21.3.0") }
Java
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add 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 { // Add 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.2.1") implementation("com.google.firebase:firebase-analytics:21.3.0") }
ซิงค์โครงการ Android ของคุณกับไฟล์ Gradle
การสร้าง Gradle ที่ใช้ Android Gradle plugin (AGP) v4.2 หรือรุ่นก่อนหน้าจำเป็นต้องเปิดใช้งานการรองรับ Java 8 มิฉะนั้น โปรเจ็กต์ Android เหล่านี้จะล้มเหลวในการสร้างเมื่อเพิ่ม Firebase SDK
หากต้องการแก้ไขความล้มเหลวของบิลด์นี้ คุณสามารถทำตามหนึ่งในสองตัวเลือกต่อไปนี้:
- เพิ่ม
compileOptions
ที่แสดงรายการจากข้อความแสดงข้อผิดพลาดไปยังไฟล์build.gradle.kts
หรือbuild.gradle
ระดับแอป ของคุณ - เพิ่ม
minSdk
สำหรับโครงการ Android ของคุณเป็น 26 หรือสูงกว่า
เรียนรู้เพิ่มเติมเกี่ยวกับความล้มเหลวของการสร้างนี้ใน คำถามที่พบบ่อยนี้
- เพิ่ม
เข้าถึงโทเค็นการลงทะเบียน
หากต้องการส่งข้อความไปยังอุปกรณ์ใดอุปกรณ์หนึ่ง คุณต้องทราบโทเค็นการลงทะเบียนของอุปกรณ์นั้น เนื่องจากคุณจะต้องป้อนโทเค็นในช่องในคอนโซลการแจ้งเตือนเพื่อทำบทช่วยสอนนี้ให้เสร็จสมบูรณ์ ตรวจสอบให้แน่ใจว่าได้คัดลอกโทเค็นหรือเก็บไว้อย่างปลอดภัยหลังจากที่คุณเรียกคืน
ในการเริ่มต้นแอปของคุณครั้งแรก FCM SDK จะสร้างโทเค็นการลงทะเบียนสำหรับอินสแตนซ์ของแอปไคลเอ็นต์ หากคุณต้องการกำหนดเป้าหมายอุปกรณ์เครื่องเดียวหรือสร้างกลุ่มอุปกรณ์ คุณจะต้องเข้าถึงโทเค็นนี้โดยขยาย FirebaseMessagingService
และแทนที่ onNewToken
ส่วนนี้อธิบายวิธีการดึงโทเค็นและวิธีการตรวจสอบการเปลี่ยนแปลงโทเค็น เนื่องจากโทเค็นสามารถหมุนได้หลังจากเริ่มต้นครั้งแรก ขอแนะนำให้คุณดึงโทเค็นการลงทะเบียนที่อัปเดตล่าสุด
โทเค็นการลงทะเบียนอาจเปลี่ยนแปลงเมื่อ:
- แอปได้รับการกู้คืนบนอุปกรณ์ใหม่
- ผู้ใช้ถอนการติดตั้ง/ติดตั้งแอปอีกครั้ง
- ผู้ใช้ล้างข้อมูลแอป
รับโทเค็นการลงทะเบียนปัจจุบัน
เมื่อคุณต้องการดึงโทเค็นปัจจุบัน ให้เรียก FirebaseMessaging.getInstance().getToken()
:
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() })
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(); } });
ตรวจสอบการสร้างโทเค็น
การเรียกกลับ onNewToken
จะเริ่มทำงานทุกครั้งที่มีการสร้างโทเค็นใหม่
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) }
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(@NonNull 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); }
หลังจากที่คุณได้รับโทเค็นแล้ว คุณสามารถส่งไปยังเซิร์ฟเวอร์แอปของคุณและจัดเก็บโดยใช้วิธีการที่คุณต้องการ
ส่งข้อความแจ้งเตือนการทดสอบ
ติดตั้งและเรียกใช้แอพบนอุปกรณ์เป้าหมาย ในอุปกรณ์ Apple คุณจะต้องยอมรับคำขออนุญาตเพื่อรับการแจ้งเตือนระยะไกล
ตรวจสอบให้แน่ใจว่าแอปอยู่ในพื้นหลังของอุปกรณ์
ในคอนโซล Firebase ให้เปิด หน้าการรับส่งข้อความ
หากนี่คือข้อความแรกของคุณ ให้เลือก สร้างแคมเปญแรกของคุณ
- เลือก ข้อความแจ้งเตือนของ Firebase และเลือก สร้าง
มิฉะนั้น ในแท็บ แคมเปญ เลือก แคมเปญใหม่ จากนั้นเลือก การแจ้งเตือน
ป้อนข้อความ ฟิลด์อื่นๆ ทั้งหมดเป็นตัวเลือก
เลือก ส่งข้อความทดสอบ จากบานหน้าต่างด้านขวา
ในฟิลด์ที่มีป้ายกำกับ เพิ่มโทเค็นการลงทะเบียน FCM ให้ป้อนโทเค็นการลงทะเบียนที่คุณได้รับในส่วนก่อนหน้าของคู่มือนี้
เลือก ทดสอบ
หลังจากที่คุณเลือก ทดสอบ อุปกรณ์ไคลเอ็นต์เป้าหมาย (ที่มีแอปอยู่เบื้องหลัง) ควรได้รับการแจ้งเตือน
สำหรับข้อมูลเชิงลึกเกี่ยวกับการส่งข้อความไปยังแอปของคุณ โปรดดูแด ชบอร์ดการรายงาน FCM ซึ่งบันทึกจำนวนข้อความที่ส่งและเปิดบนอุปกรณ์ Apple และ Android พร้อมด้วยข้อมูลสำหรับ "การแสดงผล" (การแจ้งเตือนที่ผู้ใช้เห็น) สำหรับแอป Android
ขั้นตอนถัดไป
ส่งข้อความไปยังแอปเบื้องหน้า
เมื่อคุณส่งข้อความแจ้งเตือนสำเร็จในขณะที่แอปของคุณอยู่ในพื้นหลัง โปรดดู ที่ รับข้อความในแอป Android เพื่อเริ่มต้นส่งไปยังแอปเบื้องหน้า
ไปไกลกว่าข้อความแจ้งเตือน
หากต้องการไปไกลกว่าข้อความแจ้งเตือนและเพิ่มลักษณะการทำงานขั้นสูงอื่นๆ ให้กับแอปของคุณ โปรดดู: