หากต้องการเริ่มต้นใช้งาน FCM ให้สร้าง Use Case ที่ง่ายที่สุด ซึ่งก็คือการส่งข้อความการแจ้งเตือนทดสอบจาก เครื่องมือแต่งการแจ้งเตือนไปยังอุปกรณ์สำหรับพัฒนาแอปเมื่อแอปทำงานอยู่เบื้องหลังในอุปกรณ์ หน้านี้จะแสดงขั้นตอนทั้งหมดตั้งแต่การตั้งค่าไปจนถึงการยืนยัน ซึ่งอาจครอบคลุมขั้นตอนที่คุณทำไปแล้วหากคุณตั้งค่าแอปไคลเอ็นต์ Apple สำหรับ FCM
เพิ่ม Firebase ไปยังโปรเจ็กต์ Apple
ส่วนนี้จะกล่าวถึงงานที่คุณอาจทําเสร็จแล้วหากเปิดใช้ฟีเจอร์อื่นๆ ของ Firebase สําหรับแอปแล้ว สําหรับ FCM โดยเฉพาะ คุณจะต้องอัปโหลดคีย์การตรวจสอบสิทธิ์ APNs และลงทะเบียนเพื่อรับการแจ้งเตือนจากระยะไกล
ข้อกำหนดเบื้องต้น
ติดตั้งรายการต่อไปนี้
- Xcode 15.2 ขึ้นไป
ตรวจสอบว่าโปรเจ็กต์เป็นไปตามข้อกำหนดต่อไปนี้
- โปรเจ็กต์ต้องกำหนดเป้าหมายเป็นแพลตฟอร์มเวอร์ชันต่อไปนี้หรือเวอร์ชันที่ใหม่กว่า
- iOS 13
- macOS 10.15
- tvOS 13
- watchOS 7
- โปรเจ็กต์ต้องกำหนดเป้าหมายเป็นแพลตฟอร์มเวอร์ชันต่อไปนี้หรือเวอร์ชันที่ใหม่กว่า
ตั้งค่าอุปกรณ์ Apple จริงเพื่อเรียกใช้แอป และทํางานต่อไปนี้
- รับคีย์การตรวจสอบสิทธิ์ข้อความ Push ของ Apple สำหรับบัญชีนักพัฒนาแอป Apple
- เปิดใช้ข้อความ Push ใน XCode ในส่วนแอป > ความสามารถ
- ลงชื่อเข้าใช้ Firebase โดยใช้บัญชี Google
หากยังไม่มีโปรเจ็กต์ Xcode และต้องการลองใช้ผลิตภัณฑ์ Firebase เพียงอย่างเดียว คุณสามารถดาวน์โหลดตัวอย่างการเริ่มต้นใช้งานอย่างรวดเร็วของเรา
สร้างโปรเจ็กต์ Firebase
คุณต้องสร้างโปรเจ็กต์ Firebase เพื่อเชื่อมต่อกับแอปก่อนจึงจะเพิ่ม Firebase ในแอป Apple ได้ โปรดไปที่ทําความเข้าใจโปรเจ็กต์ Firebase เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับโปรเจ็กต์ Firebase
ลงทะเบียนแอปกับ Firebase
หากต้องการใช้ Firebase ในแอป Apple คุณต้องลงทะเบียนแอปกับโปรเจ็กต์ Firebase การลงทะเบียนแอปมักเรียกว่า "การเพิ่ม" แอปลงในโปรเจ็กต์
ไปที่คอนโซล Firebase
คลิกไอคอน iOS+ ตรงกลางหน้าภาพรวมโปรเจ็กต์เพื่อเปิดเวิร์กโฟลว์การตั้งค่า
หากเพิ่มแอปลงในโปรเจ็กต์ Firebase อยู่แล้ว ให้คลิกเพิ่มแอปเพื่อแสดงตัวเลือกแพลตฟอร์ม
ป้อนรหัสกลุ่มของแอปในช่องรหัสกลุ่ม
(ไม่บังคับ) ป้อนข้อมูลอื่นๆ ของแอป ได้แก่ ชื่อเล่นของแอปและ App Store ID
คลิกลงทะเบียนแอป
เพิ่มไฟล์การกําหนดค่า Firebase
คลิกดาวน์โหลด GoogleService-Info.plist เพื่อรับไฟล์การกําหนดค่าแพลตฟอร์ม Apple ของ Firebase (
GoogleService-Info.plist
)ย้ายไฟล์การกําหนดค่าไปยังรูทของโปรเจ็กต์ Xcode หากได้รับข้อความแจ้ง ให้เลือกเพิ่มไฟล์กำหนดค่าลงในเป้าหมายทั้งหมด
หากมีรหัสกลุ่มหลายรายการในโปรเจ็กต์ คุณต้องเชื่อมโยงรหัสกลุ่มแต่ละรายการกับแอปที่ลงทะเบียนในคอนโซล Firebase เพื่อให้แต่ละแอปมีไฟล์ GoogleService-Info.plist
เป็นของตัวเอง
เพิ่ม Firebase SDK ลงในแอป
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase
- เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่ไฟล์ > เพิ่มแพ็กเกจ
- เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ Firebase SDK สำหรับแพลตฟอร์ม Apple ดังนี้
- เลือกคลัง Firebase Cloud Messaging
- เพิ่ม Flag
-ObjC
ลงในส่วน Other Linker Flags ของการตั้งค่าบิลด์เป้าหมาย - เราขอแนะนําให้เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase และเพิ่ม Firebase SDK สําหรับ Google Analytics ลงในแอปเพื่อให้ได้รับประสบการณ์การใช้งาน Firebase Cloud Messaging ที่ดีที่สุด คุณสามารถเลือกคลังแบบไม่เก็บรวบรวม IDFA หรือแบบเก็บรวบรวม IDFA ก็ได้
- เมื่อเสร็จแล้ว Xcode จะเริ่มจับคู่ข้อมูลและดาวน์โหลดทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ
https://github.com/firebase/firebase-ios-sdk.git
อัปโหลดคีย์การตรวจสอบสิทธิ์ APNs
อัปโหลดคีย์การตรวจสอบสิทธิ์ APNs ไปยัง Firebase หากยังไม่มีคีย์การตรวจสอบสิทธิ์ APNs โปรดสร้างคีย์ในศูนย์สมาชิกนักพัฒนาแอปของ Apple
-
ในโปรเจ็กต์ในคอนโซล Firebase ให้เลือกไอคอนรูปเฟือง เลือกการตั้งค่าโปรเจ็กต์ แล้วเลือกแท็บการรับส่งข้อความระบบคลาวด์
-
ในส่วนคีย์การตรวจสอบสิทธิ์ APNs ใต้การกำหนดค่าแอป iOS ให้คลิกปุ่มอัปโหลด
-
เรียกดูตำแหน่งที่คุณบันทึกคีย์ไว้ เลือกคีย์ แล้วคลิกเปิด เพิ่มรหัสคีย์สำหรับคีย์ (ดูได้ใน ศูนย์สมาชิกนักพัฒนาแอปของ Apple) แล้วคลิกอัปโหลด
เริ่มต้นใช้งาน Firebase ในแอป
คุณจะต้องเพิ่มโค้ดการเริ่มต้น Firebase ลงในแอปพลิเคชัน นําเข้ามอดุล Firebase และกำหนดค่าอินสแตนซ์ที่แชร์ดังที่แสดง
- นําเข้าโมดูล
FirebaseCore
ในUIApplicationDelegate
รวมถึงโมดูล Firebase อื่นๆ ที่ผู้รับมอบสิทธิ์ของแอปใช้ ตัวอย่างเช่น หากต้องการใช้ Cloud Firestore และ Authentication ให้ทำดังนี้SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- กำหนดค่าอินสแตนซ์ที่แชร์ในเมธอด
application(_:didFinishLaunchingWithOptions:)
ของตัวแทนแอป ดังนี้FirebaseApp
SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- หากใช้ SwiftUI คุณต้องสร้างผู้รับมอบสิทธิ์แอปพลิเคชันและแนบไปกับ
App
struct ผ่านUIApplicationDelegateAdaptor
หรือNSApplicationDelegateAdaptor
นอกจากนี้ คุณยังต้องปิดใช้การสลับผู้รับมอบสิทธิ์แอปด้วย ดูข้อมูลเพิ่มเติมได้ที่วิธีการ SwiftUISwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
ลงทะเบียนรับการแจ้งเตือนจากระยะไกล
ลงทะเบียนแอปสำหรับการแจ้งเตือนจากระยะไกลเมื่อเริ่มต้นหรือเมื่อถึงจุดที่ต้องการในขั้นตอนการสมัคร เรียกใช้registerForRemoteNotifications
ดังที่แสดงต่อไปนี้
Swift
UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: { _, _ in } ) application.registerForRemoteNotifications()
Objective-C
[UNUserNotificationCenter currentNotificationCenter].delegate = self; UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { // ... }]; [application registerForRemoteNotifications];
เข้าถึงโทเค็นการลงทะเบียน
หากต้องการส่งข้อความไปยังอุปกรณ์ที่ต้องการ คุณต้องทราบโทเค็นการลงทะเบียนของอุปกรณ์นั้น เนื่องจากคุณจะต้องป้อนโทเค็นในช่องใน เครื่องมือเขียนการแจ้งเตือนเพื่อทําตามบทแนะนํานี้ให้เสร็จสมบูรณ์ โปรดคัดลอกโทเค็นหรือจัดเก็บโทเค็นอย่างปลอดภัยหลังจากดึงข้อมูลแล้ว
โดยค่าเริ่มต้น FCM SDK จะสร้างโทเค็นการลงทะเบียนสําหรับอินสแตนซ์แอปไคลเอ็นต์เมื่อเปิดแอป โทเค็นนี้ช่วยให้คุณส่งการแจ้งเตือนที่กําหนดเป้าหมายไปยังอินสแตนซ์ใดก็ได้ของแอป ซึ่งคล้ายกับโทเค็นอุปกรณ์ APN
FCM จะส่งโทเค็นการลงทะเบียนผ่านFIRMessagingDelegate
messaging:didReceiveRegistrationToken:
เช่นเดียวกับที่แพลตฟอร์มของ Apple มักจะส่งโทเค็นอุปกรณ์ APNs เมื่อแอปเริ่มทำงาน
FCM SDK จะดึงข้อมูลโทเค็นใหม่หรือที่มีอยู่ในระหว่างการเปิดแอปครั้งแรกและทุกครั้งที่มีการอัปเดตหรือทำให้โทเค็นใช้งานไม่ได้
ในทุกกรณี FCM SDK จะเรียกใช้ messaging:didReceiveRegistrationToken:
ด้วยโทเค็นที่ถูกต้อง
โทเค็นการลงทะเบียนอาจเปลี่ยนแปลงในกรณีต่อไปนี้
- คืนค่าแอปในอุปกรณ์เครื่องใหม่
- ผู้ใช้ถอนการติดตั้ง/ติดตั้งแอปอีกครั้ง
- ผู้ใช้ล้างข้อมูลแอป
ตั้งค่าผู้รับมอบสิทธิ์การรับส่งข้อความ
หากต้องการรับโทเค็นการลงทะเบียน ให้ใช้โปรโตคอลผู้รับมอบสิทธิ์การรับส่งข้อความและตั้งค่าพร็อพเพอร์ตี้ delegate
ของ FIRMessaging
หลังจากเรียกใช้ [FIRApp configure]
เช่น หากตัวแทนแอปพลิเคชันของคุณเป็นไปตามโปรโตคอลตัวแทนการรับส่งข้อความ คุณสามารถตั้งค่าตัวแทนใน application:didFinishLaunchingWithOptions:
ให้ตัวเองได้
Swift
Messaging.messaging().delegate = self
Objective-C
[FIRMessaging messaging].delegate = self;
ดึงข้อมูลโทเค็นการลงทะเบียนปัจจุบัน
ระบบจะส่งโทเค็นการลงทะเบียนผ่านเมธอด messaging:didReceiveRegistrationToken:
โดยปกติแล้วเมธอดนี้จะเรียกใช้ 1 ครั้งต่อการเปิดแอปด้วยโทเค็นการลงทะเบียน เมื่อเรียกใช้เมธอดนี้ จะเป็นเวลาที่เหมาะสําหรับดำเนินการต่อไปนี้
- หากโทเค็นการลงทะเบียนเป็นโทเค็นใหม่ ให้ส่งโทเค็นดังกล่าวไปยังเซิร์ฟเวอร์แอปพลิเคชัน
- สมัครโทเค็นการลงทะเบียนกับหัวข้อ โดยจำเป็นต้องใช้เฉพาะสำหรับการสมัครใช้บริการใหม่หรือในกรณีที่ผู้ใช้ติดตั้งแอปอีกครั้ง
คุณสามารถดึงข้อมูลโทเค็นได้โดยตรงโดยใช้ token(completion:) ระบบจะแสดงข้อผิดพลาดที่ไม่ใช่ค่าว่างหากการเรียกข้อมูลโทเค็นไม่สำเร็จไม่ว่าด้วยวิธีใดก็ตาม
Swift
Messaging.messaging().token { token, error in if let error = error { print("Error fetching FCM registration token: \(error)") } else if let token = token { print("FCM registration token: \(token)") self.fcmRegTokenMessage.text = "Remote FCM registration token: \(token)" } }
Objective-C
[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) { if (error != nil) { NSLog(@"Error getting FCM registration token: %@", error); } else { NSLog(@"FCM registration token: %@", token); self.fcmRegTokenMessage.text = token; } }];
คุณใช้วิธีนี้ได้ทุกเมื่อเพื่อเข้าถึงโทเค็นแทนการจัดเก็บ
ตรวจสอบการรีเฟรชโทเค็น
หากต้องการรับการแจ้งเตือนทุกครั้งที่มีการอัปเดตโทเค็น ให้ระบุผู้รับมอบสิทธิ์ที่เป็นไปตามโปรโตคอลผู้รับมอบสิทธิ์การรับส่งข้อความ ตัวอย่างต่อไปนี้จะลงทะเบียนตัวแทนและเพิ่มเมธอดตัวแทนที่เหมาะสม
Swift
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 ) // TODO: If necessary send token to application server. // Note: This callback is fired at each app startup and whenever a new token is generated. }
Objective-C
- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken { NSLog(@"FCM registration token: %@", fcmToken); // Notify about received token. NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"]; [[NSNotificationCenter defaultCenter] postNotificationName: @"FCMToken" object:nil userInfo:dataDict]; // TODO: If necessary send token to application server. // Note: This callback is fired at each app startup and whenever a new token is generated. }
หรือจะคอยฟัง NSNotification
ที่มีชื่อ
kFIRMessagingRegistrationTokenRefreshNotification
แทนที่จะระบุเมธอดผู้รับมอบสิทธิ์ก็ได้ พร็อพเพอร์ตี้โทเค็นจะมีค่าโทเค็นปัจจุบันเสมอ
ส่งข้อความแจ้งเตือน
ติดตั้งและเรียกใช้แอปในอุปกรณ์เป้าหมาย ในอุปกรณ์ Apple คุณจะต้องยอมรับคำขอสิทธิ์เพื่อรับการแจ้งเตือนจากระยะไกล
ตรวจสอบว่าแอปทำงานอยู่เบื้องหลังในอุปกรณ์
ในคอนโซล Firebase ให้เปิดหน้าการรับส่งข้อความ
หากนี่เป็นข้อความแรก ให้เลือกสร้างแคมเปญแรก
- เลือกข้อความการแจ้งเตือน Firebase แล้วเลือกสร้าง
หรือเลือกแคมเปญใหม่ในแท็บแคมเปญ แล้วเลือกการแจ้งเตือน
ป้อนข้อความ ช่องอื่นๆ ทั้งหมดเป็นตัวเลือก
เลือกส่งข้อความทดสอบจากแผงด้านขวา
ในช่องที่มีป้ายกำกับว่าเพิ่มโทเค็นการลงทะเบียน FCM ให้ป้อนโทเค็นการลงทะเบียนที่คุณได้รับในส่วนก่อนหน้าของคู่มือนี้
เลือกทดสอบ
หลังจากเลือกทดสอบแล้ว อุปกรณ์ไคลเอ็นต์เป้าหมาย (ที่มีแอปทำงานอยู่เบื้องหลัง) ควรได้รับการแจ้งเตือน
ดูข้อมูลเชิงลึกเกี่ยวกับการนำส่งข้อความไปยังแอปของคุณได้ที่ หน้าแดชบอร์ดการรายงาน FCM ซึ่งจะบันทึกจำนวนข้อความที่ส่งและเปิดในอุปกรณ์ Apple และ Android รวมถึงข้อมูล "การแสดงผล" (การแจ้งเตือนที่ผู้ใช้เห็น) สําหรับแอป Android
ขั้นตอนถัดไป
หากต้องการดำเนินการเพิ่มเติมจากข้อความการแจ้งเตือนและเพิ่มลักษณะการทำงานขั้นสูงอื่นๆ ลงในแอป โปรดดูที่หัวข้อต่อไปนี้