| เลือกแพลตฟอร์ม | iOS+ Android Web Flutter Unity C++ |
คู่มือนี้อธิบายวิธีเริ่มต้นใช้งาน Firebase Cloud Messaging ในแอปไคลเอ็นต์ Android เพื่อให้คุณส่งข้อความได้อย่างน่าเชื่อถือ
ไคลเอ็นต์ FCM ต้องใช้อุปกรณ์ที่ใช้ Android 7.0 ขึ้นไปซึ่งติดตั้งแอป Google Play Store ไว้ด้วย หรือโปรแกรมจำลองที่ใช้ Android 7.0 พร้อม Google APIs โปรดทราบว่าคุณไม่จำเป็นต้องติดตั้งใช้งานแอป Android ผ่าน Google Play Store เท่านั้น
ตั้งค่า SDK
เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้เพิ่ม
เราขอแนะนำอย่างยิ่งให้เปิดใช้ Google Analytics ในโปรเจ็กต์เพื่อให้ได้รับประสบการณ์การใช้งาน FCM ที่ดีที่สุด Google Analytics เป็นข้อกำหนดสำหรับการรายงานการส่งข้อความสำหรับ FCM
แก้ไขไฟล์ Manifest ของแอป
เพิ่มโค้ดต่อไปนี้ลงในไฟล์ Manifest ของแอป
- บริการที่ขยาย
FirebaseMessagingServiceคุณต้องดำเนินการนี้หากต้องการจัดการข้อความนอกเหนือจากการรับการแจ้งเตือนในแอปในเบื้องหลัง หากต้องการรับการแจ้งเตือนในแอปที่ทำงานอยู่เบื้องหน้า รับเพย์โหลดข้อมูล และอื่นๆ คุณต้องขยายบริการนี้ - (ไม่บังคับ) ภายในคอมโพเนนต์ของแอปพลิเคชัน องค์ประกอบข้อมูลเมตาเพื่อตั้งค่าไอคอนและสีการแจ้งเตือนเริ่มต้น Android จะใช้ค่าเหล่านี้เมื่อข้อความขาเข้าไม่ได้ตั้งค่าไอคอนหรือสีไว้อย่างชัดเจน
- (ไม่บังคับ) ตั้งแต่ Android 8.0 (ระดับ API 26) ขึ้นไป ระบบจะรองรับและแนะนำให้ใช้
ช่องทางการแจ้งเตือน FCM มีช่องทางการแจ้งเตือนเริ่มต้นพร้อมการตั้งค่าพื้นฐาน หากต้องการ
สร้างและใช้แชแนลเริ่มต้นของคุณเอง ให้ตั้งค่า
default_notification_channel_idเป็นรหัสของออบเจ็กต์แชแนลการแจ้งเตือนตามที่แสดง FCM จะใช้ค่านี้เมื่อใดก็ตามที่ข้อความขาเข้าไม่ได้ตั้งค่าแชแนลการแจ้งเตือนไว้อย่างชัดเจน ดูข้อมูลเพิ่มเติมได้ที่ จัดการช่องทางการแจ้งเตือน
<service android:name=".java.MyFirebaseMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
<!-- Set custom default icon. This is used when no icon is set for incoming notification messages. See README(https://goo.gl/l4GJaQ) for more. --> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_stat_ic_notification" /> <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming notification message. See README(https://goo.gl/6BKBk7) for more. --> <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/colorAccent" />
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" />
ขอสิทธิ์การแจ้งเตือนรันไทม์ใน Android 13 ขึ้นไป
Android 13 เปิดตัวสิทธิ์รันไทม์ใหม่สำหรับการแสดงการแจ้งเตือน การเปลี่ยนแปลงนี้ส่งผลต่อแอปทั้งหมดที่ทำงานบน Android 13 ขึ้นไปซึ่งใช้การแจ้งเตือน FCM
โดยค่าเริ่มต้น SDK FCM (เวอร์ชัน 23.0.6 ขึ้นไป) จะมีสิทธิ์ POST_NOTIFICATIONS ที่กำหนดไว้ในไฟล์ Manifest อย่างไรก็ตาม แอปของคุณจะต้องขอสิทธิ์เวอร์ชันรันไทม์โดยใช้ค่าคงที่ android.permission.POST_NOTIFICATIONS ด้วย แอปของคุณจะไม่ได้รับอนุญาตให้แสดงการแจ้งเตือนจนกว่าผู้ใช้จะให้สิทธิ์นี้
วิธีขอสิทธิ์รันไทม์ใหม่มีดังนี้
Kotlin
// Declare the launcher at the top of your Activity/Fragment: private val requestPermissionLauncher = registerForActivityResult( ActivityResultContracts.RequestPermission(), ) { isGranted: Boolean -> if (isGranted) { // FCM SDK (and your app) can post notifications. } else { // TODO: Inform user that that your app will not show notifications. } } private fun askNotificationPermission() { // This is only necessary for API level >= 33 (TIRAMISU) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED ) { // FCM SDK (and your app) can post notifications. } else if (shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS)) { // TODO: display an educational UI explaining to the user the features that will be enabled // by them granting the POST_NOTIFICATION permission. This UI should provide the user // "OK" and "No thanks" buttons. If the user selects "OK," directly request the permission. // If the user selects "No thanks," allow the user to continue without notifications. } else { // Directly ask for the permission requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) } } }
Java
// Declare the launcher at the top of your Activity/Fragment: private final ActivityResultLauncher<String> requestPermissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> { if (isGranted) { // FCM SDK (and your app) can post notifications. } else { // TODO: Inform user that that your app will not show notifications. } }); private void askNotificationPermission() { // This is only necessary for API level >= 33 (TIRAMISU) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) { // FCM SDK (and your app) can post notifications. } else if (shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS)) { // TODO: display an educational UI explaining to the user the features that will be enabled // by them granting the POST_NOTIFICATION permission. This UI should provide the user // "OK" and "No thanks" buttons. If the user selects "OK," directly request the permission. // If the user selects "No thanks," allow the user to continue without notifications. } else { // Directly ask for the permission requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS); } } }
โดยทั่วไป คุณควรแสดง UI ที่อธิบายให้ผู้ใช้ทราบถึงฟีเจอร์ที่จะเปิดใช้หากผู้ใช้ให้สิทธิ์แอปโพสต์การแจ้งเตือน UI นี้ควรมีตัวเลือกให้ผู้ใช้ยอมรับหรือปฏิเสธ เช่น ปุ่มตกลงและไม่เป็นไร หากผู้ใช้เลือกตกลง ให้ขอสิทธิ์โดยตรง หากผู้ใช้เลือกไม่เป็นไร ให้อนุญาตให้ผู้ใช้ดำเนินการต่อโดยไม่มีการแจ้งเตือน
ดูแนวทางปฏิบัติแนะนำเพิ่มเติมเกี่ยวกับเวลาที่แอปควรขอสิทธิ์ POST_NOTIFICATIONS จากผู้ใช้ได้ที่สิทธิ์รันไทม์สำหรับการแจ้งเตือน
สิทธิ์การแจ้งเตือนสำหรับแอปที่กำหนดเป้าหมายเป็น Android 12L (ระดับ API 32) หรือต่ำกว่า
Android จะขอสิทธิ์จากผู้ใช้โดยอัตโนมัติในครั้งแรกที่แอปสร้างช่องทางการแจ้งเตือน ตราบใดที่แอปทำงานอยู่เบื้องหน้า อย่างไรก็ตาม มีข้อควรระวังที่สำคัญเกี่ยวกับช่วงเวลาในการสร้างช่องและคำขอสิทธิ์ ดังนี้
- หากแอปสร้างช่องทางการแจ้งเตือนช่องทางแรกขณะทำงานอยู่เบื้องหลัง ซึ่ง SDK ของ FCM จะทำเมื่อได้รับการแจ้งเตือนจาก FCM ระบบ Android จะไม่อนุญาตให้แสดงการแจ้งเตือนและจะไม่แจ้งให้ผู้ใช้ให้สิทธิ์การแจ้งเตือนจนกว่าจะเปิดแอปในครั้งถัดไป ซึ่งหมายความว่าการแจ้งเตือนที่ได้รับก่อนที่แอปจะเปิดและผู้ใช้ยอมรับสิทธิ์จะหายไป
- เราขอแนะนำอย่างยิ่งให้อัปเดตแอปเพื่อกำหนดเป้าหมายเป็น Android 13 ขึ้นไปเพื่อใช้ประโยชน์จาก API ของแพลตฟอร์มในการขอสิทธิ์ หากเป็นไปไม่ได้ แอปควรสร้างแชแนลการแจ้งเตือนก่อนที่คุณจะส่งการแจ้งเตือนไปยังแอปเพื่อเรียกใช้กล่องโต้ตอบสิทธิ์การแจ้งเตือนและตรวจสอบว่าไม่มีการแจ้งเตือนใดสูญหาย ดูข้อมูลเพิ่มเติมได้ที่แนวทางปฏิบัติแนะนำสำหรับสิทธิ์การแจ้งเตือน
ไม่บังคับ: นำสิทธิ์ POST_NOTIFICATIONS ออก
โดยค่าเริ่มต้น SDK ของ FCM จะมีสิทธิ์ POST_NOTIFICATIONS
หากแอปของคุณไม่ได้ใช้ข้อความแจ้งเตือน (ไม่ว่าจะผ่านการแจ้งเตือนของ FCM ผ่าน SDK อื่น หรือโพสต์โดยตรงจากแอปของคุณ) และคุณไม่ต้องการให้แอปมีสิทธิ์ดังกล่าว คุณสามารถนำสิทธิ์ออกได้โดยใช้เครื่องหมาย remove ของเครื่องมือผสานไฟล์ Manifest โปรดทราบว่าการนำสิทธิ์นี้ออกจะป้องกันไม่ให้แสดงการแจ้งเตือนทั้งหมด ไม่ใช่แค่การแจ้งเตือนของ FCM เท่านั้น เพิ่มโค้ดต่อไปนี้ลงในไฟล์ Manifest ของแอป
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" tools:node="remove"/>
เข้าถึงรหัสการติดตั้ง Firebase
เมื่อเริ่มต้นแอปครั้งแรก SDK ของ FCM จะลงทะเบียนอินสแตนซ์แอปกับ FCM และแสดงผลตัวระบุสำหรับอินสแตนซ์แอป หากต้องการกำหนดเป้าหมายอินสแตนซ์แอปแต่ละรายการ คุณจะต้องเข้าถึงตัวระบุนี้โดยขยาย
FirebaseMessagingService และลบล้าง
onRegistered()
แนวทางปฏิบัติแนะนำคือให้ดึงข้อมูลตัวระบุที่อัปเดตล่าสุด เนื่องจากตัวระบุสามารถหมุนเวียนได้หลังจากการเริ่มต้นระบบครั้งแรก
เปิดใช้การลงทะเบียนผ่านรหัสการติดตั้ง Firebase
หากต้องการเปิดใช้การลงทะเบียนอินสแตนซ์แอปกับ FCM โดยใช้รหัสการติดตั้ง Firebase (FID) ให้เพิ่มแฟล็กข้อมูลเมตาต่อไปนี้ลงในไฟล์AndroidManifest.xml
<meta-data android:name="firebase_messaging_installation_id_enabled" android:value="true" />
ใช้ Callback onRegistered()
อินสแตนซ์ของแอปจะได้รับการกำหนดเป้าหมายโดยใช้รหัสการติดตั้ง Firebase (FID) เมื่อลงทะเบียนกับ FCM แล้ว หากต้องการดึงข้อมูล FID เมื่อลงทะเบียน ให้ใช้ Callback
onRegistered()
เมื่อลงทะเบียนอินสแตนซ์แอปแล้ว SDK ของ FCM จะตรวจสอบการเปลี่ยนแปลง FID โดยอัตโนมัติและเรียกใช้ Callback เมื่อตรวจพบการเปลี่ยนแปลง
เมื่อเปิดใช้การเริ่มต้นอัตโนมัติ SDK ของ FCM จะซิงค์กับแบ็กเอนด์ของ FCM โดยอัตโนมัติเพื่อให้การลงทะเบียนเป็นปัจจุบันอยู่เสมอ และเรียกใช้ Callback เพื่อให้แน่ใจว่าเซิร์ฟเวอร์แอปมีตัวระบุปัจจุบัน เพื่อป้องกันการสูญเสีย FID หรือ FID ที่ล้าสมัย คุณควรส่ง FID ไปยังเซิร์ฟเวอร์แอปทุกครั้งที่ทริกเกอร์ Callback นี้
Kotlin
/** * There are three scenarios when `onRegistered` is called: * 1) Every time a manual `register()` call finishes successfully * 2) Whenever the FID is changed and the app is re-registered with FCM via the new FID. * 3) Automatically on app startup or routine sync when auto-initialization is enabled. * Under #2, there are three scenarios when the existing FID is changed: * A) App is restored to a new device * B) User uninstalls/reinstalls the app * C) User clears app data */ override fun onRegistered(installationId: String) { Log.d(TAG, "Registered installation ID: $installationId") // Send the Firebase Installation ID to your app server. sendRegistrationToServer(installationId) }
Java
/** * There are three scenarios when `onRegistered` is called: * 1) Every time a manual `register()` call finishes successfully * 2) Whenever the FID is changed and the app is re-registered with FCM via the new FID * 3) Automatically on app startup or routine sync when auto-initialization is enabled. * Under #2, there are three scenarios when the existing FID is changed: * A) App is restored to a new device * B) User uninstalls/reinstalls the app * C) User clears app data */ @Override public void onRegistered(@NonNull String installationId) { Log.d(TAG, "Registered installation ID: " + installationId); // Send the Firebase Installation ID to your app server. sendRegistrationToServer(installationId); }
ลงทะเบียนด้วยตนเองเมื่อปิดใช้การเริ่มต้นอัตโนมัติ
หากคุณต้องปิดใช้การเริ่มต้นอัตโนมัติ SDK ของ FCM จะไม่ซิงค์หรือทริกเกอร์ Callback
onRegistered() โดยอัตโนมัติเมื่อเริ่มต้นระบบ เราขอแนะนำอย่างยิ่งให้เปิดใช้การเริ่มต้นอัตโนมัติอีกครั้งหลังจากได้รับสิทธิ์การแจ้งเตือนแล้ว ดูข้อมูลเพิ่มเติมได้ที่
เปิดใช้การเริ่มต้นอัตโนมัติอีกครั้ง
หากต้องปิดใช้การเริ่มต้นอัตโนมัติไว้ ให้เรียกใช้
FirebaseMessaging.getInstance().register() เมื่อเริ่มต้นแอปเพื่อทริกเกอร์การลงทะเบียนและการส่ง FID ผ่าน Callback
onRegistered() คุณสามารถเรียกใช้การเรียกนี้ภายในเมธอด
onCreate() ของ Activity หลักได้
Kotlin
// Trigger manual registration if auto-initialization is turned off. // Consider calling this every time the app starts to guarantee sync status. FirebaseMessaging.getInstance().register() .addOnCompleteListener(this) { task -> if (!task.isSuccessful()) { // Registration failed. Consider retrying the registration with exponential backoff. Log.w(TAG, "Failed to register with Firebase Cloud Messaging", task.exception) } // Success! The Firebase Installation ID can be used to target messages to this app // instance and will be delivered asynchronously to your `onRegistered()` callback. }
Java
// Trigger manual registration if auto-initialization is turned off. // Consider calling this every time the app starts to guarantee sync status. FirebaseMessaging.getInstance().register() .addOnCompleteListener(task -> { if (!task.isSuccessful()) { // Registration failed. Consider retrying the registration with exponential backoff. Log.w(TAG, "Failed to register with Firebase Cloud Messaging", task.exception) } // Success! The Firebase Installation ID can be used to target messages to this app // instance and will be delivered asynchronously to your `onRegistered()` callback. });
เข้าถึงโทเค็นการลงทะเบียน FCM (เลิกใช้งานแล้ว)
เมื่อเริ่มต้นแอปครั้งแรก SDK ของ FCM จะสร้างโทเค็นการลงทะเบียนสำหรับอินสแตนซ์แอปไคลเอ็นต์ หากต้องการกำหนดเป้าหมายอินสแตนซ์แอปเดียวหรือสร้างกลุ่มอุปกรณ์ คุณจะต้องเข้าถึงโทเค็นนี้โดยขยาย
FirebaseMessagingService และลบล้าง onNewToken เนื่องจากโทเค็นอาจมีการหมุนเวียนหลังจากการเริ่มต้นครั้งแรก เราขอแนะนำอย่างยิ่งให้คุณดึงข้อมูลโทเค็นการลงทะเบียนที่อัปเดตล่าสุด
โทเค็นการลงทะเบียนอาจเปลี่ยนแปลงในกรณีต่อไปนี้
- มีการกู้คืนแอปในอุปกรณ์เครื่องใหม่
- ผู้ใช้ถอนการติดตั้ง/ติดตั้งแอปอีกครั้ง
- ผู้ใช้ล้างข้อมูลแอป
ดึงข้อมูลโทเค็นการลงทะเบียนปัจจุบัน
เมื่อต้องการเรียกโทเค็นปัจจุบัน ให้เรียกใช้
FirebaseMessaging.getInstance().getToken():
Kotlin
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(); } });
ตรวจสอบการสร้างโทเค็น
Callback onNewToken จะเริ่มทำงานทุกครั้งที่มีการสร้างโทเค็นใหม่
Kotlin
/** * 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); }
หลังจากได้รับโทเค็นแล้ว คุณสามารถส่งโทเค็นไปยังเซิร์ฟเวอร์แอปและจัดเก็บโดยใช้วิธีที่ต้องการ
ตรวจหาบริการ Google Play
แอปที่ใช้ SDK ของบริการ Google Play ควรตรวจสอบอุปกรณ์เพื่อหา APK ของบริการ Google Play ที่เข้ากันได้ก่อนเข้าถึงฟีเจอร์ของบริการ Google Play เสมอ ดูข้อมูลเพิ่มเติมได้ที่ตั้งค่าบริการ Google Play เราขอแนะนำให้ดำเนินการนี้ใน 2 ตำแหน่ง ได้แก่ ในเมธอด onCreate() ของกิจกรรมหลัก และในเมธอด onResume() การตรวจสอบใน onCreate() ช่วยให้มั่นใจว่าแอปจะไม่สามารถใช้งานได้หากไม่ผ่านการตรวจสอบ การตรวจสอบใน onResume() จะช่วยให้มั่นใจว่าหากผู้ใช้กลับไปยังแอปที่ทำงานอยู่ผ่านวิธีอื่นๆ เช่น ผ่านปุ่มย้อนกลับ ระบบจะยังคงทำการตรวจสอบอยู่
หากอุปกรณ์ไม่มีบริการ Google Play เวอร์ชันที่เข้ากันได้ แอปของคุณจะเรียกใช้ GoogleApiAvailability.makeGooglePlayServicesAvailable() เพื่ออนุญาตให้ผู้ใช้ดาวน์โหลดบริการ Google Play จาก Play Store ได้
ป้องกันการเริ่มต้นอัตโนมัติ
เมื่อมีการสร้างการลงทะเบียน FCM ไลบรารีจะอัปโหลดตัวระบุและข้อมูลการกำหนดค่าไปยัง Firebase หากต้องการป้องกันการลงทะเบียนอัตโนมัติ ให้ปิดใช้การรวบรวมข้อมูลของ Analytics และการเริ่มต้น FCM อัตโนมัติ (คุณต้องปิดใช้ทั้ง 2 อย่าง) โดยเพิ่มค่าข้อมูลเมตาเหล่านี้ลงใน AndroidManifest.xml
<meta-data android:name="firebase_messaging_auto_init_enabled" android:value="false" /> <meta-data android:name="firebase_analytics_collection_enabled" android:value="false" />
เปิดใช้การเริ่มต้นอัตโนมัติอีกครั้ง
หากต้องการเปิดใช้การเริ่มต้น FCM อัตโนมัติอีกครั้ง ให้เรียกใช้รันไทม์ดังนี้
Kotlin
Firebase.messaging.isAutoInitEnabled = true
Java
FirebaseMessaging.getInstance().setAutoInitEnabled(true);
หากต้องการเปิดใช้การรวบรวม Analytics อีกครั้ง ให้เรียกใช้เมธอด setAnalyticsCollectionEnabled() ของคลาส FirebaseAnalytics เช่น
setAnalyticsCollectionEnabled(true);
ค่าเหล่านี้จะยังคงอยู่เมื่อรีสตาร์ทแอปเมื่อตั้งค่าแล้ว
ส่งข้อความแจ้งเตือน
หากต้องการตรวจสอบว่าตั้งค่าไคลเอ็นต์ Android อย่างถูกต้องแล้ว คุณสามารถส่งข้อความแจ้งเตือนทดสอบโดยทำตามวิธีการต่อไปนี้
ติดตั้งและเรียกใช้แอปในอุปกรณ์เป้าหมาย
ตรวจสอบว่าแอปทำงานอยู่เบื้องหลังในอุปกรณ์
ในคอนโซล Firebase ให้ไปที่ DevOps และการมีส่วนร่วม > การรับส่งข้อความ
สร้างแคมเปญ
หากนี่เป็นข้อความแรกของคุณ ให้ทำดังนี้
เลือกสร้างแคมเปญแรก
เลือกข้อความแจ้งเตือนของ Firebase แล้วเลือกสร้าง
หากคุณเคยสร้างแคมเปญไว้ก่อนหน้านี้ ให้ทำดังนี้
ในแท็บแคมเปญ ให้เลือกแคมเปญใหม่
คลิกการแจ้งเตือน
ป้อนข้อความ ส่วนฟิลด์อื่นๆ ทั้งหมดไม่บังคับ
เลือกส่งข้อความทดสอบจากแผงด้านขวา
ในช่องที่มีป้ายกำกับว่าเพิ่มโทเค็นการลงทะเบียน FCM ให้ป้อนโทเค็นการลงทะเบียนที่คุณได้รับในส่วนก่อนหน้าของคู่มือนี้
เลือกทดสอบ
อุปกรณ์ไคลเอ็นต์เป้าหมายซึ่งมีแอปทำงานอยู่เบื้องหลังควรได้รับการแจ้งเตือน
หากต้องการดูข้อมูลเชิงลึกเกี่ยวกับการส่งข้อความไปยังแอป ให้ไปที่แดชบอร์ดDevOps และการมีส่วนร่วม > การรับส่งข้อความ > รายงานในคอนโซล Firebase แดชบอร์ดนี้จะบันทึกจำนวนข้อความที่ส่งและเปิดในอุปกรณ์ Apple และอุปกรณ์ Android พร้อมกับข้อมูล "การแสดงผล" (การแจ้งเตือนที่ผู้ใช้เห็น) สำหรับแอป Android
ขั้นตอนถัดไป
หลังจากทำตามขั้นตอนการตั้งค่าเสร็จแล้ว คุณมีตัวเลือกต่อไปนี้ในการดำเนินการต่อกับ FCM สำหรับ Android