ในการเริ่มต้นใช้งาน FCM ให้สร้างกรณีการใช้งานที่ง่ายที่สุด: การส่งข้อความแจ้งเตือนทดสอบจาก ผู้แต่งการแจ้งเตือน ไปยังอุปกรณ์การพัฒนาเมื่อแอปอยู่ในพื้นหลังบนอุปกรณ์ หน้านี้แสดงรายการขั้นตอนทั้งหมดเพื่อให้บรรลุเป้าหมายนี้ ตั้งแต่การตั้งค่าไปจนถึงการยืนยัน ซึ่งอาจครอบคลุมถึงขั้นตอนที่คุณทำเสร็จแล้วหากคุณได้ ตั้งค่าแอปไคลเอนต์ Apple สำหรับ FCM
เพิ่ม Firebase ให้กับโปรเจ็กต์ Apple ของคุณ
ส่วนนี้ครอบคลุมถึงงานที่คุณอาจทำเสร็จแล้วหากคุณได้เปิดใช้ฟีเจอร์ Firebase อื่นๆ สำหรับแอปของคุณแล้ว สำหรับ FCM โดยเฉพาะ คุณจะต้อง อัปโหลดคีย์การตรวจสอบสิทธิ์ APN และ ลงทะเบียนเพื่อรับการแจ้งเตือนระยะไกล
ข้อกำหนดเบื้องต้น
ติดตั้งสิ่งต่อไปนี้:
- Xcode 14.1 หรือใหม่กว่า
ตรวจสอบให้แน่ใจว่าโครงการของคุณตรงตามข้อกำหนดเหล่านี้:
- โครงการของคุณต้องกำหนดเป้าหมายเวอร์ชันแพลตฟอร์มเหล่านี้หรือใหม่กว่า:
- ไอโอเอส 11
- macOS10.13
- ทีวีโอเอส 12
- วอตช์โอเอส 6
- โครงการของคุณต้องกำหนดเป้าหมายเวอร์ชันแพลตฟอร์มเหล่านี้หรือใหม่กว่า:
ตั้งค่า อุปกรณ์ Apple จริง เพื่อเรียกใช้แอพของคุณและทำงานเหล่านี้ให้เสร็จสิ้น:
- รับคีย์การรับรองความถูกต้องการแจ้งเตือน Apple Push สำหรับ บัญชี Apple Developer ของคุณ
- เปิดใช้งานการแจ้งเตือนแบบพุชใน XCode ภายใต้ App > Capabilities
- ลงชื่อเข้าใช้ Firebase โดยใช้บัญชี Google ของคุณ
หากคุณยังไม่มีโปรเจ็กต์ Xcode และเพียงต้องการลองใช้ผลิตภัณฑ์ Firebase คุณสามารถดาวน์โหลดหนึ่งใน ตัวอย่างการเริ่มต้นอย่างรวดเร็ว ของเรา
สร้างโปรเจ็กต์ Firebase
ก่อนที่คุณจะเพิ่ม Firebase ลงในแอป Apple ได้ คุณต้องสร้างโปรเจ็กต์ Firebase เพื่อเชื่อมต่อกับแอปของคุณก่อน ไปที่ ทำความเข้าใจโปรเจ็กต์ Firebase เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับโปรเจ็กต์ Firebase
ลงทะเบียนแอปของคุณกับ Firebase
หากต้องการใช้ Firebase ในแอป Apple คุณต้องลงทะเบียนแอปกับโปรเจ็กต์ Firebase การลงทะเบียนแอปของคุณมักเรียกว่า "การเพิ่ม" แอปของคุณในโครงการของคุณ
ไปที่ คอนโซล Firebase
ที่กึ่งกลางของหน้าภาพรวมโครงการ ให้คลิกไอคอน iOS+ เพื่อเปิดเวิร์กโฟลว์การตั้งค่า
หากคุณได้เพิ่มแอปลงในโปรเจ็กต์ Firebase แล้ว ให้คลิก เพิ่มแอป เพื่อแสดงตัวเลือกแพลตฟอร์ม
ป้อนรหัสชุดของแอปของคุณในช่อง รหัสชุด
ID บันเดิล จะระบุแอปพลิเคชันในระบบนิเวศของ Apple โดยไม่ซ้ำกัน
ค้นหา ID บันเดิลของคุณ: เปิดโปรเจ็กต์ของคุณใน Xcode เลือกแอพระดับบนสุดในตัวนำทางโปรเจ็กต์ จากนั้นเลือกแท็บ ทั่วไป
ค่าของฟิลด์ Bundle Identifier คือ ID บันเดิล (เช่น
com.yourcompany.yourproject
)โปรดทราบว่าค่ารหัสชุดต้องตรงตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และไม่สามารถเปลี่ยนแปลงได้สำหรับแอป Firebase นี้หลังจากที่ลงทะเบียนกับโปรเจ็กต์ Firebase ของคุณแล้ว
(ไม่บังคับ) ป้อนข้อมูลแอปอื่นๆ: ชื่อเล่นแอป และ รหัส App Store
ชื่อเล่นของแอป : ตัวระบุความสะดวกสบายภายในที่คุณมองเห็นได้ในคอนโซล Firebase เท่านั้น
App Store ID : ใช้โดย Firebase Dynamic Links เพื่อ เปลี่ยนเส้นทางผู้ใช้ไปยังหน้า App Store ของคุณ และโดย Google Analytics เพื่อ นำเข้าเหตุการณ์ Conversion ไปยัง Google Ads หากแอปของคุณยังไม่มี App Store ID คุณสามารถเพิ่ม ID ได้ภายหลังใน การตั้งค่าโปรเจ็กต์ ของคุณ
คลิก ลงทะเบียนแอป
เพิ่มไฟล์การกำหนดค่า Firebase
คลิก ดาวน์โหลด GoogleService-Info.plist เพื่อรับไฟล์กำหนดค่าแพลตฟอร์ม Firebase Apple ของคุณ (
GoogleService-Info.plist
)ไฟล์กำหนดค่า Firebase มีตัวระบุที่ไม่ซ้ำกันแต่ไม่เป็นความลับสำหรับโปรเจ็กต์ของคุณ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับไฟล์กำหนดค่านี้ โปรดไป ที่ทำความเข้าใจโปรเจ็กต์ Firebase
คุณสามารถดาวน์โหลด ไฟล์การกำหนดค่า Firebase อีกครั้งได้ทุกเมื่อ
ตรวจสอบให้แน่ใจว่าชื่อไฟล์กำหนดค่าไม่ได้ต่อท้ายด้วยอักขระเพิ่มเติม เช่น
(2)
ย้ายไฟล์ปรับแต่งของคุณไปที่รากของโปรเจ็กต์ Xcode ของคุณ หากได้รับแจ้ง ให้เลือกเพื่อเพิ่มไฟล์กำหนดค่าให้กับเป้าหมายทั้งหมด
หากคุณมี ID บันเดิลหลายรายการในโปรเจ็กต์ของคุณ คุณต้องเชื่อมโยง ID บันเดิลแต่ละรายการกับแอปที่ลงทะเบียนในคอนโซล Firebase เพื่อให้แต่ละแอปมีไฟล์ GoogleService-Info.plist
ของตัวเองได้
เพิ่ม Firebase SDK ลงในแอปของคุณ
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการการพึ่งพา Firebase
- ใน Xcode เมื่อโปรเจ็กต์แอปของคุณเปิดอยู่ ให้ไปที่ File > Add Package
- เมื่อได้รับแจ้ง ให้เพิ่มพื้นที่เก็บข้อมูล SDK แพลตฟอร์ม Firebase Apple:
- เลือกไลบรารี Firebase Cloud Messaging
- เพิ่มแฟล็ก
-ObjC
ไปยังส่วน Other Linker Flags ของการตั้งค่า build ของเป้าหมายของคุณ - เพื่อประสบการณ์ที่ดีที่สุดกับ Firebase Cloud Messaging เราขอแนะนำ ให้เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase ของคุณ และเพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปของคุณ คุณสามารถเลือกไลบรารีที่ไม่มีการรวบรวม IDFA หรือด้วยการรวบรวม IDFA
- เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขและดาวน์โหลดการอ้างอิงของคุณโดยอัตโนมัติในเบื้องหลัง
https://github.com/firebase/firebase-ios-sdk.git
อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ของคุณ
อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ของคุณไปยัง Firebase หากคุณยังไม่มีคีย์การตรวจสอบสิทธิ์ APN โปรดสร้างคีย์ดังกล่าวใน ศูนย์สมาชิกนักพัฒนา Apple
ภายในโปรเจ็กต์ของคุณในคอนโซล 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
คุณต้องปิดใช้งานการสลับตัวแทนของแอปด้วย สำหรับข้อมูลเพิ่มเติม โปรดดู คำแนะนำ 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:
โดยทั่วไปจะเรียกวิธีนี้หนึ่งครั้งต่อแอปที่เริ่มต้นด้วยโทเค็นการลงทะเบียน เมื่อเรียกวิธีนี้ เป็นเวลาที่เหมาะสมที่สุดในการ:
- หากโทเค็นการลงทะเบียนเป็นโทเค็นใหม่ ให้ส่งไปยังเซิร์ฟเวอร์แอปพลิเคชันของคุณ
- สมัครสมาชิกโทเค็นการลงทะเบียนในหัวข้อ สิ่งนี้จำเป็นสำหรับการสมัครสมาชิกใหม่หรือในสถานการณ์ที่ผู้ใช้ติดตั้งแอพใหม่อีกครั้ง
คุณสามารถดึงโทเค็นได้โดยตรงโดยใช้ โทเค็น (เสร็จสิ้น :) มีข้อผิดพลาดที่ไม่ใช่ค่าว่างหากการเรียกโทเค็นล้มเหลวไม่ว่าด้วยวิธีใดก็ตาม
สวิฟท์
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
ขั้นตอนถัดไป
หากต้องการก้าวไปไกลกว่าข้อความแจ้งเตือนและเพิ่มลักษณะการทำงานขั้นสูงอื่นๆ ให้กับแอปของคุณ โปรดดู: