ในการเริ่มต้นใช้งาน FCM ให้สร้างกรณีการใช้งานที่ง่ายที่สุด: การส่งข้อความแจ้งเตือนการทดสอบจาก ผู้แต่งการแจ้งเตือน ไปยังอุปกรณ์การพัฒนาเมื่อแอปอยู่ในพื้นหลังของอุปกรณ์ หน้านี้แสดงขั้นตอนทั้งหมดเพื่อให้บรรลุตามนี้ ตั้งแต่การตั้งค่าจนถึงการยืนยัน — อาจครอบคลุมขั้นตอนที่คุณดำเนินการไปแล้วหากคุณ ตั้งค่าแอปไคลเอนต์ Apple สำหรับ FCM
เพิ่ม Firebase ในโครงการ Apple ของคุณ
ส่วนนี้ครอบคลุมถึงงานที่คุณอาจทำเสร็จแล้วหากคุณเปิดใช้ฟีเจอร์ Firebase อื่นๆ สำหรับแอปของคุณแล้ว สำหรับ FCM โดยเฉพาะ คุณจะต้อง อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ของคุณ และ ลงทะเบียนสำหรับการแจ้งเตือนระยะไกล
ข้อกำหนดเบื้องต้น
ติดตั้งสิ่งต่อไปนี้:
- Xcode 14.1 หรือใหม่กว่า
ตรวจสอบให้แน่ใจว่าโครงการของคุณตรงตามข้อกำหนดเหล่านี้:
- โครงการของคุณต้องกำหนดเป้าหมายเวอร์ชันแพลตฟอร์มเหล่านี้หรือใหม่กว่า:
- iOS 11
- แมคโอเอส 10.13
- tvOS 12
- วอทช์โอเอส 6
- โครงการของคุณต้องกำหนดเป้าหมายเวอร์ชันแพลตฟอร์มเหล่านี้หรือใหม่กว่า:
ตั้งค่า อุปกรณ์ Apple จริง เพื่อเรียกใช้แอพของคุณ และทำงานเหล่านี้ให้เสร็จ:
- รับรหัสการตรวจสอบสิทธิ์การแจ้งเตือนแบบพุชของ Apple สำหรับ บัญชีนักพัฒนา Apple ของคุณ
- เปิดใช้งานการแจ้งเตือนแบบพุชใน XCode ภายใต้ App > Capabilities
- ลงชื่อเข้าใช้ Firebase โดยใช้บัญชี Google ของคุณ
หากคุณยังไม่มีโครงการ Xcode และเพียงต้องการลองใช้ผลิตภัณฑ์ Firebase คุณสามารถดาวน์โหลดหนึ่งใน ตัวอย่างการเริ่มต้นอย่างรวดเร็ว ของเรา
สร้างโครงการ Firebase
ก่อนที่คุณจะเพิ่ม Firebase ลงในแอป Apple คุณต้องสร้างโปรเจ็กต์ Firebase เพื่อเชื่อมต่อกับแอปของคุณ ไปที่ ทำความเข้าใจโครงการ Firebase เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับโครงการ Firebase
ลงทะเบียนแอปของคุณกับ Firebase
หากต้องการใช้ Firebase ในแอป Apple คุณต้องลงทะเบียนแอปกับโปรเจ็กต์ Firebase การลงทะเบียนแอปมักเรียกว่า "การเพิ่ม" แอปของคุณในโครงการ
ไปที่ คอนโซล Firebase
ที่กึ่งกลางของหน้าภาพรวมโครงการ ให้คลิกไอคอน iOS+ เพื่อเปิดเวิร์กโฟลว์การตั้งค่า
หากคุณเพิ่มแอปในโครงการ Firebase แล้ว ให้คลิก เพิ่มแอป เพื่อแสดงตัวเลือกแพลตฟอร์ม
ป้อนรหัสชุดของแอปในช่อง รหัสชุด
รหัสบันเดิล จะระบุแอปพลิเคชันในระบบนิเวศของ Apple โดยไม่ซ้ำกัน
ค้นหา Bundle ID ของคุณ: เปิดโปรเจ็กต์ของคุณใน Xcode เลือกแอประดับบนสุดในเนวิเกเตอร์โปรเจ็กต์ จากนั้นเลือกแท็บ ทั่วไป
ค่าของฟิลด์ Bundle Identifier คือรหัสบันเดิล (เช่น
com.yourcompany.yourproject
)โปรดทราบว่าค่า Bundle ID คำนึงถึงขนาดตัวพิมพ์ และไม่สามารถเปลี่ยนแปลงได้สำหรับแอป Firebase นี้หลังจากลงทะเบียนกับโปรเจ็กต์ Firebase ของคุณแล้ว
(ไม่บังคับ) ป้อนข้อมูลแอปอื่นๆ: ชื่อเล่นแอป และ App Store ID
ชื่อเล่นแอป : ตัวระบุความสะดวกภายในที่มองเห็นได้เฉพาะคุณในคอนโซล Firebase
App Store ID : ใช้โดย Firebase Dynamic Links เพื่อ เปลี่ยนเส้นทางผู้ใช้ไปยังหน้า App Store และโดย Google Analytics เพื่อ นำเข้าเหตุการณ์ Conversion ไปยัง Google Ads หากแอปของคุณยังไม่มีรหัส App Store คุณสามารถเพิ่มรหัสในภายหลังได้ใน การตั้งค่าโครงการ
คลิก ลงทะเบียนแอป
เพิ่มไฟล์กำหนดค่า Firebase
คลิก ดาวน์โหลด GoogleService-Info.plist เพื่อรับไฟล์กำหนดค่าแพลตฟอร์ม Firebase Apple (
GoogleService-Info.plist
)ไฟล์กำหนดค่า Firebase มีตัวระบุที่ไม่ซ้ำใครแต่ไม่เป็นความลับสำหรับโครงการของคุณ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับไฟล์กำหนดค่านี้ โปรดไป ที่ ทำความเข้าใจโครงการ Firebase
คุณดาวน์โหลด ไฟล์กำหนดค่า Firebase อีกครั้งได้ทุกเมื่อ
ตรวจสอบให้แน่ใจว่าชื่อไฟล์ config ไม่ได้ต่อท้ายด้วยอักขระเพิ่มเติม เช่น
(2)
ย้ายไฟล์กำหนดค่าของคุณไปที่รูทของโปรเจ็กต์ Xcode หากได้รับแจ้ง ให้เลือกเพื่อเพิ่มไฟล์กำหนดค่าไปยังเป้าหมายทั้งหมด
หากคุณมีรหัสกลุ่มหลายรหัสในโครงการ คุณต้องเชื่อมโยงรหัสกลุ่มแต่ละรายการกับแอปที่ลงทะเบียนในคอนโซล Firebase เพื่อให้แต่ละแอปมีไฟล์ GoogleService-Info.plist
ของตัวเอง
เพิ่ม Firebase SDK ลงในแอปของคุณ
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการการอ้างอิง Firebase
- ใน Xcode เมื่อโปรเจ็กต์แอปของคุณเปิดอยู่ ให้ไปที่ File > Add Packages
- เมื่อได้รับแจ้ง ให้เพิ่มที่เก็บ Firebase Apple platforms SDK:
- เลือกไลบรารี Firebase Cloud Messaging
- เพื่อประสบการณ์ที่ดีที่สุดกับ Firebase Cloud Messaging เราขอแนะนำ ให้เปิดใช้ Google Analytics ในโครงการ Firebase และเพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปของคุณ คุณสามารถเลือกห้องสมุดที่ไม่มีการรวบรวม IDFA หรือมีการรวบรวม IDFA
- เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขและดาวน์โหลดการอ้างอิงของคุณโดยอัตโนมัติในเบื้องหลัง
https://github.com/firebase/firebase-ios-sdk
อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ของคุณ
อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ของคุณไปยัง Firebase หากคุณยังไม่มีคีย์การตรวจสอบสิทธิ์ APN โปรดสร้างคีย์ใน Apple Developer Member Center
ภายในโครงการของคุณในคอนโซล Firebase เลือกไอคอนรูปเฟือง เลือก การตั้งค่าโครงการ จากนั้นเลือกแท็บ Cloud Messaging
ใน คีย์การตรวจสอบสิทธิ์ APN ภายใต้ การกำหนดค่าแอป iOS ให้คลิกปุ่ม อัปโหลด
เรียกดูตำแหน่งที่คุณบันทึกคีย์ เลือก และคลิก เปิด เพิ่ม ID คีย์สำหรับคีย์ (มีให้ใน Apple Developer Member Center ) แล้วคลิก อัปโหลด
เริ่มต้น Firebase ในแอปของคุณ
คุณจะต้องเพิ่มรหัสเริ่มต้นของ Firebase ในแอปพลิเคชันของคุณ นำเข้าโมดูล Firebase และกำหนดค่าอินสแตนซ์ที่ใช้ร่วมกันตามที่แสดง:
- นำเข้าโมดูล
FirebaseCore
ในUIApplicationDelegate
ของคุณ รวมถึง โมดูล Firebase อื่นๆ ที่ตัวแทนแอปของคุณใช้ ตัวอย่างเช่น หากต้องการใช้ Cloud Firestore และการรับรองความถูกต้อง:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
สวิฟต์
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
วัตถุประสงค์-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- กำหนดค่าอินสแตนซ์ที่ใช้ร่วมกันของ
FirebaseApp
ในapplication(_:didFinishLaunchingWithOptions:)
วิธีการ:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
สวิฟต์
// Use Firebase library to configure APIs FirebaseApp.configure()
วัตถุประสงค์-C
// Use Firebase library to configure APIs [FIRApp configure];
- หากคุณใช้ SwiftUI คุณต้องสร้างตัวแทนแอปพลิเคชันและแนบกับโครงสร้าง
App
ของคุณผ่านUIApplicationDelegateAdaptor
หรือNSApplicationDelegateAdaptor
คุณต้องปิดใช้งานการ swizzling ของผู้รับมอบสิทธิ์แอปด้วย สำหรับข้อมูลเพิ่มเติม โปรดดู คำแนะนำ SwiftUISwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
ลงทะเบียนสำหรับการแจ้งเตือนระยะไกล
ไม่ว่าจะเมื่อเริ่มต้นหรือเมื่อถึงจุดที่ต้องการในโฟลว์ของแอปพลิเคชัน ให้ลงทะเบียนแอปของคุณสำหรับการแจ้งเตือนระยะไกล โทรregisterForRemoteNotifications
ดังที่แสดง:สวิฟต์
UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: { _, _ in } ) application.registerForRemoteNotifications()
วัตถุประสงค์-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 โทเค็นนี้ช่วยให้คุณส่งการแจ้งเตือนที่กำหนดเป้าหมายไปยังอินสแตนซ์ใด ๆ ของแอปของคุณ
ในลักษณะเดียวกับที่แพลตฟอร์ม Apple มักจะส่งโทเค็นอุปกรณ์ APN เมื่อเริ่มต้นแอป FCM จัดเตรียมโทเค็นการลงทะเบียนผ่าน messaging:didReceiveRegistrationToken:
ของ FIRMessagingDelegate
FCM SDK จะดึงโทเค็นใหม่หรือที่มีอยู่ในระหว่างการเปิดแอปครั้งแรก และเมื่อใดก็ตามที่โทเค็นได้รับการอัปเดตหรือใช้ไม่ได้ ในทุกกรณี FCM SDK จะเรียก messaging:didReceiveRegistrationToken:
ด้วยโทเค็นที่ถูกต้อง
โทเค็นการลงทะเบียนอาจเปลี่ยนแปลงเมื่อ:
- แอปได้รับการกู้คืนบนอุปกรณ์ใหม่
- ผู้ใช้ถอนการติดตั้ง/ติดตั้งแอปอีกครั้ง
- ผู้ใช้ล้างข้อมูลแอป
ตั้งค่าผู้รับมอบสิทธิ์ในการส่งข้อความ
ในการรับโทเค็นการลงทะเบียน ให้ใช้โปรโตคอลผู้รับมอบสิทธิ์การส่งข้อความ และตั้งค่าคุณสมบัติ delegate
ของ FIRMessaging
หลังจากเรียก [FIRApp configure]
ตัวอย่างเช่น หากผู้รับมอบสิทธิ์แอปพลิเคชันของคุณสอดคล้องกับโปรโตคอลผู้รับมอบสิทธิ์การส่งข้อความ คุณสามารถตั้งค่าผู้รับ application:didFinishLaunchingWithOptions:
สิทธิ์บน
สวิฟต์
Messaging.messaging().delegate = self
วัตถุประสงค์-C
[FIRMessaging messaging].delegate = self;
กำลังเรียกโทเค็นการลงทะเบียนปัจจุบัน
โทเค็นการลงทะเบียนจะถูกส่งผ่านเมธอด messaging:didReceiveRegistrationToken:
วิธีการนี้เรียกว่าโดยทั่วไปหนึ่งครั้งต่อแอปที่เริ่มต้นด้วยโทเค็นการลงทะเบียน เมื่อเรียกใช้เมธอดนี้ เป็นเวลาที่เหมาะสมที่สุดในการ:
- ถ้าโทเค็นการลงทะเบียนเป็นของใหม่ ให้ส่งไปยังแอ็พพลิเคชันเซิร์ฟเวอร์ของคุณ
- สมัครสมาชิกโทเค็นการลงทะเบียนในหัวข้อ สิ่งนี้จำเป็นสำหรับการสมัครสมาชิกใหม่หรือสถานการณ์ที่ผู้ใช้ติดตั้งแอปใหม่เท่านั้น
คุณสามารถดึงโทเค็นได้โดยตรงโดยใช้ token(completion:) ข้อผิดพลาดที่ไม่ใช่ค่า Null จะแสดงขึ้นหากการดึงข้อมูลโทเค็นล้มเหลวไม่ว่าจะด้วยวิธีใดก็ตาม
สวิฟต์
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)" } }
วัตถุประสงค์-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; } }];
คุณสามารถใช้วิธีนี้เมื่อใดก็ได้เพื่อเข้าถึงโทเค็นแทนการจัดเก็บ
ตรวจสอบการรีเฟรชโทเค็น
หากต้องการรับการแจ้งเตือนทุกครั้งที่มีการอัปเดตโทเค็น ให้จัดหาผู้รับมอบสิทธิ์ที่สอดคล้องกับโปรโตคอลผู้รับมอบสิทธิ์ในการส่งข้อความ ตัวอย่างต่อไปนี้ลงทะเบียนผู้รับมอบสิทธิ์และเพิ่มวิธีการรับมอบสิทธิ์ที่เหมาะสม:
สวิฟต์
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. }
วัตถุประสงค์-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
ขั้นตอนถัดไป
หากต้องการไปไกลกว่าข้อความแจ้งเตือนและเพิ่มลักษณะการทำงานขั้นสูงอื่นๆ ให้กับแอปของคุณ โปรดดู: