显示消息回调未调用 - Firebase 应用内消息传递
Display Message callback not invoking - Firebase in-app messaging
我正在尝试自定义 Firebase 应用内消息。
我正在关注这篇文章:https://firebase.google.com/docs/in-app-messaging/customize-messages
根据文章,我创建了自己的 FirebaseInAppMessagingDisplay class.
实现
import com.google.firebase.inappmessaging.FirebaseInAppMessagingDisplay;
import com.google.firebase.inappmessaging.FirebaseInAppMessagingDisplayCallbacks;
import com.google.firebase.inappmessaging.model.InAppMessage;
public class MyMessageDisplayImplementation implements
FirebaseInAppMessagingDisplay {
@Override
public void displayMessage(InAppMessage inAppMessage
, FirebaseInAppMessagingDisplayCallbacks
firebaseInAppMessagingDisplayCallbacks) {
Log.e("INAPP_MESSAGE","received an inapp message");
}
}
然后使用无头 Firebase 应用内消息 SDK 注册此实现
public class MyApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
FirebaseInAppMessaging.getInstance().setMessageDisplayComponent(new MyMessageDisplayImplementation());
}
}
我的问题是,我没有收到 displyaMessage() 回调。
当我注释掉应用程序 class 中的代码行 " FirebaseInAppMessaging.getInstance().setMessageDisplayComponent(new MyMessageDisplayImplementation());"
时,它显示默认消息。但是,当我把这段代码放回去时,什么也没有发生。
如果有人对此应用内消息自定义有更好的了解,请提供帮助。
firebase 文档中的信息有点令人困惑。其实很简单。
在应用级别 gradle 文件中添加了这些依赖项。
implementation 'com.google.firebase:firebase-core:16.0.8'
implementation ("com.google.firebase:firebase-inappmessaging:17.0.3")
注意:我们不需要添加“实现'com.google.firebase:firebase-inappmessaging-display:17.1.1'”依赖项
在启动时注册 DisplayMessage 组件 activity。
import com.google.firebase.inappmessaging.FirebaseInAppMessaging
import com.google.firebase.inappmessaging.FirebaseInAppMessagingDisplay
///////
override fun onStart() {
super.onStart()
Log.e("MESSAGE", "activity started")
var firebaseInAppMessagingDisplay = FirebaseInAppMessagingDisplay { inAppMessage, cb ->
// You can show the message here.
// The variable inAppMessage has all information about the campaign that we putting in console (title, content, image url.. etc)
Log.e("MESSAGE", "Display Message callback invoked")
}
FirebaseInAppMessaging.getInstance().setMessageDisplayComponent(firebaseInAppMessagingDisplay)
}
This GitHub issue comment 帮我解决了这个问题。
简而言之,问题是当您的 activity 恢复时,Firebase SDK 设置了自己的监听器,覆盖了您用 setMessageDisplayComponent
设置的监听器。
为了解决这个问题,我将我自己的侦听器代码从 onStart
移到了 onResume
,确保我的侦听器是最后添加的并成为接收消息的那个。
我正在尝试自定义 Firebase 应用内消息。
我正在关注这篇文章:https://firebase.google.com/docs/in-app-messaging/customize-messages
根据文章,我创建了自己的 FirebaseInAppMessagingDisplay class.
实现import com.google.firebase.inappmessaging.FirebaseInAppMessagingDisplay;
import com.google.firebase.inappmessaging.FirebaseInAppMessagingDisplayCallbacks;
import com.google.firebase.inappmessaging.model.InAppMessage;
public class MyMessageDisplayImplementation implements
FirebaseInAppMessagingDisplay {
@Override
public void displayMessage(InAppMessage inAppMessage
, FirebaseInAppMessagingDisplayCallbacks
firebaseInAppMessagingDisplayCallbacks) {
Log.e("INAPP_MESSAGE","received an inapp message");
}
}
然后使用无头 Firebase 应用内消息 SDK 注册此实现
public class MyApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
FirebaseInAppMessaging.getInstance().setMessageDisplayComponent(new MyMessageDisplayImplementation());
}
}
我的问题是,我没有收到 displyaMessage() 回调。
当我注释掉应用程序 class 中的代码行 " FirebaseInAppMessaging.getInstance().setMessageDisplayComponent(new MyMessageDisplayImplementation());"
时,它显示默认消息。但是,当我把这段代码放回去时,什么也没有发生。
如果有人对此应用内消息自定义有更好的了解,请提供帮助。
firebase 文档中的信息有点令人困惑。其实很简单。
在应用级别 gradle 文件中添加了这些依赖项。
implementation 'com.google.firebase:firebase-core:16.0.8'
implementation ("com.google.firebase:firebase-inappmessaging:17.0.3")
注意:我们不需要添加“实现'com.google.firebase:firebase-inappmessaging-display:17.1.1'”依赖项
在启动时注册 DisplayMessage 组件 activity。
import com.google.firebase.inappmessaging.FirebaseInAppMessaging
import com.google.firebase.inappmessaging.FirebaseInAppMessagingDisplay
///////
override fun onStart() {
super.onStart()
Log.e("MESSAGE", "activity started")
var firebaseInAppMessagingDisplay = FirebaseInAppMessagingDisplay { inAppMessage, cb ->
// You can show the message here.
// The variable inAppMessage has all information about the campaign that we putting in console (title, content, image url.. etc)
Log.e("MESSAGE", "Display Message callback invoked")
}
FirebaseInAppMessaging.getInstance().setMessageDisplayComponent(firebaseInAppMessagingDisplay)
}
This GitHub issue comment 帮我解决了这个问题。
简而言之,问题是当您的 activity 恢复时,Firebase SDK 设置了自己的监听器,覆盖了您用 setMessageDisplayComponent
设置的监听器。
为了解决这个问题,我将我自己的侦听器代码从 onStart
移到了 onResume
,确保我的侦听器是最后添加的并成为接收消息的那个。