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

只需很少甚至無需編碼,Firebase 應用程式內訊息傳遞即可讓您創建、配置和定位豐富的用戶交互,利用開箱即用的Google Analytics 功能將訊息傳遞事件與實際用戶特徵、活動和選擇聯繫起來。透過一些額外的Firebase 應用程式內訊息SDK 集成,您可以進一步自訂應用程式內訊息的行為,在使用者與訊息互動時做出回應,在Analytics 框架之外觸發訊息事件,並允許使用者控制與其相關的個人資料的共享訊息交互。

當用戶與應用程式內訊息互動時進行回應

透過操作,您可以使用應用程式內訊息將使用者引導至網站或應用程式中的特定螢幕。

您的程式碼可以回應基本互動(點擊和關閉)、印象(訊息的驗證視圖)以及顯示由 SDK 記錄和確認的錯誤。例如,當您的訊息被編寫為卡片模式時,您可能想要追蹤並追蹤使用者在卡片上點擊了兩個 URL 中的哪一個。

實作 DisplayDelegate 來處理卡片交互

您可以註冊一個應用程式內訊息顯示委託,每當與應用程式內訊息進行任何互動時都會呼叫該委託。為此,請根據InAppMessagingDisplayDelegate協定實作一個類,並將其設定為InAppMessaging實例上的委託屬性。

再次假設您想要追蹤用戶單擊了卡片式訊息上的哪個鏈接,請定義一個類,該類根據DisplayDelegate協議實現messageClicked方法,從而使您可以訪問用戶單擊的鏈接。

迅速

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

請參閱 Swift顯示委託參考,以了解可實現的回呼方法集及其參數,包括 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

注意:此產品不適用於 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 應用程式內訊息可讓您使用 Google Analytics for Firebase 事件觸發應用程式內訊息,無需額外整合。您也可以使用 Firebase 應用內訊息 SDK 的程式觸發器以程式設計方式手動觸發事件。

在應用程式內訊息行銷活動編輯器中,建立新行銷活動或選擇現有行銷活動,然後在編輯器工作流程的規劃步驟中,記下新建立的或現有訊息傳遞事件的事件 ID。一旦注意到,就讓您的應用程式透過其 ID 觸發事件。

迅速

注意:此產品不適用於 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"];

使用行銷活動自訂元數據

在您的行銷活動中,您可以在一系列鍵/值對中指定自訂資料。當用戶與訊息互動時,您可以使用此數據來顯示促銷代碼等。

迅速

注意:此產品不適用於 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 應用程式內訊息就會呈現訊息,無論應用程式的目前狀態為何。如果您出於任何原因想要禁止訊息顯示,例如為了避免中斷一系列支付處理螢幕,請使用 SDK 的messageDisplaySuppressed屬性,如 Objective-C 所示:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

將該屬性設為YES會阻止 Firebase 應用程式內訊息顯示訊息,而設定為NO則會重新啟用訊息顯示。 SDK 在應用程式重新啟動時將該屬性重設為NO 。 SDK 會忽略抑制的訊息。在關閉抑制的情況下,必須再次滿足它們的觸發條件,Firebase 應用程式內訊息傳遞才能顯示它們。

啟用選擇退出訊息傳遞

預設情況下,Firebase 應用程式內訊息傳遞會自動將訊息傳遞給您在訊息傳遞活動中定位的所有應用程式使用者。為了傳遞這些訊息,Firebase 應用程式內訊息 SDK 使用 Firebase 安裝 ID 來識別每個使用者的應用程式。這意味著應用程式內訊息傳遞必須將連結到安裝 ID 的客戶端資料傳送到 Firebase 伺服器。如果您想讓用戶更好地控制他們發送的數據,請停用自動數據收集並讓他們有機會批准數據共享。

為此,您必須停用 Firebase 應用程式內訊息傳遞的自動初始化,並為選擇加入的使用者手動初始化該服務:

  1. 使用Info.plist檔案中的新鍵關閉自動初始化:

    • 鍵: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • 值: NO
  2. 手動為選定使用者初始化 Firebase 應用程式內訊息傳遞:

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

    automaticDataCollectionEnabled設定為YES後,該值將在應用程式重新啟動時持續存在,並覆寫Info.plist中的值。如果您想再次停用初始化,例如,如果使用者稍後選擇退出收集,請將該屬性設為NO