ตั้งค่าแอปไคลเอ็นต์ Firebase Cloud Messaging บน Flutter

ทำตามขั้นตอนเหล่านี้เพื่อตั้งค่าไคลเอ็นต์ FCM บน Flutter

การตั้งค่าและข้อกำหนดเฉพาะแพลตฟอร์ม

ขั้นตอนที่จำเป็นบางส่วนขึ้นอยู่กับแพลตฟอร์มที่คุณกำหนดเป้าหมาย

ไอโอเอส+

เปิดใช้งานความสามารถของแอปใน Xcode

ก่อนที่แอปพลิเคชันของคุณจะเริ่มรับข้อความได้ คุณต้องเปิดใช้งานการแจ้งเตือนแบบพุชและโหมดพื้นหลังในโปรเจ็กต์ Xcode ของคุณ

  1. เปิดพื้นที่ทำงานโปรเจ็กต์ Xcode ของคุณ ( ios/Runner.xcworkspace )
  2. เปิดใช้งานการแจ้งเตือนแบบพุช
  3. เปิดใช้งาน การดึงข้อมูลพื้นหลัง และ โหมดการดำเนินการพื้นหลัง การแจ้งเตือนระยะไกล

อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ของคุณ

ก่อนที่คุณจะใช้ FCM ให้อัปโหลดใบรับรอง APN ไปยัง Firebase หากคุณยังไม่มีใบรับรอง APN ให้สร้างใบรับรองใน Apple Developer Member Center

  1. ภายในโปรเจ็กต์ของคุณในคอนโซล Firebase ให้เลือกไอคอนรูปเฟือง เลือก การตั้งค่าโปรเจ็กต์ จากนั้นเลือกแท็บ Cloud Messaging
  2. เลือกปุ่ม อัปโหลดใบรับรอง สำหรับใบรับรองการพัฒนา ใบรับรองการผลิต หรือทั้งสองอย่าง ต้องมีอย่างน้อยหนึ่งรายการ
  3. สำหรับใบรับรองแต่ละรายการ ให้เลือกไฟล์ .p12 และระบุรหัสผ่าน หากมี ตรวจสอบให้แน่ใจว่ารหัสชุดของใบรับรองนี้ตรงกับรหัสชุดของแอปของคุณ เลือก บันทึก

วิธีการแบบวิบวับ

หากต้องการใช้ปลั๊กอิน FCM Flutter บนอุปกรณ์ Apple คุณต้องไม่ปิดใช้งานวิธีการสลับ จำเป็นต้องมีการ Swizzling และหากไม่มี ฟีเจอร์หลักของ Firebase เช่น การจัดการโทเค็น FCM จะทำงานไม่ถูกต้อง

หุ่นยนต์

บริการ Google Play

ไคลเอนต์ FCM ต้องใช้อุปกรณ์ที่ใช้ Android 4.4 ขึ้นไปที่ติดตั้งบริการ Google Play ไว้ด้วย หรือใช้โปรแกรมจำลองที่ใช้ Android 4.4 พร้อม Google API โปรดทราบว่าคุณไม่จำกัดเพียงปรับใช้แอป Android ของคุณผ่าน Google Play Store

แอปที่ใช้ Play Services SDK ควรตรวจสอบอุปกรณ์เพื่อหา APK ของบริการ Google Play ที่เข้ากันได้ก่อนจะเข้าถึงฟีเจอร์ของบริการ Google Play ขอแนะนำให้ทำเช่นนี้ในสองที่: ในเมธอด onCreate() ของกิจกรรมหลัก และในเมธอด onResume() การเช็คอิน onCreate() ช่วยให้มั่นใจได้ว่าแอปจะไม่สามารถใช้งานได้หากไม่ตรวจสอบให้สำเร็จ การเช็คอิน onResume() ช่วยให้แน่ใจได้ว่าหากผู้ใช้กลับมาที่แอปที่รันอยู่ด้วยวิธีอื่น เช่น ผ่านปุ่มย้อนกลับ การตรวจสอบจะยังคงดำเนินการอยู่

หากอุปกรณ์ไม่มีบริการ Google Play เวอร์ชันที่เข้ากันได้ แอปของคุณสามารถเรียก GoogleApiAvailability.makeGooglePlayServicesAvailable() เพื่ออนุญาตให้ผู้ใช้ดาวน์โหลดบริการ Google Play จาก Play Store

เว็บ

กำหนดค่าข้อมูลรับรองเว็บด้วย FCM

เว็บอินเทอร์เฟซ FCM ใช้ข้อมูลรับรองเว็บที่เรียกว่าคีย์ "Voluntary Application Server Identification" หรือ "VAPID" เพื่ออนุญาตการส่งคำขอไปยังบริการพุชเว็บที่รองรับ หากต้องการสมัครรับข้อมูลแอปเพื่อแจ้งเตือน คุณจะต้องเชื่อมโยงคีย์ 1 คู่กับโปรเจ็กต์ Firebase ของคุณ คุณสามารถสร้างคู่คีย์ใหม่หรือนำเข้าคู่คีย์ที่มีอยู่ผ่านคอนโซล Firebase

สร้างคู่คีย์ใหม่
  1. เปิดแท็บ Cloud Messaging ของบานหน้าต่าง การตั้งค่า คอนโซล Firebase และเลื่อนไปที่ส่วน การกำหนดค่าเว็บ

  2. ในแท็บ ใบรับรอง Web Push คลิก สร้างคู่คีย์ คอนโซลจะแสดงการแจ้งเตือนว่าคู่คีย์ถูกสร้างขึ้น และแสดงสตริงคีย์สาธารณะและวันที่เพิ่ม

