Để bắt đầu sử dụng FCM, hãy xây dựng trường hợp sử dụng đơn giản nhất: gửi một tin nhắn thông báo thử nghiệm từ Trình soạn thông báo sang thiết bị phát triển khi thiết bị chạy trong nền. Trang này liệt kê tất cả các bước để thực hiện điều này, từ thiết lập cho đến xác minh — Báo cáo có thể bao gồm các bước bạn đã hoàn thành nếu bạn đã thiết lập một ứng dụng khách của Apple với giá FCM.
Thêm Firebase vào dự án Apple
Phần này đề cập đến những việc bạn có thể đã hoàn thành nếu bạn đã bật tính năng này các tính năng khác của Firebase cho ứng dụng của bạn. Riêng đối với FCM, bạn sẽ cần tải khoá xác thực APN 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 15.2 trở lên
Hãy đảm bảo 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 đến các phiên bản nền tảng sau trở lên:
- iOS 13
- macOS 10.15
- tvOS 13
- watchOS 7
- Dự án của bạn phải nhắm đến các phiên bản nền tảng sau trở lên:
Thiết lập thiết bị Apple thực để chạy ứng dụng của bạn, và hoàn thành các công việc sau:
- Lấy Khoá xác thực thông báo đẩy của Apple cho Tài khoản nhà phát triển của Apple.
- Bật thông báo đẩy trong XCode trong App > Chức năng.
- Đăng nhập vào Firebase bằng Tài khoản Google.
Nếu bạn chưa có dự án Xcode và chỉ muốn dùng thử Firebase sản phẩm, 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 một dự án Firebase
Trước khi có thể thêm Firebase vào ứng dụng Apple, bạn cần tạo Firebase dự án để kết nối với ứng dụng của bạn. Truy cập/ghé qua Tìm hiểu về các dự án Firebase để tìm hiểu thêm Dự án Firebase.
Đăng ký ứng dụng của bạn với Firebase
Để sử dụng Firebase trong ứng dụng của Apple, bạn cần đăng ký ứng dụng của mình với Dự án Firebase. Việc đăng ký ứng dụng của bạn thường được gọi là "thêm" ứng dụng của bạn đến dự án.
Chuyển đến bảng điều khiển của Firebase.
Ở giữa trang tổng quan về dự án, hãy nhấp vào biểu tượng iOS+ để bắt đầu quy trình thiết lập.
Nếu bạn đã thêm một ứng dụng vào dự án Firebase, hãy nhấp vào Thêm ứng dụng để hiển thị các tuỳ chọn nền tảng.
Nhập mã gói của ứng dụng vào trường mã gói.
(Không bắt buộc) Nhập thông tin khác về ứng dụng: Biệt hiệu của ứng dụng và Mã cửa hàng ứng dụng.
Nhấp vào Đăng ký ứng dụng.
Thêm tệp cấu hình Firebase
Nhấp vào Tải GoogleService-Info.plist xuống để nhận Apple Firebase tệp cấu hình nền tảng (
GoogleService-Info.plist
).Di chuyển tệp cấu hình vào gốc của dự án Xcode. Nếu được nhắc, chọn để thêm tệp cấu hình vào tất cả mục tiêu.
Nếu có nhiều mã gói trong dự án, bạn phải liên kết từng gói
Mã nhận dạng của một ứng dụng đã đăng ký trong bảng điều khiển Firebase để mỗi ứng dụng đều có thể có
tệp GoogleService-Info.plist
riêng.
Thêm Firebase SDK 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 Firebase.
- Trong Xcode, khi dự án ứng dụng của bạn đang mở, hãy chuyển đến Tệp > Thêm gói.
- 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 Firebase Cloud Messaging.
- Thêm cờ
-ObjC
vào mục Cờ trình liên kết khác trong chế độ cài đặt bản dựng của mục tiêu. - Để có trải nghiệm tối ưu với Firebase Cloud Messaging, bạn nên bật Google Analytics trong dự án Firebase và thêm Firebase SDK cho Google Analytics vào ứng dụng của bạn. Bạn có thể hãy chọn thư viện không thu thập IDFA hoặc có thu thập IDFA.
- Khi hoàn tất, Xcode sẽ tự động bắt đầu phân giải và tải xuống các phần phụ thuộc trong nền.
https://github.com/firebase/firebase-ios-sdk.git
Tải khoá xác thực APN lên
Tải khoá xác thực APN của bạn lên Firebase. Nếu chưa có khoá xác thực APN hãy nhớ tạo một khoá trong Trung tâm thành viên dành cho 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 Project Settings (Cài đặt dự án), sau đó chọn Thẻ Giải pháp gửi thông báo qua đám mây.
-
Trong khoá xác thực AAPN ở phần Cấu hình ứng dụng iOS, nhấp vào nút Tải lên .
-
Duyệt tới vị trí bạn đã lưu khoá của mình, chọn khoá đó rồi nhấp vào Mở. Thêm mã khoá cho khoá (có trong Trung tâm thành viên dành cho nhà phát triển của Apple) rồi nhấp vào Tải lên.
Khởi chạy Firebase trong ứng dụng của bạn
Bạn cần thêm mã khởi chạy Firebase vào ứng dụng của mình. Nhập mô-đun Firebase và định cấu hình một bản sao dùng chung như sau:
- Nhập mô-đun
FirebaseCore
trongUIApplicationDelegate
cũng như bất kỳ tên nào khác Các mô-đun Firebase mà người được uỷ quyền sử dụng. Ví dụ: để sử dụng Cloud Firestore và 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; // ...
- Định cấu hình một
FirebaseApp
thực thể dùng chung trong Phương thứcapplication(_:didFinishLaunchingWithOptions:)
: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];
- Nếu đang sử dụng SwiftUI, bạn phải tạo một ứng dụng uỷ quyền và đính kèm nó
đến cấu trúc
App
của bạn thông quaUIApplicationDelegateAdaptor
hoặcNSApplicationDelegateAdaptor
. Bạn cũng phải tắt tính năng uỷ quyền ứng dụng. Để hãy xem hướng dẫn về SwiftUI để biết thêm thông tin.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ý nhận thông báo từ xa
Khi khởi động hoặc tại thời điểm mong muốn trong quy trình đăng ký của bạn, đăng ký ứng dụng của bạn để nhận thông báo từ xa. Gọi điệnregisterForRemoteNotifications
như minh hoạ:
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];
Truy cập vào 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 thiết bị đó mã thông báo đăng ký. Do bạn cần nhập mã thông báo vào một trường trong Trình soạn thông báo để hoàn thành hướng dẫn này, hãy nhớ sao chép mã thông báo hoặc lưu trữ an toàn sau khi bạn truy xuất.
Theo mặc định, SDK FCM sẽ tạo một 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 đến vào phiên bản cụ thể bất kỳ của ứng dụng.
Tương tự như cách mà các nền tảng của Apple thường cung cấp 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ý quaFIRMessagingDelegate
messaging:didReceiveRegistrationToken:
.
SDK FCM truy xuất một mã thông báo mới hoặc hiện có trong quá trình khởi chạy ứng dụng ban đầu và
bất cứ khi nào mã thông báo được cập nhật hoặc bị mất hiệu lực.
Trong mọi trường hợp, SDK FCM sẽ gọi messaging:didReceiveRegistrationToken:
có 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 xoá dữ liệu ứng dụng.
Thiết lập tính năng uỷ quyền nhắn tin
Để nhận mã thông báo đăng ký, hãy triển khai tính năng uỷ quyền nhắn tin
giao thức và thiết lập thuộc tính delegate
của FIRMessaging
sau khi gọi
[FIRApp configure]
.
Ví dụ: nếu ứng dụng uỷ quyền của bạn tuân theo phương thức uỷ quyền thông báo
giao thức, bạn có thể đặt ủy quyền trên application:didFinishLaunchingWithOptions:
cho chính nó.
Swift
Messaging.messaging().delegate = self
Objective-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 phân phối thông qua phương thức
messaging:didReceiveRegistrationToken:
. Phương thức này thường được gọi một lần mỗi
ứng dụng sẽ bắt đầu bằng mã thông báo đăng ký. Khi phương thức này được gọi, đây là thời điểm lý tưởng để:
- Nếu mã thông báo đăng ký là mới, hãy gửi mã đó đến máy chủ ứng dụng của bạn.
- Đăng ký mã thông báo đăng ký cho các chủ đề. Điều này chỉ bắt buộc đối với gói thuê bao 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ể trực tiếp truy xuất mã thông báo bằng cách sử dụng token(complete:). Lỗi không rỗng sẽ đượ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.
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; } }];
Bạn có thể sử dụng phương thức này bất cứ lúc nào để truy cập mã thông báo thay vì lưu trữ nó.
Giám sát quá trình làm mới mã thông báo
Để được thông báo mỗi khi mã thông báo được cập nhật, hãy cung cấp thực thể đại diện phù hợp vào giao thức uỷ quyền nhắn tin. Ví dụ sau đây đăng ký uỷ quyền và thêm phương thức uỷ quyền thích hợp:
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. }
Ngoài ra, bạn có thể nghe NSNotification
có tên
kFIRMessagingRegistrationTokenRefreshNotification
thay vì cung cấp phương thức uỷ 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ị mục tiêu. Trên thiết bị Apple, bạn sẽ cần để chấp nhận yêu cầu cấp quyền nhận thông báo từ xa.
Hãy đảm bảo ứng dụng đang chạy trong 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à thư đầu tiên của bạn, hãy chọn Tạo chiến dịch.
- Chọn Tin nhắn thông báo Firebase rồi chọn Tạo.
Nếu không, trên thẻ 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 trường khác là không bắt buộc.
Chọn Gửi tin nhắn thử nghiệm trên ngăn bên phải.
Trong trường có nhãn Add an FCM registration token (Thêm mã thông báo đăng ký FCM), hãy nhập thông tin đăng ký mã thông báo mà bạn đã nhận được ở 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 thử, thiết bị khách được nhắm đến (với ứng dụng ở nền) sẽ nhận được thông báo.
Để biết thông tin chi tiết về cách gửi thư đến ứng dụng của bạn, hãy xem Trang tổng quan báo cáo FCM, nơi ghi lại các số thư được gửi và mở trên thiết bị Apple và Android, cùng với dữ liệu về "lượt hiển thị" (thông báo mà người dùng nhìn thấy) đối với ứng dụng Android.
Các bước tiếp theo
Để không chỉ dừng lại ở tin nhắn thông báo và thêm các hành vi khác, nâng cao hơn vào ứng dụng, hãy xem: