Để bắt đầu với FCM, hãy xây dựng trường hợp sử dụng đơn giản nhất: gửi tin nhắn thông báo thử nghiệm từ trình tổng hợp Thông báo đến thiết bị phát triển khi ứng dụng ở chế độ nền trên thiết bị. Trang này liệt kê tất cả các bước để đạt được điều này, từ thiết lập đến xác minh — trang này có thể bao gồm các bước bạn đã hoàn thành nếu bạn đã thiết lập ứng dụng khách của Apple cho FCM.
Thêm Firebase vào dự án Apple của bạn
Phần này bao gồm các tác vụ bạn có thể đã hoàn thành nếu bạn đã bật các tính năng khác của Firebase cho ứng dụng của mình. Đối với FCM cụ thể, bạn sẽ cần tải khóa xác thực APN của mình lên và đăng ký nhận thông báo từ xa .
điều kiện tiên quyết
Cài đặt như sau:
- Xcode 14.1 trở lên
Đảm bảo rằng dự án của bạn đáp ứng các yêu cầu sau:
- Dự án của bạn phải nhắm mục tiêu các phiên bản nền tảng này trở lên:
- iOS 11
- macOS 10.13
- tvOS 12
- watchOS 6
- Dự án của bạn phải nhắm mục tiêu các phiên bản nền tảng này trở lên:
Thiết lập thiết bị vật lý của Apple để chạy ứng dụng của bạn và hoàn thành các tác vụ sau:
- Nhận Khóa xác thực thông báo đẩy của Apple cho tài khoản Nhà phát triển Apple của bạn.
- Bật Thông báo đẩy trong XCode trong Ứng dụng > Khả năng .
- Đăng nhập vào Firebase bằng tài khoản Google của bạn.
Nếu bạn chưa có dự án Xcode và chỉ muốn dùng thử sản phẩm Firebase, bạn có thể tải xuống một trong các mẫu bắt đầu nhanh của chúng tôi.
Tạo dự án Firebase
Trước khi có thể thêm Firebase vào ứng dụng Apple của mình, bạn cần tạo dự án Firebase để kết nối với ứng dụng của mình. Truy cập Tìm hiểu các dự án Firebase để tìm hiểu thêm về các dự án Firebase.
Đăng ký ứng dụng của bạn với Firebase
Để sử dụng Firebase trong ứng dụng Apple của bạn, bạn cần đăng ký ứng dụng của mình với dự án Firebase. Đăng ký ứng dụng của bạn thường được gọi là "thêm" ứng dụng vào dự án của bạn.
Chuyển đến bảng điều khiển Firebase .
Ở giữa trang tổng quan dự án, hãy nhấp vào biểu tượng iOS+ để khởi chạy quy trình thiết lập.
Nếu bạn đã thêm một ứng dụng vào dự án Firebase của mình, hãy nhấp vào Thêm ứng dụng để hiển thị các tùy chọn nền tảng.
Nhập ID gói ứng dụng của bạn vào trường ID gói .
ID gói xác định duy nhất một ứng dụng trong hệ sinh thái của Apple.
Tìm ID gói của bạn: mở dự án của bạn trong Xcode, chọn ứng dụng cấp cao nhất trong trình điều hướng dự án, sau đó chọn tab Chung .
Giá trị của trường Định danh gói là ID gói (ví dụ:
com.yourcompany.yourproject
).Xin lưu ý rằng giá trị ID gói phân biệt chữ hoa chữ thường và không thể thay đổi giá trị này đối với ứng dụng Firebase này sau khi đã đăng ký với dự án Firebase của bạn.
(Tùy chọn) Nhập thông tin ứng dụng khác: Biệt hiệu ứng dụng và ID App Store .
Biệt hiệu của ứng dụng : Mã định danh nội bộ, tiện lợi chỉ hiển thị với bạn trong bảng điều khiển Firebase
ID cửa hàng ứng dụng : Được Firebase Dynamic Links sử dụng để chuyển hướng người dùng đến trang App Store của bạn và được Google Analytics sử dụng để nhập các sự kiện chuyển đổi vào Google Ads . Nếu ứng dụng của bạn chưa có ID App Store, bạn có thể thêm ID sau trong cài đặt Dự án của mình.
Nhấp vào Đăng ký ứng dụng .
Thêm tệp cấu hình Firebase
Nhấp vào Tải xuống GoogleService-Info.plist để lấy tệp cấu hình nền tảng Apple Firebase của bạn (
GoogleService-Info.plist
).Tệp cấu hình Firebase chứa các mã định danh duy nhất nhưng không bí mật cho dự án của bạn. Để tìm hiểu thêm về tệp cấu hình này, hãy truy cập Tìm hiểu các dự án Firebase .
Bạn có thể tải xuống lại tệp cấu hình Firebase của mình bất kỳ lúc nào.
Đảm bảo tên tệp cấu hình không được thêm các ký tự bổ sung, như
(2)
.
Di chuyển tệp cấu hình của bạn vào thư mục gốc của dự án Xcode của bạn. Nếu được nhắc, hãy chọn để thêm tệp cấu hình vào tất cả các mục tiêu.
Nếu bạn có nhiều ID gói trong dự án của mình, thì bạn phải liên kết từng ID gói với một ứng dụng đã đăng ký trong bảng điều khiển Firebase để mỗi ứng dụng có thể có tệp GoogleService-Info.plist
riêng.
Thêm SDK Firebase vào ứng dụng của bạn
Sử dụng Trình quản lý gói Swift để cài đặt và quản lý các phần phụ thuộc của Firebase.
- Trong Xcode, khi dự án ứng dụng của bạn đang mở, hãy điều hướng đến File > Add Packages .
- Khi được nhắc, hãy thêm kho lưu trữ SDK nền tảng Apple của Firebase:
- Chọn thư viện Nhắn tin qua đám mây Firebase.
- Để có trải nghiệm tối ưu với Nhắn tin qua đám mây của Firebase, chúng tôi khuyên bạn nên bật Google Analytics trong dự án Firebase của mình và thêm SDK Firebase dành cho Google Analytics vào ứng dụng của bạn. Bạn có thể chọn thư viện không có bộ sưu tập IDFA hoặc có bộ sưu tập IDFA.
- Khi hoàn tất, Xcode sẽ tự động bắt đầu giải quyết và tải xuống các phần phụ thuộc của bạn trong nền.
https://github.com/firebase/firebase-ios-sdk
Tải lên khóa xác thực APN của bạn
Tải khóa xác thực APN của bạn lên Firebase. Nếu bạn chưa có khóa xác thực APN, hãy đảm bảo tạo một khóa trong Trung tâm thành viên nhà phát triển của Apple .
Bên trong dự án của bạn trong bảng điều khiển Firebase, hãy chọn biểu tượng bánh răng, chọn Cài đặt dự án rồi chọn tab Nhắn tin qua đám mây .
Trong khóa xác thực APN bên dưới cấu hình ứng dụng iOS , hãy nhấp vào nút Tải lên .
Duyệt đến vị trí mà bạn đã lưu khóa của mình, chọn nó và nhấp vào Mở . Thêm ID khóa cho khóa (có sẵn trong Trung tâm thành viên dành cho nhà phát triển của Apple ) và nhấp vào Tải lên .
Khởi tạo Firebase trong ứng dụng của bạn
Bạn sẽ cần thêm mã khởi tạo Firebase vào ứng dụng của mình. Nhập mô-đun Firebase và định cấu hình phiên bản dùng chung như được hiển thị:
- Nhập mô-đun
FirebaseCore
trongUIApplicationDelegate
của bạn, cũng như bất kỳ mô-đun Firebase nào khác mà ứng dụng ủy quyền của bạn sử dụng. Ví dụ: để sử dụng Cloud Firestore và Xác thực:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Nhanh
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Mục tiêu-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Định cấu hình một phiên bản chia sẻ
FirebaseApp
trong phương thức applicationapplication(_:didFinishLaunchingWithOptions:)
của ứng dụng của bạn:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Nhanh
// Use Firebase library to configure APIs FirebaseApp.configure()
Mục tiêu-C
// Use Firebase library to configure APIs [FIRApp configure];
- Nếu đang sử dụng SwiftUI, bạn phải tạo một đại biểu ứng dụng và đính kèm nó vào cấu trúc
App
của mình thông quaUIApplicationDelegateAdaptor
hoặcNSApplicationDelegateAdaptor
. Bạn cũng phải vô hiệu hóa tính năng xoay đại biểu của ứng dụng. Để biết thêm thông tin, hãy xem hướng dẫn SwiftUI .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Đăng ký thông báo từ xa
Khi khởi động hoặc tại điểm mong muốn trong luồng ứng dụng của bạn, hãy đăng ký ứng dụng của bạn để nhận thông báo từ xa. GọiregisterForRemoteNotifications
như hình:Nhanh
UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: { _, _ in } ) application.registerForRemoteNotifications()
Mục tiêu-C
[UNUserNotificationCenter currentNotificationCenter].delegate = self; UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { // ... }]; [application registerForRemoteNotifications];
Truy cập mã thông báo đăng ký
Để gửi tin nhắn đến một thiết bị cụ thể, bạn cần biết mã thông báo đăng ký của thiết bị đó. Vì bạn sẽ cần nhập mã thông báo vào một trường trong trình tổng hợp Thông báo để hoàn thành hướng dẫn này, hãy đảm bảo sao chép hoặc lưu trữ mã thông báo một cách an toàn sau khi bạn truy xuất.
Theo mặc định, SDK FCM tạo mã thông báo đăng ký cho phiên bản ứng dụng khách khi khởi chạy ứng dụng. Tương tự như mã thông báo thiết bị APN, mã thông báo này cho phép bạn gửi thông báo được nhắm mục tiêu đến bất kỳ phiên bản cụ thể nào của ứng dụng của bạn.
Cũng giống như cách mà các nền tảng của Apple thường phân phối mã thông báo thiết bị APN khi khởi động ứng dụng, FCM cung cấp mã thông báo đăng ký qua phương thức FIRMessagingDelegate
's messaging:didReceiveRegistrationToken:
SDK FCM truy xuất mã thông báo mới hoặc hiện có trong lần khởi chạy ứng dụng đầu tiên và bất cứ khi nào mã thông báo được cập nhật hoặc vô hiệu hóa. Trong mọi trường hợp, SDK FCM gọi messaging:didReceiveRegistrationToken:
bằng một mã thông báo hợp lệ.
Mã thông báo đăng ký có thể thay đổi khi:
- Ứng dụng được khôi phục trên một thiết bị mới
- Người dùng gỡ cài đặt/cài đặt lại ứng dụng
- Người dùng xóa dữ liệu ứng dụng.
Đặt đại biểu nhắn tin
Để nhận mã thông báo đăng ký, hãy triển khai giao thức ủy quyền nhắn tin và đặt thuộc tính delegate
của FIRMessaging
sau khi gọi [FIRApp configure]
. Ví dụ: nếu ứng dụng ủy quyền của bạn tuân thủ giao thức ủy quyền nhắn tin, bạn có thể đặt ủy quyền trên application:didFinishLaunchingWithOptions:
thành chính nó.
Nhanh
Messaging.messaging().delegate = self
Mục tiêu-C
[FIRMessaging messaging].delegate = self;
Đang tìm nạp mã thông báo đăng ký hiện tại
Mã thông báo đăng ký được gửi qua phương thức messaging:didReceiveRegistrationToken:
. Phương pháp này thường được gọi một lần cho mỗi ứng dụng bắt đầu bằng mã thông báo đăng ký. Khi phương thức này được gọi, đó là thời điểm lý tưởng để:
- Nếu mã thông báo đăng ký là mới, hãy gửi nó đến máy chủ ứng dụng của bạn.
- Theo dõi mã thông báo đăng ký cho các chủ đề. Điều này chỉ được yêu cầu đối với đăng ký mới hoặc trong trường hợp người dùng đã cài đặt lại ứng dụng.
Bạn có thể truy xuất mã thông báo trực tiếp bằng cách sử dụng mã thông báo (hoàn thành:) . Lỗi non null được cung cấp nếu truy xuất mã thông báo không thành công theo bất kỳ cách nào.
Nhanh
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)" } }
Mục tiêu-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; } }];
Bạn có thể sử dụng phương pháp này bất cứ lúc nào để truy cập mã thông báo thay vì lưu trữ.
Giám sát làm mới mã thông báo
Để được thông báo bất cứ khi nào mã thông báo được cập nhật, hãy cung cấp một đại biểu tuân theo giao thức ủy nhiệm nhắn tin. Ví dụ sau đăng ký đại biểu và thêm phương thức đại biểu thích hợp:
Nhanh
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. }
Mục tiêu-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. }
Ngoài ra, bạn có thể lắng nghe NSNotification
có tên kFIRMessagingRegistrationTokenRefreshNotification
thay vì cung cấp phương thức ủy quyền. Thuộc tính mã thông báo luôn có giá trị mã thông báo hiện tại.
Gửi tin nhắn thông báo
Cài đặt và chạy ứng dụng trên thiết bị đích. Trên các thiết bị của Apple, bạn cần chấp nhận yêu cầu cấp quyền nhận thông báo từ xa.
Đảm bảo ứng dụng ở chế độ nền trên thiết bị.
Trong bảng điều khiển Firebase, hãy mở trang Nhắn tin .
Nếu đây là tin nhắn đầu tiên của bạn, hãy chọn Tạo chiến dịch đầu tiên của bạn .
- Chọn Tin nhắn thông báo Firebase và chọn Tạo .
Nếu không, trên tab Chiến dịch , hãy chọn Chiến dịch mới rồi chọn Thông báo .
Nhập nội dung tin nhắn. Tất cả các lĩnh vực khác là tùy chọn.
Chọn Gửi tin nhắn kiểm tra từ ngăn bên phải.
Trong trường có nhãn Thêm mã thông báo đăng ký FCM , hãy nhập mã thông báo đăng ký mà bạn đã nhận được trong phần trước của hướng dẫn này.
Chọn Kiểm tra .
Sau khi bạn chọn Kiểm tra , thiết bị khách được nhắm mục tiêu (có ứng dụng ở chế độ nền) sẽ nhận được thông báo.
Để biết thông tin chi tiết về việc gửi tin nhắn đến ứng dụng của bạn, hãy xem bảng điều khiển báo cáo FCM , ghi lại số lượng tin nhắn được gửi và mở trên thiết bị Apple và Android, cùng với dữ liệu về "số lần hiển thị" (thông báo mà người dùng nhìn thấy) cho ứng dụng Android.
Bước tiếp theo
Để vượt ra ngoài các tin nhắn thông báo và thêm hành vi khác, nâng cao hơn vào ứng dụng của bạn, hãy xem: