修改 Firebase 應用程式內通訊訊息的行為


Firebase In-App Messaging 幾乎不需要編寫程式碼,就能建立、設定及指定豐富的使用者互動,並運用 Google Analytics 的現成功能,將訊息事件與實際使用者特徵、活動和選擇連結。透過額外的 Firebase In-App Messaging SDK 整合,您可以進一步自訂應用程式內訊息的行為,在使用者與訊息互動時做出回應、在 Analytics 架構外觸發訊息事件,並允許使用者控制與訊息互動相關的個人資料分享。

在使用者與應用程式內訊息互動時做出回應

您可以透過動作,使用應用程式內訊息將使用者導向網站或應用程式中的特定畫面。

您的程式碼可以回應基本互動 (點擊和關閉)、曝光 (訊息的已驗證檢視),以及 SDK 記錄和確認的顯示錯誤。舉例來說,如果訊息是以資訊卡互動視窗的形式組成,您可能需要追蹤並追蹤使用者在資訊卡上點選了兩個網址中的哪一個。

實作 DisplayDelegate 來處理資訊卡互動

您可以註冊應用程式內訊息顯示委派,只要與應用程式內訊息有任何互動,系統就會呼叫該委派。方法是按照 InAppMessagingDisplayDelegate 通訊協定實作類別,並將其設為 InAppMessaging 例項的委派屬性。

再次假設您想追蹤使用者在卡片樣式訊息中點選的連結,請根據 DisplayDelegate 通訊協定定義導入 messageClicked 方法的類別,這樣就能存取使用者點選的連結。

Swift

注意:這項產品不適用於 macOS、Mac Catalyst、App Clip 或 watchOS 目標。

請參閱 Swift 顯示委派參考資料,瞭解可實作的回呼方法及其參數,包括 InAppMessagingAction。


// 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

注意:這項產品不適用於 macOS、Mac Catalyst、App Clip 或 watchOS 目標。

請參閱 Objective-C 顯示委派參考資料,瞭解可實作的回呼方法及其參數,包括 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;

透過程式輔助方式觸發應用程式內訊息

Firebase In-App Messaging 預設允許您使用 Google Analytics for Firebase 事件觸發應用程式內訊息,不需額外整合。您也可以使用 Firebase In-App Messaging SDK 的程式輔助觸發條件,以程式輔助方式手動觸發事件。

在應用程式內訊息廣告活動編輯器中,建立新的廣告活動或選取現有的廣告活動,然後在編輯器工作流程的「排程」步驟中,記下新建立或現有訊息事件的事件 ID。記下後,請檢測應用程式,以便依 ID 觸發事件。

Swift

注意:這項產品不適用於 macOS、Mac Catalyst、App Clip 或 watchOS 目標。
…
// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");

Objective-C

注意:這項產品不適用於 macOS、Mac Catalyst、App Clip 或 watchOS 目標。
…
// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];

使用廣告活動自訂中繼資料

您可以在廣告活動中,以一系列鍵/值組合的形式指定自訂資料。使用者與訊息互動時,您可以使用這項資料,例如顯示優惠碼。

Swift

注意:這項產品不適用於 macOS、Mac Catalyst、App Clip 或 watchOS 目標。
class CardActionDelegate : NSObject, InAppMessagingDisplayDelegate {

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

Objective-C

注意:這項產品不適用於 macOS、Mac Catalyst、App Clip 或 watchOS 目標。
@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 的自動初始化功能,並為選擇加入的使用者手動初始化服務:

  1. 在 Info.plist 檔案中加入新金鑰,關閉自動初始化功能:

    • 鍵:FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • 值:NO
  2. 為所選使用者手動初始化 Firebase In-App Messaging:

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

    將 automaticDataCollectionEnabled 設為 YES 後,即使重新啟動應用程式,該值仍會保留,並覆寫 Info.plist 中的值。如要再次停用初始化功能 (例如使用者之後選擇不收集資料),請將屬性設為 NO。