Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android InApp消息传递赢得';无法在自定义事件上显示消息_Android_Ios_Firebase_Firebase In App Messaging - Fatal编程技术网

Android InApp消息传递赢得';无法在自定义事件上显示消息

Android InApp消息传递赢得';无法在自定义事件上显示消息,android,ios,firebase,firebase-in-app-messaging,Android,Ios,Firebase,Firebase In App Messaging,使用 我在Firebase中使用“设备上测试”功能时收到此消息 我在使用事件“在前台”时也会收到消息,但我不想直接在应用程序启动时显示消息,而是想在进入新屏幕时显示消息(当我发送事件“显示类别屏幕”时) 像这样 implementation 'com.google.firebase:firebase-analytics:17.2.1' implementation 'com.google.firebase:firebase-inappmessaging-display:19.0.2' 我将In

使用

我在Firebase中使用“设备上测试”功能时收到此消息 我在使用事件“在前台”时也会收到消息,但我不想直接在应用程序启动时显示消息,而是想在进入新屏幕时显示消息(当我发送事件“显示类别屏幕”时)

像这样

implementation 'com.google.firebase:firebase-analytics:17.2.1'
implementation 'com.google.firebase:firebase-inappmessaging-display:19.0.2'
我将InApp消息触发事件设置为“显示类别屏幕”。但什么也没发生

事件已成功显示在Firebase的DebugView中

我在日志中看到了这个

FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(activity);
mFirebaseAnalytics.logEvent("Show_Category_Screen", null);

我的iOS应用程序也有同样的问题。有可能做到这一点吗?

我今天开始玩应用内消息传递,这需要使用著名的试错技术来解决

触发事件有两种方式:

I/FIAM.Headless: Successfully fetched 2 messages from backend
I/FIAM.Headless: Removing display event listener
I/FIAM.Headless: Already impressed InAppCategoryMessage ? : false

我发布了一个活动,触发器
主屏幕打开了
,因为测试时无法执行此操作,测试消息会显示在app open上:

现在,请确保在活动的
onResume()
中调用
triggerEvent()
logEvent()
如果在
OnCreate()
中调用,则它将不起作用

FirebaseInAppMessaging.getInstance().triggerEvent("main_screen_opened");
注意:它(可能?)不会第一次触发,以避免立即对用户进行bug。当你转到主屏幕并返回应用程序时,它现在应该会显示出来

编辑:在进行了一些测试之后,如果您将其放入
onCreate()
中,就可以了。当您检查日志时,您将看到

@Override
protected void onResume() {
    super.onResume();

    FirebaseAnalytics.getInstance(this).logEvent("main_screen_opened", null);
    FirebaseInAppMessaging.getInstance().triggerEvent("main_screen_opened");
    ...
}
已经印象深刻了吗?:假的

第二次执行
logEvent()
/
Trigger()
,弹出窗口将显示在app
build.gradle
文件中添加以下行:

Already impressed <your campaign name> ? : false
onCreate()


我使用上述步骤解决了相同的问题。

对我也不起作用,我尝试了所有方法,但即使只有“main_activity”(主活动)事件,消息仍会显示在启动屏幕上,我仅在的onresume中记录并触发该事件mainactivity@ElJazouli真奇怪。您确定您没有发送测试消息并使用真实的已发布消息吗?您的意思是什么?我使用的是“在设备上测试”,这与真实发布的消息不同吗?@ElJazouli请检查我的帖子和我添加的图片:当使用
在设备上测试时,该消息仅在应用程序打开时触发。它在触发器上不起作用,因此只会在SplashActivity上显示。非常感谢您解释了一切,我刚刚从firebase团队成员那里得到了关于这个问题的答案,他也说了同样的话。虽然这个代码片段可能是解决方案,但确实有助于提高您文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。
Already impressed <your campaign name> ? : false
// in app messaging
implementation 'com.google.firebase:firebase-inappmessaging-display:19.0.3'
implementation 'com.google.firebase:firebase-analytics:17.2.2
FirebaseDatabase.getInstance().setPersistenceEnabled(false);
FirebaseInAppMessaging.getInstance().setAutomaticDataCollectionEnabled(true);