นำเข้าคู่คีย์ที่มีอยู่

หากคุณมีคู่คีย์ที่มีอยู่ซึ่งใช้กับเว็บแอปของคุณอยู่แล้ว คุณสามารถนำเข้าคู่คีย์ดังกล่าวไปยัง FCM เพื่อให้คุณสามารถเข้าถึงอินสแตนซ์เว็บแอปที่มีอยู่ผ่าน FCM API หากต้องการนำเข้าคีย์ คุณต้องมีสิทธิ์เข้าถึงโปรเจ็กต์ Firebase ระดับเจ้าของ นำเข้าคีย์สาธารณะและคีย์ส่วนตัวที่มีอยู่ในรูปแบบการเข้ารหัสที่ปลอดภัยของ base64 URL:

  1. เปิดแท็บ Cloud Messaging ของบานหน้าต่าง การตั้งค่า คอนโซล Firebase และเลื่อนไปที่ส่วน การกำหนดค่าเว็บ

  2. ในแท็บ ใบรับรอง Web Push ให้ค้นหาและเลือกข้อความลิงก์ "นำเข้าคู่คีย์ที่มีอยู่"

  3. ในกล่อง โต้ตอบนำเข้าคู่คีย์ ให้ระบุคีย์สาธารณะและคีย์ส่วนตัวของคุณในช่องที่เกี่ยวข้อง แล้วคลิก นำเข้า คอนโซลจะแสดงสตริงคีย์สาธารณะและวันที่เพิ่ม

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบของคีย์และวิธีการสร้าง โปรดดูที่ คีย์เซิร์ฟเวอร์แอปพลิเคชัน

ติดตั้งปลั๊กอิน FCM

  1. ติดตั้งและเริ่มต้นปลั๊กอิน Firebase สำหรับ Flutter หากคุณยังไม่ได้ดำเนินการ

  2. จากรากของโปรเจ็กต์ Flutter ของคุณ ให้รันคำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน:

    flutter pub add firebase_messaging
    
  3. เมื่อเสร็จแล้ว ให้สร้างแอปพลิเคชัน Flutter ของคุณใหม่:

    flutter run
    

เข้าถึงโทเค็นการลงทะเบียน

หากต้องการส่งข้อความไปยังอุปกรณ์ใดอุปกรณ์หนึ่ง คุณจำเป็นต้องทราบโทเค็นการลงทะเบียนของอุปกรณ์นั้น เนื่องจากคุณจะต้องป้อนโทเค็นในช่องในคอนโซลการแจ้งเตือนเพื่อทำบทแนะนำสอนการใช้งานนี้ โปรดอย่าลืมคัดลอกโทเค็นหรือเก็บไว้อย่างปลอดภัยหลังจากที่คุณเรียกข้อมูลแล้ว

หากต้องการดึงโทเค็นการลงทะเบียนปัจจุบันสำหรับอินสแตนซ์ของแอป ให้โทร getToken() หากไม่ได้รับอนุญาตให้แจ้งเตือน วิธีนี้จะขอสิทธิ์การแจ้งเตือนจากผู้ใช้ มิฉะนั้นจะส่งคืนโทเค็นหรือปฏิเสธอนาคตเนื่องจากมีข้อผิดพลาด

// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);

// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
 // APNS token is available, make FCM plugin API requests...
}

บนแพลตฟอร์มเว็บ ให้ส่งรหัสสาธารณะ VAPID ของคุณไปที่ getToken() :

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

หากต้องการรับการแจ้งเตือนทุกครั้งที่อัปเดตโทเค็น ให้สมัครรับสตรีม onTokenRefresh :

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

ป้องกันการเริ่มต้นอัตโนมัติ

เมื่อมีการสร้างโทเค็นการลงทะเบียน FCM ไลบรารีจะอัปโหลดตัวระบุและข้อมูลการกำหนดค่าไปยัง Firebase หากคุณต้องการป้องกันการสร้างโทเค็นอัตโนมัติ ให้ปิดใช้งานการเริ่มต้นอัตโนมัติ ณ เวลาที่สร้าง

ไอโอเอส

บน iOS ให้เพิ่มค่าข้อมูลเมตาลงใน Info.plist ของคุณ :

FirebaseMessagingAutoInitEnabled = NO

หุ่นยนต์

บน Android ให้ปิดใช้งานการรวบรวม Analytics และการเริ่มต้น FCM อัตโนมัติ (คุณต้องปิดใช้งานทั้งสองอย่าง) โดยการเพิ่มค่าข้อมูลเมตาเหล่านี้ลงใน 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 อีกครั้งเมื่อรันไทม์

หากต้องการเปิดใช้งานการเริ่มต้นอัตโนมัติสำหรับอินสแตนซ์ของแอปเฉพาะ ให้โทร setAutoInitEnabled() :

await FirebaseMessaging.instance.setAutoInitEnabled(true);

ค่านี้จะคงอยู่ตลอดทั้งการรีสตาร์ทแอปเมื่อตั้งค่าแล้ว

ขั้นตอนถัดไป

หลังจากตั้งค่าแอปไคลเอนต์แล้ว คุณก็พร้อมที่จะเริ่มส่งข้อความดาวน์สตรีมด้วย ตัวเขียนการแจ้งเตือน ดู ส่งข้อความทดสอบไปยังแอปที่ทำงานอยู่เบื้องหลัง

หากต้องการเพิ่มลักษณะการทำงานขั้นสูงอื่นๆ ให้กับแอปของคุณ คุณจะต้องมี การใช้งานเซิร์ฟเวอร์

จากนั้นในไคลเอนต์แอปของคุณ: