หากต้องการเริ่มต้นใช้งาน FCM ให้สร้าง Use Case ที่ง่ายที่สุด ซึ่งก็คือการส่งข้อความการแจ้งเตือนทดสอบจาก เครื่องมือแต่งการแจ้งเตือนไปยังอุปกรณ์สำหรับพัฒนาแอปเมื่อแอปทำงานอยู่เบื้องหลังในอุปกรณ์ หน้านี้จะแสดงขั้นตอนทั้งหมดตั้งแต่การตั้งค่าไปจนถึงการยืนยัน ซึ่งอาจครอบคลุมขั้นตอนที่คุณทำไปแล้วหากคุณตั้งค่าแอปไคลเอ็นต์ Android สำหรับ FCM
ตั้งค่า SDK
ส่วนนี้จะกล่าวถึงงานที่คุณอาจทําเสร็จแล้วหากเปิดใช้ฟีเจอร์อื่นๆ ของ Firebase สําหรับแอปแล้ว
ก่อนเริ่มต้น
ติดตั้งหรืออัปเดต Android Studio เป็นเวอร์ชันล่าสุด
ตรวจสอบว่าโปรเจ็กต์เป็นไปตามข้อกำหนดต่อไปนี้ (โปรดทราบว่าผลิตภัณฑ์บางรายการอาจมีข้อกำหนดที่เข้มงวดกว่า)
- กำหนดเป้าหมายเป็น API ระดับ 21 (Lollipop) ขึ้นไป
- ใช้ Android 5.0 ขึ้นไป
- ใช้ Jetpack (AndroidX) ซึ่งรวมถึงการปฏิบัติตามข้อกำหนดเวอร์ชันต่อไปนี้
com.android.tools.build:gradle
v7.3.0 ขึ้นไปcompileSdkVersion
28 ขึ้นไป
ตั้งค่าอุปกรณ์จริงหรือใช้โปรแกรมจำลองเพื่อเรียกใช้แอป
โปรดทราบว่า SDK ของ Firebase ที่ต้องอาศัยบริการ Google Play กำหนดให้อุปกรณ์หรือโปรแกรมจำลองต้องติดตั้งบริการ Google Playลงชื่อเข้าใช้ Firebase ด้วยบัญชี Google
หากยังไม่มีโปรเจ็กต์ Android และต้องการลองใช้ผลิตภัณฑ์ Firebase เพียงอย่างเดียว คุณสามารถดาวน์โหลดตัวอย่างการเริ่มต้นใช้งานอย่างรวดเร็วของเรา
สร้างโปรเจ็กต์ Firebase
คุณต้องสร้างโปรเจ็กต์ Firebase เพื่อเชื่อมต่อกับแอป Android ก่อนจึงจะเพิ่ม Firebase ในแอปได้ โปรดไปที่ทําความเข้าใจโปรเจ็กต์ Firebase เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับโปรเจ็กต์ Firebase
ลงทะเบียนแอปกับ Firebase
หากต้องการใช้ Firebase ในแอป Android คุณต้องลงทะเบียนแอปกับโปรเจ็กต์ Firebase การลงทะเบียนแอปมักเรียกว่า "การเพิ่ม" แอปลงในโปรเจ็กต์
ไปที่คอนโซล Firebase
ตรงกลางหน้าภาพรวมโปรเจ็กต์ ให้คลิกไอคอน Android (
) หรือเพิ่มแอปเพื่อเปิดเวิร์กโฟลว์การตั้งค่าป้อนชื่อแพ็กเกจของแอปในช่องชื่อแพ็กเกจ Android
(ไม่บังคับ) ป้อนข้อมูลอื่นๆ ของแอป ได้แก่ชื่อเล่นของแอปและใบรับรองการแก้ไขข้อบกพร่อง SHA-1
คลิกลงทะเบียนแอป
เพิ่มไฟล์การกําหนดค่า Firebase
ดาวน์โหลดแล้วเพิ่มไฟล์การกําหนดค่า Firebase สำหรับ Android (
) ลงในแอปgoogle-services.json คลิกดาวน์โหลด google-services.json เพื่อรับไฟล์การกําหนดค่า Firebase สำหรับ Android
ย้ายไฟล์การกําหนดค่าไปยังไดเรกทอรีรากโมดูล (ระดับแอป) ของแอป
หากต้องการให้ Firebase SDK เข้าถึงค่าใน
ไฟล์การกําหนดค่าได้ คุณต้องมีปลั๊กอิน Gradle ของบริการ Google (google-services.json google-services
)ในไฟล์ Gradle ระดับรูท (ระดับโปรเจ็กต์) (
<project>/build.gradle.kts
หรือ<project>/build.gradle
) ให้เพิ่มปลั๊กอินบริการของ Google เป็น Dependency ดังนี้Kotlin
plugins { id("com.android.application") version "7.3.0" apply false // ... // Add the dependency for the Google services Gradle plugin id("com.google.gms.google-services") version "4.4.2" apply false }
Groovy
plugins { id 'com.android.application' version '7.3.0' apply false // ... // Add the dependency for the Google services Gradle plugin id 'com.google.gms.google-services' version '4.4.2' 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
) ให้เพิ่มทรัพยากร Dependency สำหรับคลัง Firebase Cloud Messaging สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมการกำหนดเวอร์ชันของไลบรารีเราขอแนะนําให้เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase และเพิ่ม Firebase SDK สําหรับ Google Analytics ลงในแอปเพื่อให้ได้รับประสบการณ์การใช้งาน Firebase Cloud Messaging ที่ดีที่สุด
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.6.0")) // 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 แต่ละเวอร์ชันในบรรทัดของ Dependency
โปรดทราบว่าหากคุณใช้ไลบรารี 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:24.1.0") implementation("com.google.firebase:firebase-analytics:22.1.2") }
ซิงค์โปรเจ็กต์ Android กับไฟล์ Gradle
เข้าถึงโทเค็นการลงทะเบียน
หากต้องการส่งข้อความไปยังอุปกรณ์ที่ต้องการ คุณต้องทราบโทเค็นการลงทะเบียนของอุปกรณ์นั้น เนื่องจากคุณจะต้องป้อนโทเค็นในช่องในคอนโซลการแจ้งเตือนเพื่อทําตามบทแนะนํานี้ให้เสร็จสมบูรณ์ โปรดคัดลอกโทเค็นหรือจัดเก็บโทเค็นอย่างปลอดภัยหลังจากดึงข้อมูลแล้ว
เมื่อเริ่มต้นใช้งานแอปครั้งแรก 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
callback จะเริ่มต้นทุกครั้งที่มีการสร้างโทเค็นใหม่
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 เพื่อเริ่มต้นส่งไปยังแอปที่ทำงานอยู่เบื้องหน้า
ใช้ประโยชน์จากข้อความการแจ้งเตือนได้มากกว่า
หากต้องการดำเนินการเพิ่มเติมจากข้อความการแจ้งเตือนและเพิ่มลักษณะการทำงานขั้นสูงอื่นๆ ลงในแอป โปรดดูที่หัวข้อต่อไปนี้