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

1. บทนำ

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

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

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

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

การใช้งาน FCM ประกอบด้วยองค์ประกอบหลัก 2 อย่างสำหรับการส่งและรับ ดังนี้

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

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

6636933bbe959ef2.png

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

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

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

ใน Codelab นี้ คุณจะต้องเพิ่มข้อความ Push ลงในแอป iOS ตัวอย่างด้วย FCM

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

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

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

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

2. การตั้งค่า

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

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

วิธีการรับตัวอย่างมี 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. เลือกแอป แล้วคลิกถัดไป

e56c631b086c6d8.png

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

fb860c0fa4a02818.png

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

3. กำลังกำหนดค่า APN

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

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

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

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

19ae87d0f00402b1.png

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

c4acd10dbc4f721f.png

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

6a3e8ff7457a8251.png

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

42c205e072fbd622.png

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

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

  1. ไปที่ Apple Developer Member Center และลงชื่อเข้าใช้
  2. ไปที่ใบรับรอง ตัวระบุ และโปรไฟล์
  3. ไปที่ตัวระบุ
  4. คลิกปุ่ม + เพื่อสร้างรหัสแอปใหม่ e04fc394c52a866f.png
  5. เลือกปุ่มตัวเลือกรหัสแอป แล้วคลิกต่อไป

d454fd5df3b8d93d.png

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

3bd2e836be5e0291.png

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

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

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

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

507434a466220dfe.png

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

4395f04647afa997.png

  1. คลิกดาวน์โหลดเพื่อบันทึกโปรไฟล์การจัดสรรลงใน Mac

106761fa786ba580.png

  1. ดับเบิลคลิกไฟล์โปรไฟล์การจัดสรรเพื่อติดตั้ง

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

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

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

  1. ในคอนโซล Firebase ให้คลิกเพิ่มโปรเจ็กต์ จากนั้นเลือกหรือป้อนชื่อโปรเจ็กต์ e462afd91c149238.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 สำหรับโปรเจ็กต์

1282a798556779ab.png

48ade68c8de27d2.png

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

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

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

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

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

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

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

93462beb642e8987.png

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

2e7a00b0008344c1.png

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

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

7c5e0a46d07fa9c7.png

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

ปิด XCode

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

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

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

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

ในตัวอย่างการเริ่มต้นอย่างรวดเร็ว เราได้เพิ่ม SDK การรับส่งข้อความในระบบคลาวด์ของ Google Analytics และ Firebase แล้ว

# 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 6d1f8230d16693e6.png

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

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

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

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

AppDelegate.swift

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

AppDelegate.swift

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

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

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

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

  1. ภายในโครงการในคอนโซล Firebase ให้เลือกไอคอนรูปเฟือง เลือกการตั้งค่าโครงการ แล้วเลือกแท็บการรับส่งข้อความในระบบคลาวด์ ba8b5f95241327fe.png
  2. ในคีย์การตรวจสอบสิทธิ์ AAP ในส่วนการกำหนดค่าแอป iOS ให้คลิกปุ่มอัปโหลด 357ddc0d4b182492.png
  3. เรียกดูตำแหน่งที่คุณบันทึกคีย์ไว้ จากนั้นเลือกคีย์แล้วคลิกเปิด เพิ่มรหัสคีย์สำหรับคีย์ (ดูได้ในใบรับรอง ตัวระบุ และโปรไฟล์ใน Apple Developer Member Center) แล้วคลิกอัปโหลด 3dae27f2327daf9e.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()
  }
}

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

หากต้องการรับโทเค็นการลงทะเบียน ให้ใช้โปรโตคอลผู้รับมอบสิทธิ์การรับส่งข้อความและตั้งค่าพร็อพเพอร์ตี้ delegate ของ FIRMessaging หลังจากเรียกใช้ [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)
  }
}

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

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

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

eaf41aefb3bf2c9e.png

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

e5d0fc08651e04a9.png

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

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

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

a2e49a92f9807d34.png

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

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

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

6570eea7b5228513.png

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

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

มีฟังก์ชันและการกำหนดค่าอีกมากมายใน FCM เช่น การสมัครรับข้อมูลตามหัวข้อ

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

สิ่งที่ต้องทำต่อไป

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

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