在 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 中显示它?的主要内容,如果未能解决你的问题,请参考以下文章

活动类 .....SplashActivity 不存在

在splashActivity中判断版本号,从自己公司服务器下载新版本的apk

手机影音1--SplashActivity

quartus FIR IP核使用 FIR II

python中怎么生成基于窗函数的fir滤波器

移动端持续集成(Jenkins+Gradle+fir.im)