Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Gửi tin nhắn thử nghiệm tới ứng dụng Apple chạy nền

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Để 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 tới 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 - nó 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 Apple cho FCM.

Thêm Firebase vào dự án Apple của bạn

Phần này bao gồm các nhiệm vụ bạn có thể đã hoàn thành nếu bạn đã bật các tính năng Firebase khác cho ứng dụng của mình. Đối với FCM cụ thể, bạn sẽ cần tải lên khóa xác thực APN của mìnhđăng ký nhận thông báo từ xa .

Điều kiện tiên quyết

  • Cài đặt như sau:

    • Xcode 13.3.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 10
      • macOS 10.12
      • tvOS 12
      • watchOS 6
  • Thiết lập một thiết bị Apple vật lý để chạy ứng dụng của bạn và hoàn thành các tác vụ sau:

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 một 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, bạn cần đăng ký ứng dụng với dự án Firebase của mình. Đăng ký ứng dụng của bạn thường được gọi là "thêm" ứng dụng của bạn vào dự án của bạn.

  1. Chuyển đến bảng điều khiển Firebase .

  2. Ở giữa trang tổng quan về 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 ứ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.

  3. Nhập ID gói ứng dụng của bạn vào trường ID gói .

  4. (Tùy chọn) Nhập thông tin ứng dụng khác: Biệt hiệu ứng dụng và ID 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 Tải xuống GoogleService-Info.plist để nhận tệp cấu hình nền tảng Firebase của Apple ( GoogleService-Info.plist ).

  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, 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 của riêng mình.

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.

  1. Trong Xcode, khi dự án ứng dụng của bạn đang mở, hãy điều hướng đến 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 Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Chọn thư viện Nhắn tin qua đám mây của Firebase.
  5. Để 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 và thêm SDK Firebase cho Google Analytics vào ứng dụng của mình. 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.
  6. 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.

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 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 Firebase, chọn biểu tượng bánh răng, chọn Cài đặt dự án , sau đó chọn tab Nhắn tin qua đám mây .

  2. Trong khóa xác thực APN dưới 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 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 được chia sẻ như được hiển thị:

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

    Nhanh

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Định cấu hình phiên bản được chia sẻ FirebaseApp trong ứng dụng của đại biểu ứng dụng của bạn application(_:didFinishLaunchingWithOptions:) :

    Nhanh

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

Đăng ký nhận 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. Call registerForRemoteNotifications như hình:

Nhanh

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()

Objective-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];

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 mã thông báo hoặc lưu trữ an toàn sau khi bạn truy xuất.

Theo mặc định, FCM SDK 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.

Theo 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ý thông qua phương thức nhắn tin: FIRMessagingDelegate messaging:didReceiveRegistrationToken: của FIRMessagingDelegate. SDK FCM truy xuất mã thông báo mới hoặc mã 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 mất hiệu lực. Trong mọi trường hợp, FCM SDK gọi messaging:didReceiveRegistrationToken: với 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 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 đại biểu ứng dụng của bạn tuân theo giao thức đại biểu nhắn tin, bạn có thể đặt đại biểu trên application:didFinishLaunchingWithOptions: cho chính nó.

Nhanh

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

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 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 nó đế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 đăng ký mới hoặc trong các trường hợp người dùng đã cài đặt lại ứng dụng.

Bạn có thể lấy 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 không rỗng đượ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)"
  }
}

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 pháp này bất kỳ lúc nào để truy cập mã thông báo thay vì lưu trữ nó.

Làm mới mã thông báo giám sát

Để đượ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 phù hợp với giao thức đại biểu 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.
}

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 ủ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

  1. Cài đặt và chạy ứng dụng trên thiết bị mục tiêu. Bạn sẽ cần chấp nhận yêu cầu quyền nhận thông báo từ xa.

  2. Đảm bảo rằng ứng dụng đang ở chế độ nền trên thiết bị.

  3. Mở trình soạn thảo Thông báo và chọn Thông báo mới .

  4. Nhập nội dung tin nhắn.

  5. Chọn Gửi tin nhắn kiểm tra .

  6. 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.

  7. Nhấp vào Kiểm tra

Sau khi bạn nhấp vào Kiểm tra , thiết bị khách được nhắm mục tiêu (với ứng dụng ở chế độ nền) sẽ nhận được thông báo trong trung tâm 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 trang tổng quan báo cáo FCM , ghi lại số lượng tin nhắn được gửi và mở trên các 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 các ứng dụng Android.

Bước tiếp theo

Để vượt xa các 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 của bạn, hãy xem: