我正在使用 firebaseInappMessaging ,并且它的作品。然后,我使用FirebaseInAppMessagingClickListener
注册操作回电,这是没有呼叫的。
public class InAppMessageClick implements FirebaseInAppMessagingClickListener, FirebaseInAppMessagingImpressionListener, FirebaseInAppMessagingDisplay {
String TAG = "InAppMessageClick";
@Override
public void messageClicked(InAppMessage inAppMessage, Action action) {
// Determine which URL the user clicked
String url = action.getActionUrl();
LogUtils.i(TAG, "Action URL : "+url);
// Get general information about the campaign
CampaignMetadata metadata = inAppMessage.getCampaignMetadata();
Log.i(TAG," Metadata : "+metadata);
}
@Override
public void impressionDetected(InAppMessage inAppMessage) {
LogUtils.i(TAG, "impressionDetected Action URL : "+inAppMessage.getCampaignMetadata().getCampaignName());
}
@Override
public void displayMessage(InAppMessage inAppMessage, FirebaseInAppMessagingDisplayCallbacks firebaseInAppMessagingDisplayCallbacks) {
LogUtils.i(TAG, "displayMessage Action URL : "+inAppMessage.getCampaignMetadata().getCampaignName());
}
}
我注册了此单击MainActivity的侦听器
InAppMessageClick inAppMessageClick = new InAppMessageClick();
FirebaseInAppMessaging.getInstance().setMessageDisplayComponent(inAppMessageClick);
FirebaseInAppMessaging.getInstance().addClickListener(inAppMessageClick);
我试图以两种方式注册听众。
InAppMessageClick inAppMessageClick = new InAppMessageClick();
FirebaseInAppMessaging.getInstance().addClickListener(inAppMessageClick);`
或
FirebaseInAppMessaging.getInstance().addClickListener(inAppMessageClick, new Executor() {
@Override
public void execute(Runnable command) {
LogUtils.i("MainActivity", "FIAM CLICKED EXECUTOR");
}
});
`
并使用gradle
implementation 'com.google.firebase:firebase-inappmessaging-display:18.0.2'
implementation 'com.google.firebase:firebase-core:17.0.1'
是否可以与7天前的这个问题相关?https://github.com/firebase/firebase-android-sdk/issues/681
出于某种原因,每次活动都进入后台时,firebaseInappMessgage删除了所有侦听器。您可以通过在DeveloperListenerManager
类的removeAllListeners
方法上放置一个突破点来看到这一点。在您的主要活动的onResume
方法中注册听众是解决此问题的一种方法。
这是您可能想尝试的东西。
-
在Firebase控制台中创建一个新的广告系列(请参阅https://firebase.google.com/docs/in-app-messaging/compose-campaign(。不要发布它,因为您无法测试已发布的广告系列。
-
在"调度"步骤,选择
on_foreground
作为触发事件。 -
在您的应用程序的
onResume()
中,添加侦听器。
Firebase.inAppMessaging.addClickListener { inAppMessage, action ->
// ...
}
Firebase.inAppMessaging.addImpressionListener { inAppMessage ->
// ...
}
运行您的应用程序,然后按下主按钮将其放在后台。
从Firebase Console的
Test on device
发送测试消息,该消息是"样式和内容"。步骤。将您的应用程序推向前景,并点击广告系列的按钮,该按钮未标记为"使用"解雇"作为"行动"。
此时,ClickListener
和ImpressionListener
都应被调用。
应用程序内消息删除除DismissListener
以外的所有侦听器时,当应用程序进入后台时,如果要使用on_foreground
作为触发事件,则需要在onResume()
中添加侦听器。
Dependencies:
implementation platform('com.google.firebase:firebase-bom:26.6.0')
implementation 'com.google.firebase:firebase-analytics-ktx'
implementation 'com.google.firebase:firebase-inappmessaging-display-ktx'
implementation 'com.google.firebase:firebase-inappmessaging-ktx'
code on MainActivity onCreateMethod:
val firebaseIam = Firebase.inAppMessaging
firebaseIam.addClickListener { inAppMessage, action ->
//write your functionality
Log.d("here","successful)
}