เพิ่มข้อความ Push ในแอป iOS

1. บทนำ

อัปเดตล่าสุด: 2020-1-6

Firebase Cloud Messaging (FCM) เป็นโซลูชันการรับส่งข้อความข้ามแพลตฟอร์มที่ช่วยให้คุณส่งข้อความได้อย่างน่าเชื่อถือโดยไม่มีค่าใช้จ่าย

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

หลักการทำงาน

การติดตั้งใช้งาน FCM มีคอมโพเนนต์หลัก 2 อย่างสำหรับการส่งและรับ ได้แก่

  1. สภาพแวดล้อมที่เชื่อถือได้ เช่น Cloud Functions สำหรับ Firebase หรือเซิร์ฟเวอร์แอปที่จะใช้สร้าง กำหนดเป้าหมาย และส่งข้อความ
  2. แอปไคลเอ็นต์ iOS, Android หรือเว็บ (JavaScript) ที่รับข้อความผ่านบริการรับส่งเฉพาะแพลตฟอร์มที่เกี่ยวข้อง

ภาพรวมสถาปัตยกรรมของ FCM

dc54f5190ee8926a.png

FCM ใช้ชุดคอมโพเนนต์ต่อไปนี้ในการสร้าง ส่ง และรับข้อความ

  1. เครื่องมือในการเขียนหรือสร้างคำขอส่งข้อความ Notifications Composer มีตัวเลือกที่อิงตาม GUI สำหรับสร้างคำขอการแจ้งเตือน หากต้องการระบบอัตโนมัติเต็มรูปแบบและการรองรับข้อความทุกประเภท คุณต้องสร้างคำขอข้อความในสภาพแวดล้อมของเซิร์ฟเวอร์ที่เชื่อถือได้ซึ่งรองรับ Firebase Admin SDK หรือโปรโตคอลเซิร์ฟเวอร์ FCM สภาพแวดล้อมนี้อาจเป็น Cloud Functions for Firebase, Google App Engine หรือเซิร์ฟเวอร์แอปของคุณเอง
  2. แบ็กเอนด์ของ FCM ซึ่ง (นอกเหนือจากฟังก์ชันอื่นๆ) จะยอมรับคำขอข้อความ ทำการกระจายข้อความผ่านหัวข้อ และสร้างข้อมูลเมตาของข้อความ เช่น รหัสข้อความ
  3. เลเยอร์การรับส่งระดับแพลตฟอร์ม ซึ่งกำหนดเส้นทางข้อความไปยังอุปกรณ์เป้าหมาย จัดการการนำส่งข้อความ และใช้การกำหนดค่าเฉพาะแพลตฟอร์มในกรณีที่เหมาะสม เลเยอร์การรับส่งนี้ประกอบด้วย
  • เลเยอร์การรับส่งข้อมูล Android (ATL) สำหรับอุปกรณ์ Android ที่มีบริการ Google Play
  • บริการข้อความ Push ของ Apple (APNs) สำหรับอุปกรณ์ iOS
  • โปรโตคอลการแจ้งเตือนแบบพุชบนเว็บสำหรับเว็บแอป
  1. SDK ของ FCM ในอุปกรณ์ของผู้ใช้ ซึ่งจะแสดงการแจ้งเตือนหรือจัดการข้อความตามสถานะเบื้องหน้า/เบื้องหลังของแอปและตรรกะของแอปพลิเคชันที่เกี่ยวข้อง

สิ่งที่คุณจะสร้าง

ใน Codelab นี้ คุณจะได้เพิ่มการแจ้งเตือนแบบพุชไปยังแอป iOS ตัวอย่างด้วย FCM

สิ่งที่คุณจะได้เรียนรู้

  • วิธีสมัครรับและยกเลิกการสมัครรับข้อความพุชของผู้ใช้
  • วิธีจัดการข้อความ Push ขาเข้า
  • วิธีแสดงการแจ้งเตือน
  • วิธีตอบสนองต่อการคลิกการแจ้งเตือน

สิ่งที่คุณต้องมี

  • Xcode 11.0 ขึ้นไป
  • CocoaPods 1.9.0 ขึ้นไป
  • บัญชีนักพัฒนาแอปของ Apple
  • อุปกรณ์ iOS จริงเพื่อเรียกใช้แอป
  • ความรู้พื้นฐานเกี่ยวกับ Swift

2. การเริ่มตั้งค่า

ดาวน์โหลดโค้ดตัวอย่าง

ใน Codelab นี้ คุณจะได้สร้างแอปทดสอบของคุณเอง แต่หากต้องการดูและเรียกใช้แอปตัวอย่างที่มีอยู่ คุณสามารถดาวน์โหลดโค้ดตัวอย่าง Quickstart ได้

คุณขอรับตัวอย่างได้ 2 วิธีดังนี้

  • โคลนที่เก็บ Git
$ git clone https://github.com/firebase/quickstart-ios.git
  • ดาวน์โหลดไฟล์ ZIP โดยทำดังนี้

หากดาวน์โหลดแหล่งข้อมูลเป็นไฟล์ ZIP การแตกไฟล์จะทำให้คุณได้โฟลเดอร์รูท quickstart-ios

สร้างแอปใหม่

สร้างแอปทดสอบของคุณเองโดยทำตามขั้นตอนต่อไปนี้ (ขั้นตอนด้านล่างอยู่ใน Xcode 12.3)

  1. เปิด XCode แล้วเลือก Create a new Xcode project
  2. เลือกแอป แล้วคลิกถัดไป

d6a3fc16ba7d4f72.png

  1. ป้อนชื่อผลิตภัณฑ์ (เช่น MessagingExample)
  2. เลือกทีม (หากยังไม่ได้สร้างทีม ให้กำหนดค่าในบัญชีนักพัฒนาแอปของ Apple)
  3. ป้อนตัวระบุองค์กร (เช่น com.your-name)
  4. ป้อนตัวระบุชุด (เช่น com.your-name.MessagingExample ซึ่งควรไม่ซ้ำกันในแอป iOS ทั้งหมด)
  5. เลือกสตอรีบอร์ดในเมนูแบบเลื่อนลงอินเทอร์เฟซ
  6. เลือก UIKit App Delegate ในเมนูแบบเลื่อนลงวงจรของแอป
  7. เลือก Swift ในภาษา
  8. คลิกถัดไป

a07d72459f65dcc1.png

คุณจะต้องใช้ตัวระบุแพ็กเกจเมื่อสร้างคีย์ APN และลงทะเบียนแอปกับโปรเจ็กต์ Firebase

3. การกำหนดค่า APNs

สร้างคีย์การตรวจสอบสิทธิ์

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

วิธีสร้างคีย์การตรวจสอบสิทธิ์

  1. ในบัญชีนักพัฒนาแอป ให้ไปที่ใบรับรอง ตัวระบุ และโปรไฟล์ แล้วไปที่คีย์

708ac6e36366b11f.png

  1. คลิกปุ่มเพิ่ม (+) ที่มุมบนขวา

e71849c7e6e4e714.png

  1. ป้อนคำอธิบายสำหรับคีย์การตรวจสอบสิทธิ์ APNs
  2. ในส่วนบริการจัดการคีย์ ให้เลือกช่องทำเครื่องหมาย APNs แล้วคลิกต่อไป

65c9930dc2d8bf1c.png

  1. คลิกลงทะเบียน แล้วคลิกดาวน์โหลด บันทึกคีย์ไว้ในที่ปลอดภัย นี่เป็นการดาวน์โหลดแบบครั้งเดียวและจะเรียกข้อมูลคีย์ในภายหลังไม่ได้

bda45effb420b7c2.png

สร้างรหัสแอป

รหัสแอปคือตัวระบุที่ระบุแอปอย่างไม่ซ้ำกัน โดยทั่วไปจะแสดงด้วยโดเมนที่กลับด้าน

  1. ไปที่ศูนย์สมาชิกนักพัฒนาซอฟต์แวร์ของ Apple แล้วลงชื่อเข้าใช้
  2. ไปที่ใบรับรอง ตัวระบุ และโปรไฟล์
  3. ไปที่ตัวระบุ
  4. คลิกปุ่ม + เพื่อสร้างรหัสแอปใหม่ 2a325a323b652124.png
  5. เลือกปุ่มตัวเลือกรหัสแอป แล้วคลิกต่อไป

fb24e3374de047a3.png

  1. เลือกแอป แล้วคลิกต่อไป

cca5eb32736f947.png

  1. วิธีสร้าง App ID ใหม่
  2. ป้อนชื่อสำหรับ App ID
  3. ป้อนรหัสทีม ค่านี้ต้องตรงกับรหัสทีมในแท็บการเป็นสมาชิก
  4. ในส่วนคำต่อท้ายรหัสแอป ให้เลือกรหัสแอปที่ชัดเจน แล้วป้อนรหัสชุด 7363c4d1962b486d.png
  5. ในส่วนบริการของแอป ให้ตรวจสอบว่าได้เลือกการแจ้งเตือนแบบพุชแล้ว 8e158017bc31fd46.png
  6. คลิกต่อไปและตรวจสอบว่าข้อมูลที่คุณป้อนถูกต้องแล้ว
  7. ค่าของตัวระบุควรตรงกับการต่อกันของค่ารหัสทีมและรหัสชุด
  8. ข้อความ Push ควรกำหนดค่าได้
  9. คลิก Register เพื่อสร้างรหัสแอป

สร้างโปรไฟล์

หากต้องการทดสอบแอปขณะที่กำลังพัฒนา คุณต้องมีโปรไฟล์สำหรับการพัฒนาเพื่อให้สิทธิ์อุปกรณ์ในการเรียกใช้แอปที่ยังไม่ได้เผยแพร่ใน App Store

  1. ไปที่ศูนย์สมาชิกนักพัฒนาซอฟต์แวร์ของ Apple แล้วลงชื่อเข้าใช้
  2. ไปที่ใบรับรอง ตัวระบุ และโปรไฟล์
  3. ในเมนูแบบเลื่อนลงที่มุมซ้ายบน ให้เลือก iOS, tvOS, watchOS หากยังไม่ได้เลือก จากนั้นไปที่โปรไฟล์
  4. คลิกปุ่ม + เพื่อสร้างโปรไฟล์ใหม่ 100604ffceac6a1d.png
  5. เลือกการพัฒนาแอป iOS เป็นประเภทโปรไฟล์การจัดสรร แล้วคลิกต่อไป

7d4d20883a4c4142.png

  1. ในเมนูแบบเลื่อนลง ให้เลือกรหัสแอปที่ต้องการใช้ แล้วคลิกต่อไป
  2. เลือกใบรับรองการพัฒนา iOS ของ App ID ที่คุณเลือกในขั้นตอนก่อนหน้า แล้วคลิกต่อไป
  3. เลือกอุปกรณ์ iOS ที่ต้องการรวมไว้ใน Provisioning Profile แล้วคลิกดำเนินการต่อ อย่าลืมเลือกอุปกรณ์ทั้งหมดที่ต้องการใช้ในการทดสอบ
  4. ป้อนชื่อสำหรับโปรไฟล์การจัดสรรนี้ (เช่น MessagingExampleProfile) แล้วคลิกสร้าง

7346087f5a0179f2.png

  1. คลิกดาวน์โหลดเพื่อบันทึก Provisioning Profile ลงใน Mac

548c8c27f3ce5bca.png

  1. ดับเบิลคลิกไฟล์ Provisioning Profile เพื่อติดตั้ง

4. การเพิ่ม Firebase ลงในโปรเจ็กต์ iOS

สร้างโปรเจ็กต์ Firebase

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

  1. ในคอนโซล Firebase ให้คลิกเพิ่มโปรเจ็กต์ แล้วเลือกหรือป้อนชื่อโปรเจ็กต์ caf43df5174a530e.png

หากมีโปรเจ็กต์ Google Cloud Platform (GCP) อยู่แล้ว คุณสามารถเลือกโปรเจ็กต์จากเมนูแบบเลื่อนลงเพื่อเพิ่มทรัพยากร Firebase ลงในโปรเจ็กต์นั้นได้

  1. (ไม่บังคับ) หากสร้างโปรเจ็กต์ใหม่ คุณจะแก้ไขรหัสโปรเจ็กต์ได้

Firebase จะกำหนดรหัสที่ไม่ซ้ำกันให้กับโปรเจ็กต์ Firebase โดยอัตโนมัติ ไปที่ทำความเข้าใจโปรเจ็กต์ Firebase เพื่อดูวิธีที่ Firebase ใช้รหัสโปรเจ็กต์

  1. คลิกต่อไป
  2. ตั้งค่า Google Analytics สําหรับโปรเจ็กต์ ซึ่งจะช่วยให้คุณได้รับประสบการณ์การใช้งานที่ดีที่สุดเมื่อใช้ผลิตภัณฑ์ Firebase ต่อไปนี้
  • Firebase Crashlytics
  • Firebase Predictions
  • Firebase Cloud Messaging
  • การรับส่งข้อความในแอป Firebase
  • การกำหนดค่าระยะไกลของ Firebase
  • Firebase A/B Testing

