Mengubah perilaku pesan Firebase In-App Messaging


Dengan sedikit atau tanpa upaya coding, Firebase In-App Messaging memungkinkan Anda membuat, mengonfigurasi, dan menargetkan interaksi pengguna yang beragam. Hal ini dilakukan dengan memanfaatkan kemampuan bawaan Google Analytics untuk mengaitkan peristiwa pesan dengan karakteristik, aktivitas, dan pilihan pengguna yang sebenarnya. Dengan beberapa integrasi SDK Firebase In-App Messaging tambahan, Anda dapat menyesuaikan perilaku pesan dalam aplikasi lebih lanjut, merespons saat pengguna berinteraksi dengan pesan, memicu peristiwa pesan di luar framework Analytics, dan memungkinkan pengguna mengontrol pembagian data pribadi mereka yang terkait dengan interaksi pesan.

Merespons saat pengguna berinteraksi dengan pesan dalam aplikasi

Dengan tindakan, Anda dapat menggunakan pesan dalam aplikasi untuk mengarahkan pengguna ke situs atau layar tertentu di aplikasi Anda.

Kode Anda dapat merespons interaksi dasar (klik dan penutupan), tayangan (pembukaan pesan yang terverifikasi), serta error pada tampilan yang dicatat ke dalam log dan dikonfirmasi oleh SDK. Misalnya, jika pesan disusun dalam bentuk Kartu, Anda dapat melacak dan menindaklanjuti mana dari dua URL yang diklik pengguna di Kartu tersebut.

Menerapkan DisplayDelegate untuk menangani interaksi Kartu

Anda dapat mendaftarkan delegasi tampilan in-app messaging yang akan dipanggil setiap kali ada interaksi dengan pesan dalam aplikasi. Untuk melakukannya, terapkan class sesuai protokol InAppMessagingDisplayDelegate dan tetapkan sebagai properti delegasi pada instance InAppMessaging.

Dengan mengasumsikan lagi bahwa Anda ingin melacak link mana yang diklik pengguna pada pesan bergaya Kartu, tentukan class yang menerapkan metode messageClicked sesuai protokol DisplayDelegate, sehingga memberi Anda akses ke link yang diklik oleh pengguna.

Swift

Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, App Clip, atau watchOS.

Lihat referensi delegasi tampilan Swift untuk mengetahui berbagai metode callback yang dapat diterapkan dan parameternya, termasuk 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

Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, App Clip, atau watchOS.

Lihat referensi delegasi tampilan Objective-C untuk mengetahui berbagai metode callback yang dapat diterapkan dan parameternya, termasuk 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;

Memicu pesan dalam aplikasi secara terprogram

Firebase In-App Messaging secara default memungkinkan Anda memicu pesan dalam aplikasi dengan peristiwa Google Analytics for Firebase, tanpa integrasi tambahan. Anda juga dapat memicu peristiwa secara terprogram menggunakan cara manual, dengan pemicu terprogram Firebase In-App Messaging SDK.

Dalam composer kampanye In-App Messaging, buat kampanye baru atau pilih kampanye yang sudah ada. Lalu, pada langkah Penjadwalan di alur kerja composer, catat ID peristiwa dari pesan yang baru dibuat atau yang sudah ada. Setelah dicatat, instrumentasikan aplikasi Anda untuk memicu peristiwa melalui ID-nya.

Swift

Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, App Clip, atau watchOS.

// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");

Objective-C

Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, App Clip, atau watchOS.

// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];

Menggunakan metadata kustom kampanye

Dalam kampanye, Anda dapat menentukan data kustom dalam serangkaian key-value pair. Saat pengguna berinteraksi dengan pesan, data ini dapat Anda gunakan, antara lain, untuk menampilkan kode promo.

Swift

Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, App Clip, atau watchOS.
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {

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

Objective-C

Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, App Clip, atau watchOS.
@implementation CardActionFiamDelegate

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

@end

Menonaktifkan pesan dalam aplikasi untuk sementara

Secara default, Firebase In-App Messaging merender pesan setiap kali kondisi yang memicu terpenuhi, apa pun status aplikasi saat ini. Jika Anda ingin menyembunyikan tampilan pesan karena alasan apa pun, misalnya agar tidak mengganggu urutan layar pemrosesan pembayaran, gunakan properti messageDisplaySuppressed SDK seperti yang terlihat dalam ilustrasi Objective-C berikut:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

Menetapkan properti ini ke YES akan mencegah Firebase In-App Messaging menampilkan pesan, sedangkan NO akan mengaktifkan kembali tampilan pesan. SDK akan mereset properti ini ke NO saat aplikasi dimulai ulang. Pesan yang disembunyikan akan diabaikan oleh SDK. Kondisi pemicunya harus terpenuhi lagi saat penyembunyian nonaktif, agar Firebase In-App Messaging dapat menampilkan pesan tersebut.

Memberikan pilihan untuk tidak mengizinkan pengiriman pesan

Secara default, Firebase In-App Messaging otomatis mengirimkan pesan kepada semua pengguna aplikasi yang Anda targetkan di kampanye pesan. Untuk mengirimkan pesan tersebut, Firebase In-App Messaging SDK menggunakan ID penginstalan Firebase untuk mengidentifikasi aplikasi setiap pengguna. Artinya, In-App Messaging harus mengirim data klien, yang ditautkan ke ID penginstalan, ke server Firebase. Jika ingin memberi pengguna kontrol yang lebih besar atas data yang mereka kirim, nonaktifkan pengumpulan data otomatis dan beri mereka kesempatan untuk menyetujui opsi berbagi data.

Untuk melakukannya, Anda harus menonaktifkan inisialisasi otomatis untuk Firebase In-App Messaging, dan menginisialisasi layanan secara manual untuk pengguna yang mengizinkannya:

  1. Nonaktifkan inisialisasi otomatis dengan kunci baru di file Info.plist Anda:

    • Kunci: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • Nilai: NO
  2. Lakukan inisialisasi Firebase In-App Messaging untuk pengguna yang dipilih secara manual:

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

    Setelah Anda menetapkan automaticDataCollectionEnabled ke YES, nilai ini akan tetap sama setiap kali aplikasi dimulai ulang, menggantikan nilai di Info.plist. Jika ingin menonaktifkan inisialisasi lagi, misalnya jika pengguna nantinya memilih untuk tidak mengizinkan pengumpulan data, tetapkan properti ini ke NO.