在 SplashActivity 中显示的 Firebase 应用内消息。如何在 MainActivity 中显示它?
Posted
技术标签:
【中文标题】在 SplashActivity 中显示的 Firebase 应用内消息。如何在 MainActivity 中显示它?【英文标题】:Firebase In-App Messaging showing in SplashActivity. How to show it in MainActivity? 【发布时间】:2020-01-17 08:14:37 【问题描述】:我已为我的 android 应用启用 Firebase 应用内消息传递。当我测试应用内消息时,它会显示在应用的 SplashActivity 中。
活动流程如:SplashActivity>LoginActivity>MainActivity
>注意: SplashActivity 只是可以运行以获得 3 秒的延迟。 LoginActivity 有一些函数可以检查共享首选项是否不为空。
我尝试在 onCreate() 中添加以下代码行:
FirebaseInAppMessaging.getInstance().setMessagesSuppressed(true)
和FirebaseInAppMessaging.getInstance().setMessagesSuppressed(false)
在 onDestroy()
我希望这条消息显示在 MainActivity 中。
【问题讨论】:
我面临同样的问题。你解决了吗? @Nayan 解决了吗? 我已经在 github 问题跟踪器上发布了相同问题的问题。也许有人会从开发人员那里回答。 github.com/firebase/firebase-android-sdk/issues/1299 请点赞或订阅观看回复 【参考方案1】: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 控制台中选择此事件。
【讨论】:
FirebaseInAppMessaging.getInstance().triggerEvent("main_activity_ready") 为我工作 我更喜欢:FirebaseInAppMessaging.getInstance().triggerEvent("main_activity_ready"),但在幕后,根据文档,它是一回事。 firebase.google.com/docs/in-app-messaging/…【参考方案2】:使用以下方法在不同的活动中“开始”和“停止”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
【讨论】:
【参考方案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 被带到前台。通读整个链接线程,因为这是一个最近似乎在发展的领域。
【讨论】:
这个答案无论如何都没有帮助,发布它的原因是什么? In-App messaing 的架构完全不同的 GCM...以上是关于在 SplashActivity 中显示的 Firebase 应用内消息。如何在 MainActivity 中显示它?的主要内容,如果未能解决你的问题,请参考以下文章