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 giúp bạn tạo, định cấu hình và nhắm mục tiêu đến lượt tương tác đa dạng của người dùng, tận dụng những tính năng có sẵn của Google Analytics để liên hệ 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 tin nhắn 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 tin nhắn bên ngoài 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 đến tương tác nhắn tin.

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

Với các hành động, bạn có thể sử dụng thông báo trong ứng dụng để hướng người dùng đến 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 lượt tương tác cơ bản (lượt nhấp và đóng), lượt hiển thị (lượt xem đã xác minh của tin nhắn) và hiển thị lỗi do SDK ghi lại và xác nhận. Ví dụ: khi thông báo của bạn được soạn dưới dạng một Thẻ bạn nên theo dõi và theo dõi xem người dùng nào đang sử 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ý 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ó tương tác 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 theo giao thức InAppMessagingDisplayDelegate và đặt lớp này làm thuộc tính uỷ quyền trên thực thể InAppMessaging.

Giả sử một lần nữa bạn muốn theo dõi liên kết nào mà người dùng đã nhấp vào theo kiểu Thẻ thông báo, hãy xác định một lớp triển khai phương thức messageClicked theo DisplayDelegate, từ đó cung cấp cho bạn quyền truy cập vào 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ể được triển khai cũng như các thông số của các phương thức đó, bao gồm 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ề đại biểu 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 cũng như các thông số của các phương thức đó, bao gồm 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, 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 trong Google Analytics cho Firebase (không cần tích hợp thêm). Bạn có thể cũng 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 SDK của Firebase In-App Messaging điều kiện kích hoạt có lập trình.

Trong trình soạn thảo chiến dịch Gửi thông báo 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 tại, và trong bước Lập lịch biểu của quy trình làm việc của 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ú, công cụ ứng dụng của bạn kích hoạt sự kiện theo mã nhận 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 dù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 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.

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, Firebase In-App Messaging hiển thị thông báo bất cứ khi nào có điều kiện kích hoạt là hài lò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 ngăn thông báo hiển thị vì lý do nào đó, chẳng hạn như để tránh làm gián đoạn trình tự 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 này 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. 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. Điều kiện kích hoạt phải đáp ứng lại các điều kiện trong khi tắt chế độ chặn thì Firebase In-App Messaging mới có thể hiển thị chúng.

Bật tính năng chọn không nhận tin nhắn

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

Để làm được việc đó, bạn phải tắt tính năng tự động khởi chạy cho Firebase In-App Messaging, và khởi chạy dịch vụ theo cách thủ công cho người dùng chọn tham gia:

  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. Khởi chạy Firebase In-App Messaging cho những 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ị này sẽ vẫn tồn tại khi ứng dụng khởi động lại, ghi đè giá trị trong Info.plist. Nếu muốn để tắt lại khởi chạy, ví dụ: nếu người dùng chọn không tham gia thu thập vào lúc khác, hãy đặt thuộc tính thành NO.