Sửa đổi hành vi của thông báo qua tính năng Gửi thông báo trong ứng dụng của Firebase

Tính năng Gửi thông báo trong ứng dụng của Firebase cho phép bạn tạo, định cấu hình và nhắm mục tiêu đến các hoạt động tương tác đa dạng của người dùng, đồng thời tận dụng các tính năng của Google Analytics ngay từ đầu để liên kết các sự kiện nhắn tin với đặc điểm, hoạt động và lựa chọn thực tế của người dùng. Với một số tiện ích tích hợp bổ sung cho SDK Giải pháp gửi thông báo trong ứng dụng của Firebase, bạn có thể điều chỉnh thêm hành vi của tin nhắn trong ứng dụng, phản hồi khi người dùng tương tác với tin nhắn, kích hoạt sự kiện tin nhắn bên ngoài khung Analytics và cho phép người dùng kiểm soát việc chia sẻ dữ liệu cá nhân liên quan đến hoạt động tương tác với tin nhắn.

Trả lời khi người dùng tương tác với tin nhắn trong ứng dụng

Với thao tác, bạn có thể sử dụng thông báo trong ứng dụng để hướng người dùng đến một trang web hoặc một màn hình cụ thể trong ứng dụng của bạn.

Mã của bạn có thể phản hồi với các hoạt động tương tác cơ bản (lượt nhấp và thao tác đóng), lượt hiển thị (lượt xem đã xác minh của thông báo) cũng như hiển thị các lỗi mà SDK đã ghi lại và xác nhận. Ví dụ: khi thông báo của bạn được cấu thành dưới dạng một cửa sổ Thẻ, bạn có thể muốn theo dõi và theo dõi thêm về hai URL mà người dùng đã nhấp vào Thẻ.

Triển khai DisplayDelegate để xử lý các hoạt động tương tác với Thẻ

Bạn có thể đăng ký một uỷ quyền hiển thị thông báo trong ứng dụng. Ủy quyền này sẽ được gọi bất cứ khi nào có bất kỳ hoạt động tương tác nào với thông báo trong ứng dụng. Để thực hiện việc này, hãy triển khai một lớp cho mỗi giao thức InAppMessagingDisplayDelegate và đặt lớp đó làm thuộc tính uỷ quyền trên thực thể InAppMessaging.

Giả sử bạn muốn theo dõi đường liên kết mà người dùng đã nhấp vào trong thông báo kiểu Thẻ, hãy xác định một lớp triển khai phương thức messageClicked theo giao thức DisplayDelegate, nhờ đó cung cấp cho bạn quyền truy cập vào đường liên kết mà người dùng đã nhấp vào.

Swift

Lưu ý: Sản phẩm này không hoạt động trên các mục tiêu macOS, Mac Catalyst, App Clip hoặc watchOS.

Hãy tham khảo tài liệu tham khảo về uỷ quyền hiển thị của Swift để biết tập hợp các phương thức gọi lại có thể triển khai cũng như các tham số của những phương thức đó, bao gồm cả InAppMessagingAction.


// In CardActionFiamDelegate.swift
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {

    func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
        // ...
    }

    func messageDismissed(_ inAppMessage: InAppMessagingDisplayMessage,
                          dismissType: FIRInAppMessagingDismissType) {
        // ...
    }

    func impressionDetected(for inAppMessage: InAppMessagingDisplayMessage) {
        // ...
    }

    func displayError(for inAppMessage: InAppMessagingDisplayMessage, error: Error) {
        // ...
    }

}

// In AppDelegate.swift
// Register the delegate with the InAppMessaging instance
let myFiamDelegate = CardActionFiamDelegate()
InAppMessaging.inAppMessaging().delegate = myFiamDelegate;

Objective-C

Lưu ý: Sản phẩm này không hoạt động trên các mục tiêu macOS, Mac Catalyst, App Clip hoặc watchOS.

Hãy tham khảo tài liệu tham khảo về uỷ quyền hiển thị của Target-C để biết tập hợp các phương thức gọi lại có thể triển khai và các tham số của những phương thức đó, bao gồm cả FIRInAppMessagingDisplayMessage.


// In CardActionFiamDelegate.h
@interface CardActionFiamDelegate : NSObject <FIRInAppMessagingDisplayDelegate>
@end

// In CardActionFiamDelegate.m
@implementation CardActionFiamDelegate

- (void)displayErrorForMessage:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage
                         error:(nonnull NSError *)error {
    // ...
}

- (void)impressionDetectedForMessage:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
    // ...
}

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
    // ...
}

- (void)messageDismissed:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage
             dismissType:(FIRInAppMessagingDismissType)dismissType {
    // ...
}

@end

// In AppDelegate.m
CardActionFiamDelegate *myFiamDelegate = [CardActionFiamDelegate new];
[FIRInAppMessaging inAppMessaging].delegate = myFiamDelegate;

Kích hoạt thông báo trong ứng dụng theo phương thức lập trình