เมื่อได้รับข้อความแจ้ง ให้เลือกใช้บัญชี Google Analytics ที่มีอยู่หรือสร้างบัญชีใหม่ หากเลือกสร้างบัญชีใหม่ ให้เลือกสถานที่ตั้งการรายงานของ Analytics จากนั้นยอมรับการตั้งค่าการแชร์ข้อมูลและข้อกำหนดของ Google Analytics สำหรับโปรเจ็กต์

ffbcd801d08078b2.png

473c89d0a404f066.png

  1. คลิกสร้างโปรเจ็กต์ (หรือเพิ่ม Firebase หากคุณใช้โปรเจ็กต์ GCP ที่มีอยู่)

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

ลงทะเบียนแอปกับ Firebase

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

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

  1. ไปที่คอนโซล Firebase
  2. ที่กึ่งกลางหน้าภาพรวมโปรเจ็กต์ ให้คลิกไอคอน iOS เพื่อเปิดเวิร์กโฟลว์การตั้งค่า

หากเพิ่มแอปไปยังโปรเจ็กต์ Firebase แล้ว ให้คลิกเพิ่มแอปเพื่อแสดงตัวเลือกแพลตฟอร์ม

549e710c09b601ea.png

  1. ป้อนรหัสชุดของแอปในช่องรหัสชุด iOS
  2. (ไม่บังคับ) ป้อนข้อมูลแอปอื่นๆ ได้แก่ ชื่อเล่นของแอปและรหัส App Store
  3. คลิกลงทะเบียนแอป

7a2bd11d13365c.png

เพิ่มไฟล์กำหนดค่า Firebase

  1. คลิกดาวน์โหลด GoogleService-Info.plist เพื่อรับไฟล์การกำหนดค่า Firebase iOS (GoogleService-Info.plist) 625594126a8943bf.png
  2. ย้ายไฟล์การกำหนดค่าไปยังรูทของโปรเจ็กต์ Xcode หากได้รับข้อความแจ้ง ให้เลือกเพิ่มไฟล์กำหนดค่าไปยังเป้าหมายทั้งหมด

aa100af06c7a74e5.png

หากมีรหัส Bundle หลายรายการในโปรเจ็กต์ คุณต้องเชื่อมโยงรหัส Bundle แต่ละรายการกับแอปที่ลงทะเบียนในคอนโซล Firebase เพื่อให้แต่ละแอปมีไฟล์ GoogleService-Info.plist ของตัวเองได้

ปิด XCode

เพิ่ม Firebase SDK ลงในแอป

เราขอแนะนำให้ใช้ CocoaPods เพื่อติดตั้งไลบรารี Firebase อย่างไรก็ตาม หากไม่ต้องการใช้ CocoaPods คุณสามารถผสานรวมเฟรมเวิร์ก SDK โดยตรงหรือใช้ Swift Package Manager เวอร์ชันเบต้าได้

  1. หากยังไม่มี Podfile ให้สร้างโดยเรียกใช้คำสั่งต่อไปนี้ หากคุณใช้ตัวอย่างการเริ่มต้นอย่างรวดเร็ว โปรเจ็กต์ Xcode และ Podfile (พร้อม Pod) จะมีอยู่แล้ว
$ cd MessagingExample
$ pod init
  1. เพิ่ม Pod ของ Firebase ที่ต้องการใช้ในแอปไปยัง Podfile

คุณเพิ่มผลิตภัณฑ์ Firebase ที่รองรับลงในแอป iOS ได้

ในตัวอย่าง Quickstart เราได้เพิ่ม SDK ของ Google Analytics และ Firebase Cloud Messaging แล้ว

# Add the Firebase pod for Google Analytics
pod 'Firebase/Analytics'

# Add the pod for Firebase Cloud Messaging
pod 'Firebase/Messaging'
  1. ติดตั้งพ็อด แล้วเปิดไฟล์ .xcworkspace เพื่อดูโปรเจ็กต์ใน Xcode
$ pod install
  1. เปิด MessagingExample.xcworkspace แล้วคลิกถัดไปในคอนโซล Firebase 1c5adae5b6e81655.png

