Gửi tin nhắn thử nghiệm đến một ứng dụng Apple ở chế độ nền

Để 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 thông báo kiểm thử từ Trình soạn thông báo đến thiết bị phát triển khi ứng dụng chạy trong nền trên thiết bị. Trang này liệt kê tất cả các bước để thực hiện việc này, từ thiết lập đến xác minh – có thể bao gồm các bước bạn đã hoàn tất nếu bạn đã thiết lập một ứng dụng khách của Apple cho FCM.

Thêm Firebase vào dự án Apple

Phần này trình bày các thao tác mà bạn có thể đã hoàn thành nếu đã bật các tính năng khác của Firebase cho ứng dụng. Riêng đối với FCM, bạn cần phải tải khoá xác thực APN lênđăng ký 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
  • 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 đây trở lên:
      • iOS 11
      • macOS 10.13
      • tvOS 12
      • watchOS 6
  • Thiết lập một thiết bị Apple thực để chạy ứng dụng của bạn và hoàn thành những thao tá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 Apple của bạn.
    • Bật thông báo đẩy trong XCode trong phần App > Capabilities (Ứng dụng > Khả năng).

Nếu chưa có dự án Xcode và chỉ muốn dùng thử một sản phẩm của Firebase, bạn có thể tải một trong các mẫu bắt đầu nhanh của chúng tôi xuống.

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 một dự án Firebase để kết nối với ứng dụng của mình. Hãy xem bài viết 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 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 thường được gọi là "thêm" ứng dụng vào dự án.

  1. Truy cập vào bảng điều khiển của Firebase.

  2. Ở 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 Add app (Thêm ứng dụng) để hiển thị các lựa chọn về nền tảng.

  3. Nhập mã gói của ứng dụng vào trường mã gói.

  4. (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ụngMã cửa hàng ứng dụng.

  5. Nhấp vào Đăng ký ứng dụng.

Thêm tệp cấu hình Firebase

  1. Nhấp vào Download GoogleService-Info.plist xuống để nhận tệp cấu hình Firebase Apple nền tảng (GoogleService-Info.plist).

  2. Di chuyển tệp cấu hình vào gốc của dự án Xcode. Nếu được nhắc, hãy 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ã nhận dạng gói trong dự án, bạn phải liên kết từng mã nhận dạng gói với một ứng dụng đã đăng ký trong bảng điều khiển của 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.

  1. Trong Xcode, khi dự án ứng dụng của bạn đang mở, hãy chuyển đến File > Add Packages (Tệp > Thêm gói).
  2. Khi được nhắc, hãy thêm kho lưu trữ SDK nền tảng Apple của Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Chọn thư viện Giải pháp gửi thông báo qua đám mây của Firebase.
  5. 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.
  6. Để có trải nghiệm tối ưu với Giải pháp gửi thông báo qua đám mây của Firebase, 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 mình. Bạn có thể chọn thư viện không thu thập IDFA hoặc thư viện có thu thập IDFA.
  7. Khi hoàn tất, Xcode sẽ tự động bắt đầu phân giải và tải các phần phụ thuộc của bạn xuống ở chế độ nền.

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 bạn 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.

  1. Bên trong dự án của bạn trong bảng điều khiển của Firebase, hãy chọn biểu tượng bánh răng, chọn Cài đặt dự án, sau đó chọn thẻ Gửi thông báo qua đám mây.

  2. Trong khoá xác thực ANG ở bên dưới phần Cấu hình ứng dụng iOS, hãy nhấp vào nút Tải lên.

  3. Duyệt đến vị trí bạn đã lưu khoá, chọn khoá đó rồi nhấp vào Open (Mở). Thêm mã khoá của 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 được chia sẻ như sau:

  1. Nhập mô-đun FirebaseCore trong UIApplicationDelegate, cũng như bất kỳ mô-đun Firebase nào khác mà đại diện ứng dụng của bạn sử dụng. Ví dụ: Cách sử dụng Cloud Firestore và Xác thực:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Định cấu hình một thực thể dùng chung của FirebaseApp trong phương thức application(_:didFinishLaunchingWithOptions:) của uỷ quyền ứng dụng:

    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];
  3. 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 ứng dụng đó vào cấu trúc App thông qua UIApplicationDelegateAdaptor hoặc NSApplicationDelegateAdaptor. Bạn cũng phải tắt tính năng uỷ quyền ứng dụng. Để biết thêm thông tin, hãy xem hướng dẫn về 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ý 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 ứng dụng, hãy đăng ký thông báo từ xa cho ứng dụng của bạn. Gọi registerForRemoteNotifications như sau:

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 mã thông báo đăng ký của thiết bị đó. Vì bạn cần nhập mã thông báo vào một trường trong Trình soạn thảo thông báo để hoàn tất hướng dẫn này, nên hãy nhớ sao chép hoặc lưu trữ mã thông báo an toàn sau khi 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 mục tiêu đến mọi phiên bản cụ thể của ứng dụ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 messaging:didReceiveRegistrationToken: của FIRMessagingDelegate. SDK FCM truy xuấ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 không hợp lệ. Trong mọi trường hợp, SDK FCM sẽ gọi messaging:didReceiveRegistrationToken: bằng 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 giao thức uỷ 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 tính năng uỷ quyền ứng dụng của bạn tuân thủ giao thức uỷ quyền nhắn tin, thì bạn có thể thiết lập tính năng uỷ quyền trên application:didFinishLaunchingWithOptions: cho chính giao thức đó.

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 qua phương thức messaging:didReceiveRegistrationToken:. Phương thức 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, đâ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 các 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ể truy xuất trực tiếp 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 vào mã thông báo thay vì lưu trữ mã đó.

Giám sát quá trình làm mới mã thông báo

Để nhận thông báo mỗi khi mã thông báo được cập nhật, hãy cung cấp một thực thể uỷ quyền phù hợp với giao thức uỷ quyền nhắn tin. Ví dụ sau đây đăng ký phương thức uỷ quyền và thêm phương thức uỷ quyền phù 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ể theo dõi 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

  1. Cài đặt và chạy ứng dụng trên thiết bị mục tiêu. Trên các thiết bị 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.

  2. Hãy đảm bảo ứng dụng đang chạy trong nền trên thiết bị.

  3. Trong bảng điều khiển của Firebase, hãy mở trang Nhắn tin.

  4. Nếu đây là thông báo đầu tiên của bạn, hãy chọn Tạo chiến dịch đầu tiên.

    1. Chọn Tin nhắn thông báo Firebase rồi chọn Tạo.
  5. 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.

  6. Nhập nội dung tin nhắn. Tất cả các trường khác là không bắt buộc.

  7. Chọn Gửi tin nhắn thử nghiệm trên ngăn bên phải.

  8. 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ý bạn nhận được ở phần trước của hướng dẫn này.

  9. Chọn Kiểm tra.

Sau khi bạn chọn Test (Kiểm thử), thiết bị khách được nhắm đến (có ứng dụng chạy trong nền) sẽ nhận được thông báo.

Để biết thông tin chi tiết về quá trình gửi tin nhắn đến ứng dụng của bạn, hãy xem Trang tổng quan báo cáo FCM. Trang tổng quan này ghi lại số lượng tin nhắn được gửi và mở trên các thiết bị của 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) cho các ứng dụng Android.

Các bước tiếp theo

Để xem không chỉ 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, hãy xem: