Firebase 應用程式內通訊功能可讓您輕鬆建立、設定及鎖定豐富的使用者互動,無需編寫程式碼。您可以利用 Google Analytics 的內建功能,將訊息事件連結至實際的使用者特徵、活動和選擇。透過整合其他 Firebase In-App Messaging SDK,您可以進一步自訂應用程式內訊息的行為,在使用者與訊息互動時回應、在 Analytics 架構外觸發訊息事件,以及讓使用者控管與訊息互動相關的個人資料分享行為。
回應使用者與應用程式內訊息互動
您可以使用動作,透過應用程式內訊息將使用者導向網站或應用程式中的特定畫面。
程式碼可回應基本互動 (點擊和關閉)、曝光次數 (已驗證的訊息瀏覽次數),以及 SDK 記錄及確認的顯示錯誤。舉例來說,如果您將訊息撰寫為資訊卡的互動式視窗,可能會想追蹤並瞭解使用者在資訊卡上點選了哪一個網址。
實作 DisplayDelegate 來處理資訊卡互動
您可以註冊應用程式內訊息顯示委派作業,只要有任何與應用程式內訊息的互動,就會呼叫這項作業。如要這麼做,請依照 InAppMessagingDisplayDelegate
通訊協定實作類別,並將其設為 InAppMessaging
例項的委派屬性。
假設您想追蹤使用者在資訊卡式訊息中點選哪個連結,請定義一個類別,根據 DisplayDelegate
通訊協定實作 messageClicked
方法,藉此提供您存取使用者點選的連結的權限。
如要瞭解可實作的回呼方法組合及其參數 (包括 InAppMessagingAction),請參閱 Swift 顯示委派作業參考資料。
// 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;
如要瞭解可實作的回呼方法集合及其參數 (包括 FIRInAppMessagingDisplayMessage),請參閱 Objective-C 顯示委派程式碼參考資料。
// 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;
透過程式碼觸發應用程式內通訊訊息
Firebase In-App Messaging 預設可讓您使用 Google Analytics for Firebase 事件觸發應用程式內訊息,無須額外整合。您也可以使用 Firebase In-App Messaging SDK 的程式輔助觸發條件,以程式輔助方式手動觸發事件。
在應用程式內訊息廣告活動製作工具中,建立新的廣告活動或選取現有廣告活動,然後在製作工具工作流程的排程步驟中,記下新建立或現有的訊息事件的事件 ID。發現問題後,請對應用程式進行檢測,以便根據 ID 觸發事件。
…
// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");
…
// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];
使用廣告活動自訂中繼資料
您可以在廣告活動中,透過一系列鍵/值組合指定自訂資料。使用者與訊息互動時,您可以使用這項資料顯示促銷代碼等資訊。
class CardActionDelegate : NSObject, InAppMessagingDisplayDelegate {
func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
// Get data bundle from the inapp message
let appData = inAppMessage.appData
// ...
}
}
@implementation ExampleCardActionDelegate
- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
NSDictionary *appData = inAppMessage.appData;
NSLog(@"Message data: %@", appData);
// ...
}
@end
暫時停用應用程式內訊息
根據預設,Firebase In-App Messaging 會在觸發條件滿足時顯示訊息,無論應用程式的目前狀態為何。如果您想基於任何原因抑制訊息顯示,例如避免中斷付款處理畫面的序列,請使用 SDK 的 messageDisplaySuppressed
屬性,如以下 Objective-C 範例所示:
[FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;
將屬性設為 YES
可防止 Firebase In-App Messaging 顯示訊息,而 NO
則可重新啟用訊息顯示功能。SDK 會在應用程式重新啟動時將屬性重設為 NO
。SDK 會忽略已隱藏的訊息。在抑制功能關閉時,必須再次符合觸發條件,Firebase In-App Messaging 才能顯示廣告。
啟用選擇退出訊息傳送功能
根據預設,Firebase In-App Messaging 會自動將訊息傳送給您在訊息廣告活動中指定目標的所有應用程式使用者。為了傳送這些訊息,Firebase In-App Messaging SDK 會使用 Firebase 安裝 ID 來識別每位使用者的應用程式。這表示 In-App Messaging 必須將連結至安裝 ID 的用戶端資料傳送至 Firebase 伺服器。如果您想讓使用者進一步控管所傳送的資料,請停用自動資料收集功能,並讓他們有機會核准資料共用。
為此,您必須停用 Firebase In-App Messaging 的自動初始化功能,並為選擇加入的使用者手動初始化服務:
在
Info.plist
檔案中使用新鍵關閉自動初始化功能:- 鍵:
FirebaseInAppMessagingAutomaticDataCollectionEnabled
- 值:
NO
- 鍵:
手動為所選使用者初始化 Firebase In-App Messaging:
// Only needed if FirebaseInAppMessagingAutomaticDataCollectionEnabled is set to NO // in Info.plist [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES;
將
automaticDataCollectionEnabled
設為YES
後,該值會在應用程式重新啟動時保留,並覆寫Info.plist
中的值。如果您想再次停用初始化,例如使用者稍後選擇停用資料收集功能,請將屬性設為NO
。