ในการเริ่มต้นใช้งาน FCM ให้สร้างกรณีการใช้งานที่ง่ายที่สุด: ส่งข้อความแจ้งเตือนการทดสอบจากผู้ แต่งการแจ้งเตือน ไปยังอุปกรณ์การพัฒนาเมื่อแอปอยู่ในพื้นหลังบนอุปกรณ์ หน้านี้แสดงขั้นตอนทั้งหมดในการดำเนินการนี้ตั้งแต่การตั้งค่าไปจนถึงการตรวจสอบซึ่งอาจครอบคลุมขั้นตอนที่คุณได้ดำเนินการไปแล้วหากคุณ ตั้งค่าแอปไคลเอ็นต์ iOS สำหรับ FCM
เพิ่ม Firebase ในโปรเจ็กต์ iOS ของคุณ
ส่วนนี้ครอบคลุมงานที่คุณอาจทำเสร็จแล้วหากคุณได้เปิดใช้งานฟีเจอร์ Firebase อื่น ๆ สำหรับแอปของคุณแล้ว สำหรับ FCM โดยเฉพาะคุณจะต้อง อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ของคุณ และ ลงทะเบียนสำหรับการแจ้งเตือนระยะไกล
ข้อกำหนดเบื้องต้น
ติดตั้งสิ่งต่อไปนี้:
- Xcode 11.0 หรือใหม่กว่า
- CocoaPods 1.9.0 หรือใหม่กว่า
ตรวจสอบให้แน่ใจว่าโครงการของคุณตรงตามข้อกำหนดเหล่านี้:
- โครงการของคุณต้องกำหนดเป้าหมายเป็น iOS 10 หรือใหม่กว่า
ตั้งค่า อุปกรณ์ iOS จริง เพื่อเรียกใช้แอปของคุณและทำงานเหล่านี้ให้เสร็จสิ้น:
- รับคีย์การตรวจสอบสิทธิ์ Apple Push Notification สำหรับ บัญชี Apple Developer ของ คุณ
- เปิดใช้งานการแจ้งเตือนแบบพุชใน XCode ภายใต้ แอพ> ความสามารถ
- ลงชื่อเข้า ใช้ Firebase โดยใช้บัญชี Google ของคุณ
หากคุณยังไม่มีโครงการ Xcode และต้องการทดลองใช้ผลิตภัณฑ์ Firebase คุณสามารถดาวน์โหลด ตัวอย่างการเริ่มต้นอย่างรวดเร็ว ของเรา
สร้างโครงการ Firebase
ก่อนที่คุณจะสามารถเพิ่ม Firebase ลงในแอป iOS คุณต้องสร้างโครงการ Firebase เพื่อเชื่อมต่อกับแอป iOS ไปที่ ทำความเข้าใจกับโครงการ Firebase เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับโครงการ Firebase
ลงทะเบียนแอปของคุณกับ Firebase
หลังจากที่คุณมีโปรเจ็กต์ Firebase คุณสามารถเพิ่มแอป iOS ของคุณลงไปได้
ไปที่ ทำความเข้าใจกับโครงการ Firebase เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดและข้อควรพิจารณาในการเพิ่มแอปในโครงการ Firebase รวมถึงวิธีจัดการรูปแบบบิวด์หลายรายการ
ไปที่ คอนโซล Firebase
ตรงกลางหน้าภาพรวมโครงการคลิกไอคอน iOS (
) เพื่อเปิดเวิร์กโฟลว์การตั้งค่าหากคุณได้เพิ่มแอปลงในโครงการ Firebase แล้วให้คลิก เพิ่มแอป เพื่อแสดงตัวเลือกแพลตฟอร์ม
ป้อนรหัสบันเดิลของแอปของคุณในฟิลด์ รหัสบันเดิลของ iOS
รหัสบันเดิล ระบุแอปพลิเคชันในระบบนิเวศของ Apple โดยไม่ซ้ำกัน
ค้นหารหัสบันเดิลของคุณ: เปิดโปรเจ็กต์ iOS ของคุณใน Xcode เลือกแอพระดับบนสุดในตัวนำทางโปรเจ็กต์จากนั้นเลือกแท็บ ทั่วไป
ค่าของช่อง Bundle Identifier คือ ID บันเดิลของ iOS (ตัวอย่างเช่น
com.yourcompany.yourproject
)โปรดทราบว่าค่ารหัสชุดเป็นแบบตรงตามตัวพิมพ์เล็กและใหญ่และไม่สามารถเปลี่ยนแปลงได้สำหรับแอป Firebase iOS นี้หลังจากที่ลงทะเบียนกับโครงการ Firebase แล้ว
(ไม่บังคับ) ป้อนข้อมูลแอปอื่น ๆ : ชื่อเล่น แอป และ รหัส App Store
ชื่อเล่นแอป : ตัวระบุความสะดวกภายในที่มองเห็นได้เฉพาะคุณในคอนโซล Firebase
App Store ID : ใช้โดย Firebase Dynamic Links เพื่อ เปลี่ยนเส้นทางผู้ใช้ไปยังหน้า App Store ของคุณ และโดย Google Analytics เพื่อ นำเข้าเหตุการณ์ Conversion ไปยัง Google Ads หากแอปของคุณยังไม่มีรหัส App Store คุณสามารถเพิ่มรหัสได้ในภายหลังใน การตั้งค่าโครงการ ของคุณ
คลิก ลงทะเบียนแอป
เพิ่มไฟล์การกำหนดค่า Firebase
คลิก ดาวน์โหลด GoogleService-Info.plist เพื่อรับไฟล์กำหนดค่า Firebase iOS ของคุณ (
GoogleService-Info.plist
)ไฟล์กำหนดค่า Firebase มีตัวระบุที่ไม่ซ้ำกัน แต่ไม่เป็นความลับสำหรับโครงการของคุณ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับไฟล์การกำหนดค่านี้โปรดไปที่ ทำความเข้าใจกับโครงการ Firebase
คุณสามารถดาวน์โหลด ไฟล์กำหนดค่า Firebase อีกครั้งได้ทุกเมื่อ
ตรวจสอบว่าชื่อไฟล์กำหนดค่าไม่ได้ต่อท้ายด้วยอักขระเพิ่มเติมเช่น
(2)
ย้ายไฟล์กำหนดค่าของคุณไปที่รูทของโปรเจ็กต์ Xcode ของคุณ หากได้รับแจ้งให้เลือกเพิ่มไฟล์กำหนดค่าให้กับเป้าหมายทั้งหมด
หากคุณมีรหัสบันเดิลหลายรายการในโปรเจ็กต์คุณต้องเชื่อมโยงรหัสบันเดิลแต่ละรายการกับแอปที่ลงทะเบียนในคอนโซล Firebase เพื่อให้แต่ละแอปมีไฟล์ GoogleService-Info.plist
ตนเอง
เพิ่ม Firebase SDK ลงในแอปของคุณ
ขอแนะนำให้ใช้ CocoaPods เพื่อติดตั้งไลบรารี Firebase อย่างไรก็ตามหากคุณไม่ต้องการใช้ CocoaPods คุณสามารถ รวมเฟรมเวิร์ก SDK ได้โดยตรง หรือใช้ Swift Package Manager เบต้า
คุณใช้ ตัวอย่างการเริ่มต้นอย่างรวดเร็ว หรือไม่ มีโปรเจ็กต์ Xcode และ Podfile (พร้อมพ็อด) อยู่แล้ว แต่คุณยังต้อง เพิ่มไฟล์การกำหนดค่า Firebase และ ติดตั้ง พ็อด
สร้าง Podfile หากคุณยังไม่มี:
cd your-project-directory
pod init
ใน Podfile ของคุณให้เพิ่ม Firebase pods ที่คุณต้องการใช้ในแอปของคุณ
คุณสามารถเพิ่ม ผลิตภัณฑ์ Firebase ที่รองรับ ลงในแอป iOS ของคุณได้
เพื่อประสบการณ์ที่ดีที่สุดกับ Firebase Cloud Messaging เราขอแนะนำให้ เปิดใช้ Google Analytics ในโครงการของคุณ นอกจากนี้ในการตั้งค่า Analytics คุณต้องเพิ่ม Firebase SDK สำหรับ Analytics ลงในแอปของคุณ
เปิดใช้งานการวิเคราะห์
# Add the Firebase pod for Google Analytics pod 'Firebase/Analytics'
# Add the pod for Firebase Cloud Messaging pod 'Firebase/Messaging'ไม่ได้เปิดใช้งานการวิเคราะห์
# Add the pod for Firebase Cloud Messaging pod 'Firebase/Messaging'
ติดตั้ง
.xcworkspace
จากนั้นเปิดไฟล์..xcworkspace
เพื่อดูโปรเจ็กต์ใน Xcode:pod install
open your-project.xcworkspace
อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ของคุณ
อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ของคุณไปยัง Firebase หากคุณยังไม่มีคีย์การตรวจสอบสิทธิ์ APN โปรดดูการ กำหนดค่า APN ด้วย FCM
ภายในโครงการของคุณในคอนโซล Firebase ให้เลือกไอคอนรูปเฟืองเลือก การตั้งค่าโครงการ จากนั้นเลือกแท็บ Cloud Messaging
ใน คีย์การตรวจสอบสิทธิ์ APN ภายใต้ การกำหนดค่าแอป iOS ให้คลิกปุ่ม อัปโหลด
เรียกดูตำแหน่งที่คุณบันทึกคีย์เลือกจากนั้นคลิก เปิด เพิ่มรหัสคีย์สำหรับคีย์ (มีอยู่ใน ใบรับรองตัวระบุและโปรไฟล์ ใน ศูนย์สมาชิกนักพัฒนาของ Apple ) แล้วคลิก อัปโหลด
เริ่มต้น Firebase ในแอปของคุณ
คุณจะต้องเพิ่มรหัสเริ่มต้น Firebase ในแอปพลิเคชันของคุณ นำเข้าโมดูล Firebase และกำหนดค่าอินสแตนซ์ที่แชร์ดังที่แสดง:
- นำเข้าโมดูล Firebase ใน
UIApplicationDelegate
ของคุณ:รวดเร็ว
import Firebase
วัตถุประสงค์ -C
@import Firebase;
- กำหนดค่าอินสแตนซ์ที่แชร์ของ
FirebaseApp
โดยทั่วไปในแอปพลิเคชันของแอปของคุณapplication:didFinishLaunchingWithOptions:
method:รวดเร็ว
// Use Firebase library to configure APIs FirebaseApp.configure()
วัตถุประสงค์ -C
// Use Firebase library to configure APIs [FIRApp configure];
ลงทะเบียนสำหรับการแจ้งเตือนระยะไกล
ไม่ว่าจะเมื่อเริ่มต้นหรือเมื่อถึงจุดที่ต้องการในขั้นตอนการสมัครของคุณให้ลงทะเบียนแอปของคุณสำหรับการแจ้งเตือนระยะไกล โทรregisterForRemoteNotifications
ตามที่แสดง: รวดเร็ว
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()
วัตถุประสงค์ -C
if ([UNUserNotificationCenter class] != nil) { // iOS 10 or later // For iOS 10 display notification (sent via APNS) [UNUserNotificationCenter currentNotificationCenter].delegate = self; UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { // ... }]; } else { // iOS 10 notifications aren't available; fall back to iOS 8-9 notifications. UIUserNotificationType allNotificationTypes = (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge); UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil]; [application registerUserNotificationSettings:settings]; } [application registerForRemoteNotifications];
เข้าถึงโทเค็นการลงทะเบียน
ในการส่งข้อความไปยังอุปกรณ์เฉพาะคุณจำเป็นต้องทราบโทเค็นการลงทะเบียนของอุปกรณ์นั้น เนื่องจากคุณจะต้องป้อนโทเค็นในช่องในโปรแกรม แต่งการแจ้งเตือน เพื่อทำบทช่วยสอนนี้ให้สมบูรณ์อย่าลืมคัดลอกโทเค็นหรือจัดเก็บอย่างปลอดภัยหลังจากที่คุณเรียกค้น
ตามค่าเริ่มต้น FCM SDK จะสร้างโทเค็นการลงทะเบียนสำหรับอินสแตนซ์แอปไคลเอ็นต์เมื่อเปิดแอป เช่นเดียวกับโทเค็นอุปกรณ์ APN โทเค็นนี้ช่วยให้คุณสามารถส่งการแจ้งเตือนที่กำหนดเป้าหมายไปยังอินสแตนซ์เฉพาะของแอปของคุณ
ในลักษณะเดียวกับที่ iOS มักส่งโทเค็นอุปกรณ์ APN เมื่อเริ่มต้นแอป FCM จะจัดเตรียมโทเค็นการลงทะเบียนผ่านทาง FIRMessagingDelegate
ของ FIRMessagingDelegate
messaging:didReceiveRegistrationToken:
method 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
แทนการจัดหาวิธีการมอบหมาย คุณสมบัติโทเค็นมีค่าโทเค็นปัจจุบันเสมอ
ส่งข้อความแจ้งเตือน
ติดตั้งและเรียกใช้แอปบนอุปกรณ์เป้าหมาย คุณจะต้องยอมรับคำขออนุญาตเพื่อรับการแจ้งเตือนระยะไกล
ตรวจสอบว่าแอปอยู่ในพื้นหลังของอุปกรณ์
เปิดตัว เรียบเรียงการแจ้งเตือน และเลือกการ แจ้งเตือนใหม่
ป้อนข้อความ
เลือก ส่งข้อความทดสอบ
ในฟิลด์ที่ระบุว่า เพิ่มโทเค็นการลงทะเบียน FCM ให้ป้อนโทเค็นการลงทะเบียนที่คุณได้รับในส่วนก่อนหน้าของคู่มือนี้
คลิก ทดสอบ
หลังจากที่คุณคลิก ทดสอบ อุปกรณ์ไคลเอนต์เป้าหมาย (ที่มีแอปอยู่เบื้องหลัง) ควรได้รับการแจ้งเตือนในศูนย์การแจ้งเตือน
สำหรับข้อมูลเชิงลึกเกี่ยวกับการส่งข้อความไปยังแอปของคุณโปรดดู แดชบอร์ดการรายงาน FCM ซึ่งบันทึกจำนวนข้อความที่ส่งและเปิดบนอุปกรณ์ iOS และ Android พร้อมกับข้อมูลสำหรับ "การแสดงผล" (การแจ้งเตือนที่ผู้ใช้เห็น) สำหรับแอป Android
ขั้นตอนถัดไป
หากต้องการก้าวไปไกลกว่าข้อความแจ้งเตือนและเพิ่มพฤติกรรมขั้นสูงอื่น ๆ ให้กับแอปของคุณโปรดดู: