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


Với rất ít hoặc không cần nỗ lực lập trình, Nhắn tin trong ứng dụng của Firebase cho phép bạn tạo, định cấu hình và nhắm đến các lượt tương tác phong phú của người dùng, tận dụng các chức năng của Google Analytics ngay khi xuất xưởng để 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ố hoạt động tích hợp SDK Firebase In-App Messaging bổ sung, bạn có thể điều chỉnh hành vi của thông báo trong ứng dụng hơn nữa, phản hồi khi người dùng tương tác với thông báo, kích hoạt các sự kiện thông báo 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 của họ liên quan đến các hoạt động tương tác nhắn tin.

Phản hồi khi người dùng tương tác với thông báo trong ứng dụng

Với các thao tác, bạn có thể sử dụng thông báo trong ứng dụng để chuyển 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 các hoạt động tương tác cơ bản (lượt nhấp và lượt đóng), số lượt hiển thị (lượt xem đã xác minh về thông báo của bạn) và hiển thị các lỗi do SDK ghi lại và xác nhận. Ví dụ: khi thông báo của bạn được tạo dưới dạng một phương thức Card, bạn có thể muốn theo dõi và tiếp tục theo dõi người dùng đã nhấp vào URL nào trong số hai URL trên Card.

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. Uỷ quyền này sẽ được gọi bất cứ khi nào có hoạt động tương tác với một 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 theo 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 một 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ờ đó bạn có thể 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 có 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ị Swift để 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 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: InAppMessagingDismissType) {
        // ...
    }

    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 có 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ị Objective-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 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

Firebase In-App Messaging cho phép bạn kích hoạt thông báo trong ứng dụng bằng các sự kiện Google Analytics cho Firebase theo mặc định 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 theo phương thức lập trình của SDK Firebase In-App Messaging.

Trong trình soạn thảo chiến dịch Nhắn tin trong ứng dụng, hãy tạo một chiến dịch mới hoặc chọn một chiến dịch hiện có. Trong bước Lập lịch của quy trình soạn thảo, hãy lưu ý mã sự kiện của một 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 của bạn để kích hoạt sự kiện theo mã nhận dạng của sự kiện.

Swift

Lưu ý: Sản phẩm này không có 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 có 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 tuỳ chỉnh của chiến dịch

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

Swift

Lưu ý: Sản phẩm này không có trên các mục tiêu macOS, Mac Catalyst, App Clip hoặc watchOS.
class CardActionDelegate : 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 có trên các mục tiêu macOS, Mac Catalyst, App Clip hoặc watchOS.
@implementation ExampleCardActionDelegate

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
    NSDictionary *appData = inAppMessage.appData;
    NSLog(@"Message data: %@", appData);
	// ...
}

@end

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

Theo mặc định, Firebase In-App Messaging sẽ hiển thị thông báo bất cứ khi nào một đ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. Nếu bạn muốn ngăn chặn việc hiển thị thông báo vì bất kỳ lý do nào, chẳng hạn như để tránh làm gián đoạn một chuỗi 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ạ ở đây trong Objective-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Việc đặt thuộc tính thành YES sẽ ngăn Firebase In-App Messaging hiển thị thông báo, trong khi NO cho phép hiển thị thông báo trở lại. SDK đặ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. Các điều kiện kích hoạt của những thông báo này phải được đáp ứng lại khi chế độ chặn đang tắt thì Firebase In-App Messaging mới có thể hiển thị chúng.

Bật tính năng gửi thông báo chọn không nhận

Theo mặc định, Firebase In-App Messaging sẽ tự động gửi thông báo đến tất cả người dùng ứng dụng mà bạn nhắm đến trong chiến dịch nhắn tin. Để gửi những thông báo đó, SDK Firebase In-App Messaging sử dụng mã nhận dạng lượt 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à In-App Messaging phải gửi dữ liệu ứng dụng khách (được liên kết với mã nhận dạng lượt cài đặt) đến máy chủ Firebase. Nếu bạn muốn cho người dùng có thêm quyền kiểm soát đố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 việc chia sẻ dữ liệu.

Để làm như vậy, bạn phải tắt chế độ khởi chạy tự động cho Firebase In-App Messaging và khởi chạy dịch vụ theo cách thủ công cho những người dùng chọn sử dụng:

  1. Tắt chế độ khởi tạo tự động bằng một khoá mới trong tệp Info.plist:

    • Phím: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Giá trị: NO
  2. Khởi động Firebase In-App Messaging cho người dùng đã chọn theo cách thủ công:

    // 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ị sẽ duy trì trong quá trình khởi động lại ứng dụng, ghi đè giá trị trong Info.plist. Nếu bạn muốn tắt lại quá trình khởi tạo, chẳng hạn như nếu người dùng chọn không tham gia thu thập sau này, hãy đặt thuộc tính thành NO.