SplashActivity 中显示的 Firebase 应用内消息。如何在MainActivity中显示?
Firebase In-App Messaging showing in SplashActivity. How to show it in MainActivity?
我为我的 android 应用启用了 Firebase 应用内消息传递。当我测试应用程序内消息时,它显示在应用程序的 SplashActivity 中。
Activity 流程如下:SplashActivity>LoginActivity>MainActivity
注意:
SplashActivity 仅具有 runnable 以获得 3 秒的延迟。
LoginActivity 有一些函数可以检查共享首选项是否不为空。
我尝试在 onCreate() 中添加以下代码行:
FirebaseInAppMessaging.getInstance().setMessagesSuppressed(true)
和FirebaseInAppMessaging.getInstance().setMessagesSuppressed(false)
在onDestroy()
我希望这条消息显示在 MainActivity。
我只是 运行 参与其中,因为我还有一个启动器 activity 一直在接收我的通知。我将假设您将启动画面 activity 设置为启动器:
<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>
挑战在于系统将所有通知传递给您的启动器activity,它们在那里等待作为 Intent 捆绑数据。
这是此线程中的一个重要主题,下面突出显示了其中的一个要点:
- 应用程序在后台:通知由 FCM 自动发送到通知托盘。当用户触摸通知时,通过启动清单中具有 android.intent.category.LAUNCHER 的 activity,应用程序会被带到前台。
通读整个链接的线程,因为这是一个最近似乎一直在发展的领域。
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");
}
}
和select Firebase 控制台中的此事件。
使用以下方法在不同的 Activity 中“启动”和“停止”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
我为我的 android 应用启用了 Firebase 应用内消息传递。当我测试应用程序内消息时,它显示在应用程序的 SplashActivity 中。
Activity 流程如下:SplashActivity>LoginActivity>MainActivity
注意: SplashActivity 仅具有 runnable 以获得 3 秒的延迟。 LoginActivity 有一些函数可以检查共享首选项是否不为空。
我尝试在 onCreate() 中添加以下代码行:
FirebaseInAppMessaging.getInstance().setMessagesSuppressed(true)
和FirebaseInAppMessaging.getInstance().setMessagesSuppressed(false)
在onDestroy()
我希望这条消息显示在 MainActivity。
我只是 运行 参与其中,因为我还有一个启动器 activity 一直在接收我的通知。我将假设您将启动画面 activity 设置为启动器:
<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>
挑战在于系统将所有通知传递给您的启动器activity,它们在那里等待作为 Intent 捆绑数据。
这是此线程中的一个重要主题
- 应用程序在后台:通知由 FCM 自动发送到通知托盘。当用户触摸通知时,通过启动清单中具有 android.intent.category.LAUNCHER 的 activity,应用程序会被带到前台。
通读整个链接的线程,因为这是一个最近似乎一直在发展的领域。
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");
}
}
和select Firebase 控制台中的此事件。
使用以下方法在不同的 Activity 中“启动”和“停止”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