Sửa đổi hành vi của tin nhắn Nhắn tin trong ứng dụng Firebase

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

Phản hồ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 của mình để 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 các tương tác cơ bản (nhấp chuột và loại bỏ), hiển thị (lượt xem thư đã được xác minh) và hiển thị các lỗi được SDK ghi lại và xác nhận. Ví dụ: khi tin nhắn của bạn được soạn dưới dạng phương thức Thẻ, bạn có thể muốn theo dõi và theo dõi URL nào trong số hai URL mà người dùng đã nhấp vào Thẻ.

Triển khai DisplayDelegate để xử lý các tương tác Thẻ

Bạn có thể đăng ký một đại biểu hiển thị tin nhắn trong ứng dụng. Đại biểu này sẽ được gọi bất cứ khi nào có bất kỳ tương tác nào với tin nhắn 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 đại biểu trên phiên bản InAppMessaging .

Giả sử một lần nữa rằng bạn muốn theo dõi liên kết nào mà người dùng đã nhấp vào 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 , từ đó cung cấp cho bạn quyền truy cập vào liên kết được người dùng nhấp vào.

Nhanh

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

Tham khảo tham chiếu đại biểu hiển thị Swift để biết tập hợp các phương thức gọi lại có thể được triển khai và các tham số của chúng, 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;

Mục tiêu-C

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

Tham khảo tham chiếu đại biểu hiển thị Objective-C để biết tập hợp các phương thức gọi lại có thể được triển khai và các tham số của chúng, 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 tin nhắn trong ứng dụng theo chương trình

Theo mặc định, tính năng Nhắn tin trong ứng dụng Firebase cho phép bạn kích hoạt các tin nhắn trong ứng dụng bằng 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 chương trình theo cách thủ công bằng trình kích hoạt có lập trình của SDK nhắn tin trong ứng dụng Firebase.

Trong trình soạn thảo chiến dịch Nhắn tin trong ứng dụng, hãy tạo chiến dịch mới hoặc chọn chiến dịch hiện có và ở bước Lập lịch của quy trình soạn thảo, hãy lưu ý ID sự kiện của sự kiện nhắn tin mới được tạo hoặc hiện có. Sau khi ghi chú, hãy thiết lập ứng dụng của bạn để kích hoạt sự kiện bằng ID của nó.

Nhanh

Lưu ý: Sản phẩm này không khả dụ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");

Mục tiêu-C

Lưu ý: Sản phẩm này không khả dụ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 tùy chỉnh theo một loạt cặp khóa/giá trị. Khi người dùng tương tác với tin nhắn, dữ liệu này sẽ có sẵn để bạn hiển thị mã khuyến mãi chẳng hạn.

Nhanh

Lưu ý: Sản phẩm này không khả dụ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
	// ...
    }
}

Mục tiêu-C

Lưu ý: Sản phẩm này không khả dụ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 tin nhắn trong ứng dụng

Theo mặc định, Nhắn tin trong ứng dụng Firebase hiển thị tin nhắn bất cứ khi nào điều kiện kích hoạt được thỏa mãn, bất kể trạng thái hiện tại của ứng dụng. Nếu bạn muốn chặn hiển thị thông báo vì bất kỳ lý do gì, chẳng hạn như để tránh làm gián đoạn 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ư được minh họa ở đây trong Objective-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Đặt thuộc tính thành YES sẽ ngăn Tin nhắn trong ứng dụng Firebase hiển thị tin nhắn, trong khi NO bật lại hiển thị tin nhắn. SDK đặt lại thuộc tính thành NO khi khởi động lại ứng dụng. Các thông báo bị chặn sẽ bị SDK bỏ qua. Các điều kiện kích hoạt của chúng phải được đáp ứng lại khi tính năng ngăn chặn bị tắt, trước khi Nhắn tin trong ứng dụng Firebase có thể hiển thị chúng.

Cho phép gửi tin nhắn chọn không tham gia

Theo mặc định, Nhắn tin trong ứng dụng Firebase 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 chiến dịch nhắn tin. Để gửi những thông báo đó, SDK nhắn tin trong ứng dụng Firebase sử dụng ID 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à Nhắn tin trong ứng dụng phải gửi dữ liệu khách hàng, được liên kết với ID cài đặt, tới máy chủ Firebase. Nếu bạn muốn cung cấp cho người dùng nhiều quyền kiểm soát hơn đối với dữ liệu họ gửi, hãy 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 điều đó, bạn phải tắt tính năng khởi chạy tự động cho Nhắn tin trong ứng dụng Firebase và khởi tạo 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 tạo bằng khóa mới trong tệp Info.plist của bạn:

    • Khóa: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Giá trị: NO
  2. Khởi tạo tin nhắn trong ứng dụng Firebase cho người dùng được 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ị vẫn tồn tại cho đến khi khởi động lại ứng dụng, ghi đè giá trị trong Info.plist của bạn. Nếu bạn muốn tắt tính năng khởi chạy lại, chẳng hạn như nếu sau này người dùng chọn không tham gia thu thập, hãy đặt thuộc tính thành NO .