获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

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

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

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

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

iOS+

เปิดใช้งานความสามารถของแอพใน 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" เพื่ออนุญาตให้ส่งคำขอไปยังบริการพุชผ่านเว็บที่รองรับ หากต้องการติดตามแอปของคุณเพื่อรับการแจ้งเตือน คุณต้องเชื่อมโยงคีย์คู่หนึ่งกับโปรเจ็กต์ Firebase คุณสามารถสร้างคู่คีย์ใหม่หรือนำเข้าคู่คีย์ที่มีอยู่ผ่านคอนโซล Firebase

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

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

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

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

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

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

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

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

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

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

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

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

    flutter run
    

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

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

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

final fcmToken = await FirebaseMessaging.instance.getToken();

บนแพลตฟอร์มเว็บ ให้ส่งรหัสสาธารณะ 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

ใน 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 auto-init อีกครั้งเมื่อรันไทม์

หากต้องการเปิดใช้งาน auto-init สำหรับอินสแตนซ์ของแอปเฉพาะ ให้เรียก setAutoInitEnabled() :

await FirebaseMessaging.instance.setAutoInitEnabled(true);

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

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

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

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

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