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


Firebase 應用程式內通訊功能可讓您輕鬆建立、設定及鎖定豐富的使用者互動,無需或幾乎不需要編寫程式碼,即可利用 Google Analytics 的內建功能,將訊息事件連結至實際的使用者特徵、活動和選項。在額外整合 Firebase In-App Messaging SDK 的情況下,您可以進一步自訂應用程式內訊息的行為,在使用者與訊息互動時回應、觸發 Analytics 架構之外的訊息事件,以及允許使用者控管與訊息互動相關的個人資料分享。

回應使用者與應用程式內訊息互動

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

程式碼可回應基本互動 (點擊和關閉)、曝光次數 (已驗證的訊息瀏覽次數),以及顯示 SDK 記錄及確認的錯誤。舉例來說,如果您將訊息撰寫為資訊卡的互動視窗,可能會想追蹤並瞭解使用者在資訊卡中點選了哪一個網址。

實作 DisplayDelegate 來處理資訊卡互動

您可以註冊應用程式內訊息顯示委派。每當應用程式內訊息有任何互動,系統就會呼叫該委派項目。如要這麼做,請依照 InAppMessagingDisplayDelegate 通訊協定實作類別,並將其設為 InAppMessaging 例項的委派屬性。

假設您想追蹤使用者在資訊卡式訊息中點選哪個連結,請定義一個類別,依照 DisplayDelegate 通訊協定實作 messageClicked 方法,藉此取得使用者點選的連結。

Swift

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

如要瞭解可實作的回呼方法組合及其參數 (包括 InAppMessagingAction),請參閱 Swift 顯示委派作業參考資料


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

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

如要瞭解可實作的回呼方法集合及其參數 (包括 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 觸發事件。

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 CardActionFiamDelegate : 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 CardActionFiamDelegate

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
	appData = inAppMessage.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