转到控制台

自定义 Firebase 应用内消息的消息

向消息中添加操作

通过添加操作,您可以使用应用内消息将用户定向到应用中的网站或特定屏幕。

iOS

Firebase 应用内消息功能使用深层链接处理程序来处理操作。此 SDK 可以使用多个处理程序。因此,如果您的应用已有处理程序,则 Firebase 应用内消息无需进一步设置即可使用。如果您还没有处理程序,则可以使用 Firebase 动态链接。如需了解详情,请参阅创建动态链接 (iOS)

Android

Firebase 应用内消息使用深层链接处理程序来处理操作。此 SDK 可以使用多个处理程序。因此,如果您的应用已有处理程序,则 Firebase 应用内消息无需进一步设置即可使用。如果您还没有处理程序,则可以使用 Firebase 动态链接。如需了解详情,请参阅创建动态链接 (Android)

使用 Firebase 控制台将操作添加到消息中

一旦您的应用有了深层链接处理程序,您就可以撰写含有操作的广告系列了。打开 Firebase 控制台并转到应用内消息,然后启动一个新的广告系列或修改现有广告系列。在该广告系列中,提供按钮文本按钮操作图片操作横幅操作,在这里,操作是指相关的深层链接。

操作的格式取决于您选择的消息布局。模态窗口将获得具有可自定义按钮文本内容、文本颜色和背景颜色的操作按钮。而图片和顶部横幅则变为交互式的,并在点按时调用指定的操作。

启用自选式消息传送

默认情况下,Firebase 应用内消息会自动向应用的所有用户传送消息。为了传送这些消息,Firebase In-App Messaging SDK 使用 Firebase 实例 ID 来标识每个用户的应用。这意味着应用内消息必须将已关联到实例 ID 的客户端数据发送到 Firebase 服务器。如果您想让用户对其发送的数据有更多的掌控权,请启用自选式数据收集并让用户可以选择是否同意数据共享。

为此,您必须停用 Firebase 应用内消息的自动初始化功能,并为自选式用户手动初始化该服务:

iOS

  1. 在您的 Info.plist 文件中,使用一个新的键来关闭自动初始化:

    • 键:FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • 值:NO
  2. 为所选用户手动初始化 Firebase 应用内消息:

    [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES;
    

在您将 automaticDataCollectionEnabled 设置为 YES 后,该值将在应用重新启动过程中持续有效,并覆盖您的 Info.plist 中的值。如果您想再次停用初始化,例如,如果用户稍后选择退出数据收集,请将该属性设置为 NO

Android

  1. 在您的 AndroidManifest.xml 文件中使用 meta-data 标记来关闭自动初始化功能:

    <meta-data
    android:name="firebase_inapp_messaging_auto_data_collection_enabled"
    android:value="false" />
    

  2. 为所选用户手动初始化 Firebase 应用内消息:

    FirebaseInAppMessaging.setAutomaticDataCollectionEnabled(true);
    

手动设置数据收集偏好后,该值将在应用重新启动过程中持续有效,并覆盖您的 AndroidManifest.xml 中的值。如果您想再次停用初始化,例如,如果用户稍后选择退出数据收集,请将 false 传递给 setAutomaticDataCollectionEnabled 方法。

暂时停用消息

iOS

默认情况下,无论应用的当前状态如何,只要触发条件得到满足,Firebase 应用内消息都会呈现消息。如果出于任何原因您想要禁止 FIAM 消息显示,您可以使用 SDK 的 messageDisplaySuppressed 属性来达到此目的:

[FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

将该属性设置为 YES 可阻止 Firebase 应用内消息显示消息,而设置为 NO 则可重新启用消息显示。应用重启时,SDK 会将该属性重置为 NO。SDK 会忽略禁止的消息。要想让 Firebase 应用内消息显示这些消息,必须在启用消息显示的前提下再次满足其触发条件。

Android

默认情况下,无论应用的当前状态如何,只要触发条件得到满足,Firebase 应用内消息都会呈现消息。如果由于任何原因您想要禁止 FIAM 消息显示,您可以使用 SDK 的 setMessagesSuppressed 方法来达到此目的:

FirebaseInAppMessaging.setMessagesSuppressed(true);

true 传递给该方法可阻止 Firebase 应用内消息显示消息,而将 false 传递给该方法则可重新启用消息显示。SDK 将在应用重启时关闭禁止消息显示。SDK 会忽略禁止的消息。要想让 Firebase 应用内消息显示这些消息,必须在启用消息显示的前提下再次满足其触发条件。

修改消息的显示方式

iOS

借助 Firebase 应用内消息功能,您可以自定义消息的显示方式,以更改应用呈现消息的布局、字体样式、按钮形状和其他详细信息的方式。您可以通过以下两种方法修改消息显示方式:修改默认的 Firebase 应用内消息显示方式,或从头开始创建自己的消息显示库。

修改默认显示方式

自定义消息的最直接方法是以 Firebase 应用内消息的默认消息显示代码为基础编译。

克隆 firebase-ios-sdk 代码库

要开始操作,请克隆最新版 firebase-ios-sdk 代码库,然后打开 InAppMessagingDisplay 目录

选择要修改的消息类型

通过克隆代码库,您可以修改任何或所有 Firebase 应用内消息消息类型:ModalBannerImageOnly。每种类型都对应 Firebase 应用内消息广告系列创建流程中的一种消息布局。

相应地,每种类型都可以访问由 Firebase 控制台中广告系列自定义选项决定的一组不同的数据:

类型 titleText bodyText textColor backgroundColor imageData actionButton
Modal check check check check check check
Banner check check check check check
ImageOnly check

修改消息显示呈现代码

消息类型对应有一定的限制,除此之外,您可以根据需要随意修改它们。您可以创建一个显示在应用底部的横幅,移动模态框上的操作按钮,或进行任何其他修改,以使消息的外观与您的应用相契合。

修改消息显示方式时需要注意以下两点:

修改目标消息类型的目录中的文件以及 .storyboard 的相应部分,以创建自定义消息显示方式。

更新 podfile 以使用修改后的 InAppMessagingDisplay

要使 Firebase 应用内消息使用修改后的消息显示方式(而不是默认显示方式),请更新 podfile 以使用自定义的 InAppMessagingDisplay

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'YourProject' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!

# Pods for YourProject
pod 'Firebase'

# Remove the default InAppMessagingDisplay pod:
# pod 'Firebase/InAppMessagingDisplay'

# Overwrite it with a version that points to your local copy:
pod `FirebaseInAppMessagingDisplay', :path => '~/Path/To/The/Cloned/Repo/'

end
完成后,您可以更新自己的 pod,重建自己的应用,并查看新的自定义消息显示方式。

创建自己的消息显示库

您并非只能使用 InAppMessagingDisplay 库来创建用于显示消息的界面。您还可以完全从头开始编写自己的代码。

构建一个实现 FIRInAppMessagingRendering 接口的类

Firebase 应用内消息使用 FIRInAppMessaging 类处理 Firebase 服务器与您的应用之间的通信。该类又会使用 FIRInAppMessagingRendering 协议来显示它收到的消息。要构建您自己的显示库,请编写一个实现该协议的类。

如需该协议的协议定义以及有关如何做到遵循该协议的文档,请查看 InAppMessaging 库的 FIRInAppMessagingRendering.h 文件。如果您已经设置了 Firebase 应用内消息,则可以在 Xcode 项目目录下找到该文件:

FirebaseInAppMessaging > Frameworks > FirebaseInAppMessaging.framework > Headers > FIRInAppMessagingRendering.h

messageDisplayComponent 设置为使用您的消息显示库

FIRInAppMessaging 使用其 messageDisplayComponent 属性来确定在显示消息时要使用的对象。将该属性设置为自定义消息显示类的对象,以便 Firebase 应用内消息知道使用您的库来呈现消息:

[FIRInAppMessaging inAppMessaging].messageDisplayComponent = yourFIRInAppMessagingRenderingInstance;

修改 podfile 以使用 Firebase 应用内消息的无头版本

默认的 Firebase 应用内消息 pod (Firebase/InAppMessagingDisplay) 会自动将其自身指定为您应用的 messageDisplayComponent。要解决此问题,请改用无头 Firebase/InAppMessaging pod:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'YourProject' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!

# Pods for YourProject
pod 'Firebase'

# Remove the default InAppMessagingDisplay pod:
# pod 'Firebase/InAppMessagingDisplay'

# Include the headless pod instead:
pod `Firebase/InAppMessaging'

end
完成后,您可以更新自己的 pod,重新构建自己的应用,并查看新的自定义消息显示方式。

Android

您可以使用 Android 版 Firebase 应用内消息显示 SDK 来自定义应用内消息的消息显示方式(可在 Firebase GitHub 代码库中找到)。

创建自己的消息显示方式包含两个步骤:

  1. 编写自己的 FirebaseInAppMessagingDisplay 类实现。
  2. 使用无头 Firebase In-App Messaging SDK 注册该实现。

要开始操作,请查看 Firebase 应用内消息团队在 FirebaseInAppMessagingDisplayImpl.java 中的实现方式。