11

我为我的 Android 应用启用了 Firebase 应用内消息传递。当我测试应用内消息时,它显示在应用的 SplashActivity 中。

活动流程如:SplashActivity>LoginActivity>MainActivity

注意:SplashActivity 只是可以运行以获得 3 秒的延迟。LoginActivity 有一些功能可以检查共享首选项是否不为空。

我试图在下面的代码行中添加 onCreate() : FirebaseInAppMessaging.getInstance().setMessagesSuppressed(true)

FirebaseInAppMessaging.getInstance().setMessagesSuppressed(false)onDestroy()

我希望这条消息显示在 MainActivity 中。

4

3 回答 3

8

Firebase 应用内消息由分析事件触发。

如果你想在 MainActivity 中显示消息 ->

class MainActivity : AppCompatActivity() { 
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    ...
    FirebaseAnalytics.getInstance(this).logEvent("main_activity_ready",null)
    //or 
    //FirebaseInAppMessaging.getInstance().triggerEvent("main_activity_ready");

}
}

并在 firebase 控制台中选择此事件。

在此处输入图像描述

于 2020-03-25T08:16:57.110 回答
1

使用以下方法在不同的活动中“开始”和“停止”InAppMessaging。

public static void inAppMessagingInitialization(Context context, boolean setSuppressed,String eventName){ //setSuppressed false means start getting message
    FirebaseInAppMessaging.getInstance().setMessagesSuppressed(setSuppressed); //true==Stop inAppMessaging

    if (!eventName.equals("")){
        FirebaseAnalytics.getInstance(context).logEvent(eventName,null); //To Show InAppMessage in MainActivity. Need to add this event name in Web console campaign
        FirebaseInAppMessaging.getInstance().triggerEvent(eventName);
    }
}

如果您不想在 SplashActivity 中显示,请调用上述方法,如下所示:

inAppMessagingInitialization(context,true,""); //Stops inAppMessaging

要在 MainActivity 中显示 InAppMessage 调用上述方法,如下所示,并在 InAppMessaging 控制台中设置事件名称。

inAppMessagingInitialization(context,false,"main_activity_inappmessaging"); //Starts inAppMessaging
于 2021-05-11T10:30:01.073 回答
-3

我刚刚遇到了这个问题,因为我还有一个启动器活动一直在收割我的通知。我将假设您将您的启动活动设置为您的启动器:

        <activity android:name=".SplashActivity"
          android:theme="@style/SplashTheme">
          <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
        </activity>

挑战在于系统将所有通知传递给您的 LAUNCHER 活动,在那里它们作为 Intent 捆绑数据等待。

这是此线程上的一个重要主题How to handle notification when app in background in Firebase,其中一个关键点在下面突出显示:

  • 应用在后台:通知由 FCM 自动发送到通知托盘。当用户触摸通知时,通过启动清单中包含 android.intent.category.LAUNCHER 的 Activity 将应用程序带到前台。

通读整个链接线程,因为这是一个最近似乎在发展的领域。

于 2019-11-20T04:15:30.570 回答