Theo mặc định, tính năng Thông báo trong ứng dụng của Firebase cho phép bạn kích hoạt thông báo trong ứng dụng với các sự kiện Google Analytics cho Firebase mà không cần tích hợp thêm. Bạn cũng có thể kích hoạt các sự kiện theo cách thủ công theo phương thức lập trình bằng các trình kích hoạt có lập trình của SDK gửi thông báo trong ứng dụng của Firebase.

Trong trình soạn chiến dịch Thông báo trong ứng dụng, hãy tạo chiến dịch mới hoặc chọn một chiến dịch hiện có và trong bước Lên lịch của quy trình soạn tin nhắn, hãy ghi lại mã sự kiện của sự kiện nhắn tin mới tạo hoặc hiện có. Sau khi ghi chú, hãy đo lường để ứng dụng kích hoạt sự kiện theo mã nhận dạng của ứng dụng.

Swift

Lưu ý: Sản phẩm này không hoạt động trên các mục tiêu macOS, Mac Catalyst, App Clip hoặc watchOS.
…
// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");

Objective-C

Lưu ý: Sản phẩm này không hoạt động trên các mục tiêu macOS, Mac Catalyst, App Clip hoặc watchOS.
…
// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];

Sử dụng siêu dữ liệu tùy chỉnh của chiến dịch

Trong chiến dịch của mình, bạn có thể chỉ định dữ liệu tuỳ chỉnh trong một loạt cặp khoá/giá trị. Khi người dùng tương tác với tin nhắn, bạn có thể sử dụng dữ liệu này để hiển thị mã khuyến mãi chẳng hạn.

Swift

Lưu ý: Sản phẩm này không hoạt động trên các mục tiêu macOS, Mac Catalyst, App Clip hoặc watchOS.
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {

    func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
	// Get data bundle from the inapp message
	let appData = inAppMessage.appData
	// ...
    }
}

Objective-C

Lưu ý: Sản phẩm này không hoạt động trên các mục tiêu macOS, Mac Catalyst, App Clip hoặc watchOS.
@implementation CardActionFiamDelegate

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
	appData = inAppMessage.appData
	// ...
}

@end

Tạm thời tắt thông báo trong ứng dụng

Theo mặc định, tính năng Gửi thông báo trong ứng dụng của Firebase sẽ hiển thị tin nhắn bất cứ khi nào điều kiện kích hoạt được đáp ứng, bất kể trạng thái hiện tại của ứng dụng là gì. Nếu bạn muốn chặn hiện thông báo vì bất kỳ lý do gì, chẳng hạn như để tránh làm gián đoạn một trình tự các màn hình xử lý thanh toán, hãy sử dụng thuộc tính messageDisplaySuppressed của SDK như minh hoạ dưới đây trong Mục tiêu-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Việc đặt thuộc tính này thành YES sẽ ngăn tính năng Gửi thông báo trong ứng dụng của Firebase hiển thị tin nhắn, trong khi NO sẽ bật lại tính năng hiển thị tin nhắn. SDK sẽ đặt lại thuộc tính thành NO khi khởi động lại ứng dụng. SDK sẽ bỏ qua các thông báo bị chặn. Khi tính năng chặn đang tắt, bạn phải đáp ứng lại các điều kiện kích hoạt của các điều kiện kích hoạt này thì tính năng Gửi thông báo trong ứng dụng của Firebase mới có thể hiển thị các điều kiện đó.

Bật chế độ gửi thư chọn không tham gia

Theo mặc định, tính năng Nhắn tin trong ứng dụng của Firebase sẽ tự động gửi tin nhắn đến tất cả người dùng ứng dụng mà bạn nhắm mục tiêu trong các chiến dịch nhắn tin. Để gửi những thông báo đó, SDK gửi thông báo trong ứng dụng của Firebase sẽ sử dụng mã cài đặt Firebase để xác định ứng dụng của từng người dùng. Điều này có nghĩa là tính năng Gửi thông báo trong ứng dụng phải gửi dữ liệu ứng dụng khách (được liên kết với mã cài đặt) đến máy chủ Firebase. Nếu bạn muốn cấp cho người dùng nhiều quyền kiểm soát hơn đối với dữ liệu mà họ gửi, hãy tắt tính năng tự động thu thập dữ liệu và cho họ cơ hội phê duyệt hoạt động chia sẻ dữ liệu.

Để làm điều đó, bạn phải tắt tính năng tự động khởi chạy cho tính năng Gửi thông báo trong ứng dụng của Firebase và khởi động dịch vụ theo cách thủ công cho người dùng chọn sử dụng:

  1. Tắt tính năng tự động khởi chạy bằng một khoá mới trong tệp Info.plist:

    • Khoá: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Giá trị: NO
  2. Tự khởi động tính năng Gửi thông báo trong ứng dụng của Firebase cho những người dùng đã chọn:

    // Only needed if FirebaseInAppMessagingAutomaticDataCollectionEnabled is set to NO
    // in Info.plist
    [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES;
    
    

    Sau khi bạn đặt automaticDataCollectionEnabled thành YES, giá trị vẫn tồn tại khi ứng dụng khởi động lại, ghi đè giá trị trong Info.plist. Nếu bạn muốn tắt lại tính năng khởi chạy, chẳng hạn như nếu sau này người dùng chọn không thu thập, hãy đặt thuộc tính thành NO.