เริ่มต้น Firebase ในแอป

คุณจะต้องเพิ่มโค้ดการเริ่มต้น Firebase ลงในแอปพลิเคชัน

นำเข้าโมดูล Firebase และกำหนดค่าอินสแตนซ์ที่แชร์ (ในตัวอย่าง Quickstart มีการนำเข้าโมดูล Firebase อยู่แล้ว)

  1. นำเข้าโมดูล Firebase ใน UIApplicationDelegate ดังนี้

AppDelegate.swift

import UIKit
import Firebase // Add this line
  1. กำหนดค่าอินสแตนซ์ที่แชร์ของ FirebaseApp โดยปกติจะอยู่ในเมธอด application:didFinishLaunchingWithOptions: ของแอป

AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  FirebaseApp.configure() // Add this line
  return true
}
  1. คลิกถัดไปในคอนโซล Firebase df93274c5922fd55.png
  2. ระบบจะเพิ่ม Firebase SDK ลงในแอปของคุณ คลิกไปยังคอนโซล 21b24098a470aa40.png

5. การกำหนดค่าไคลเอ็นต์ FCM

อัปโหลดคีย์การตรวจสอบสิทธิ์ APNs

อัปโหลดคีย์การตรวจสอบสิทธิ์ APNs ไปยัง Firebase

  1. ภายในโปรเจ็กต์ในคอนโซล Firebase ให้เลือกไอคอนรูปเฟือง เลือกการตั้งค่าโปรเจ็กต์ แล้วเลือกแท็บ Cloud Messaging

e1fcc1f1ace520e9.png

  1. ในคีย์การตรวจสอบสิทธิ์ APNs ภายในการกำหนดค่าแอป Apple ให้คลิกปุ่มอัปโหลดเพื่ออัปโหลดคีย์การตรวจสอบสิทธิ์สำหรับการพัฒนา คีย์การตรวจสอบสิทธิ์สำหรับการใช้งานจริง หรือทั้ง 2 อย่าง โดยต้องระบุอย่างน้อย 1 รายการ

87ee87266eab43c4.png

  1. เรียกดูตำแหน่งที่คุณบันทึกคีย์ เลือกคีย์ แล้วคลิกเปิด เพิ่มรหัสคีย์สำหรับคีย์ (มีอยู่ในใบรับรอง ตัวระบุ และโปรไฟล์ในศูนย์สมาชิกนักพัฒนาซอฟต์แวร์ของ Apple) แล้วคลิกอัปโหลด 1491c513285d06e0.png

ลงทะเบียนรับการแจ้งเตือนระยะไกล

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

ในตัวอย่างการเริ่มต้นใช้งานด่วน ระบบจะเพิ่ม registerForRemoteNotifications ไว้ให้แล้ว

AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  FirebaseApp.configure()
  // [START register for remote notifications]
  if #available(iOS 10.0, *) {
    // For iOS 10 display notification (sent via APNS)
    UNUserNotificationCenter.current().delegate = self
        
    let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
    UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: {_, _ in })
  } else {
    let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
    application.registerUserNotificationSettings(settings)
  }

  application.registerForRemoteNotifications()
  // [END register for remote notifications]
  return true
}

กำหนดพร็อพเพอร์ตี้ผู้มอบสิทธิ์ของ UNUserNotificationCenter โดยเพิ่มบรรทัดต่อไปนี้ที่ส่วนท้ายของ AppDelegate.swift

AppDelegate.swift

@available(iOS 10, *)
extension AppDelegate : UNUserNotificationCenterDelegate {

  // Receive displayed notifications for iOS 10 devices.
  func userNotificationCenter(_ center: UNUserNotificationCenter,
                              willPresent notification: UNNotification,
    withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    let userInfo = notification.request.content.userInfo

    // Print full message.
    print(userInfo)

    // Change this to your preferred presentation option
    completionHandler([[.alert, .sound]])
  }

  func userNotificationCenter(_ center: UNUserNotificationCenter,
                              didReceive response: UNNotificationResponse,
                              withCompletionHandler completionHandler: @escaping () -> Void) {
    let userInfo = response.notification.request.content.userInfo

    // Print full message.
    print(userInfo)

    completionHandler()
  }
}

ตั้งค่าผู้รับมอบสิทธิ์การรับส่งข้อความ

หากต้องการรับโทเค็นการลงทะเบียน ให้ใช้โปรโตคอลผู้มอบสิทธิ์การรับส่งข้อความและตั้งค่าพร็อพเพอร์ตี้ FIRMessaging ของ delegate หลังจากเรียกใช้ [FIRApp configure] เช่น หากตัวแทนแอปพลิเคชันเป็นไปตามโปรโตคอลตัวแทนการรับส่งข้อความ คุณสามารถตั้งค่าตัวแทนใน application:didFinishLaunchingWithOptions: เป็นตัวแทนของตัวเองได้ (ในตัวอย่างการเริ่มต้นใช้งานอย่างรวดเร็ว ระบบได้ตั้งค่าไว้แล้ว)

AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  FirebaseApp.configure()
  Messaging.messaging().delegate = self // Add this line
  // [START register for remote notifications]
  if #available(iOS 10.0, *) {
    // For iOS 10 display notification (sent via APNS)
    UNUserNotificationCenter.current().delegate = self
        
    let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
    UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: {_, _ in })
  } else {
    let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
    application.registerUserNotificationSettings(settings)
  }

  application.registerForRemoteNotifications()
  // [END register for remote notifications]
  return true
}

กำหนดพร็อพเพอร์ตี้ผู้มอบสิทธิ์ของ FIRMessaging โดยเพิ่มบรรทัดต่อไปนี้ที่ส่วนท้ายของ AppDelegate.swift

AppDelegate.swift

extension AppDelegate : MessagingDelegate {
  func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
    print("Firebase registration token: \(String(describing: fcmToken))")
    
    let dataDict:[String: String] = ["token": fcmToken ?? ""]
    NotificationCenter.default.post(name: Notification.Name("FCMToken"), object: nil, userInfo: dataDict)
  }
}

เพิ่มความสามารถ

คุณได้เพิ่มความสามารถในการแจ้งเตือนแบบพุชในส่วนสร้าง App ID แล้ว แต่คุณต้องเพิ่มความสามารถนี้ใน XCode ด้วยโดยทำตามขั้นตอนต่อไปนี้ (ขั้นตอนด้านล่างอยู่ใน XCode 12.3)

  1. คลิกชื่อโปรเจ็กต์ในพื้นที่แถบนำทาง
  2. คลิกการลงนามและความสามารถ
  3. คลิก + ความสามารถ

7207dce45aaa0fa.png

  1. ดับเบิลคลิกโหมดพื้นหลัง
  2. คลิก + ความสามารถอีกครั้ง
  3. ดับเบิลคลิกข้อความ Push
  4. ตรวจสอบการแจ้งเตือนจากระยะไกลในส่วนโหมดเบื้องหลัง

11a0a4f8a409fe44.png

6. ส่งข้อความแจ้งเตือน

คุณส่งข้อความทดสอบได้โดยทำตามขั้นตอนต่อไปนี้

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

b9383e848d00ab04.png

  1. ตรวจสอบว่าแอปทำงานอยู่เบื้องหลังในอุปกรณ์
  2. เปิดเครื่องมือแต่งการแจ้งเตือน แล้วเลือกการแจ้งเตือนใหม่
  3. ป้อนข้อความ 8f57ae055ce64321.png
  4. เลือกส่งข้อความทดสอบ
  5. ในช่องที่มีป้ายกำกับว่าเพิ่มโทเค็นการลงทะเบียน FCM ให้ป้อนโทเค็นการลงทะเบียนที่คุณได้รับในขั้นตอนที่ 2
  6. คลิกทดสอบ

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

ดูข้อมูลเชิงลึกเกี่ยวกับการนำส่งข้อความไปยังแอปได้ที่แดชบอร์ดการรายงาน FCM ซึ่งบันทึกจำนวนข้อความที่ส่งและเปิดในอุปกรณ์ iOS และ Android

b790de9a3e0dc1ef.png

7. ขอแสดงความยินดี

ยินดีด้วย คุณส่งข้อความทดสอบสำเร็จแล้ว

FCM ยังมีฟังก์ชันและการกำหนดค่าอื่นๆ อีกมากมาย เช่น การติดตามหัวข้อ

ดูเอกสารอย่างเป็นทางการสำหรับนักพัฒนาซอฟต์แวร์หากสนใจ

สิ่งต่อไปที่ควรทำ

ลองดู Codelab เหล่านี้

อ่านเพิ่มเติม