Firebase 應用程式內通訊功能幾乎不需要編碼,即可建立、設定及指定豐富的使用者互動,並運用Google Analytics現成功能,將訊息事件與實際使用者特徵、活動和選擇連結。只要整合其他 Firebase In-App Messaging SDK,您就能進一步自訂應用程式內訊息的行為,在使用者與訊息互動時做出回應、在 Analytics 架構外觸發訊息事件,以及允許使用者控管是否分享與訊息互動相關的個人資料。
在使用者與應用程式內訊息互動時做出回應
您可以透過動作,使用應用程式內訊息將使用者導向網站或應用程式中的特定畫面。
您的程式碼可以回應基本互動 (點擊和關閉)、曝光 (訊息的已驗證瀏覽次數),以及 SDK 記錄和確認的顯示錯誤。舉例來說,當您的訊息是以資訊卡模式撰寫時,您可能想追蹤並後續瞭解使用者點選了資訊卡上的哪個網址。
實作 DisplayDelegate 來處理資訊卡互動
您可以註冊應用程式內訊息顯示委派,每當應用程式內訊息有任何互動時,系統就會呼叫該委派。如要這麼做,請根據 InAppMessagingDisplayDelegate
通訊協定實作類別,並將其設為 InAppMessaging
執行個體上的委派屬性。
再次假設您想追蹤使用者在「資訊卡」樣式訊息中點選的連結,請定義一個類別,實作 DisplayDelegate
協定中的 messageClicked
方法,藉此存取使用者點選的連結。
Swift
如需可實作的回呼方法及其參數 (包括 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;
Objective-C
如要瞭解可實作的回呼方法及其參數 (包括 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 後,請設定應用程式,透過 ID 觸發事件。
Swift
…
// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");
Objective-C
…
// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];
使用廣告活動自訂中繼資料
您可以在廣告活動中,以一系列鍵/值組合指定自訂資料。 使用者與訊息互動時,您就能取得這類資料,例如顯示促銷代碼。
Swift
class CardActionDelegate : NSObject, InAppMessagingDisplayDelegate {
func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
// Get data bundle from the inapp message
let appData = inAppMessage.appData
// ...
}
}
Objective-C
@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
。