猿问

FirebaseInAppMessagingClickListener 不调用 android

我正在使用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 的 onCreate 中注册了这个点击监听器


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' 


慕哥6287543
浏览 181回答 3
3回答

慕哥9229398

会不会和7天前打开的这个issue有关? https://github.com/firebase/firebase-android-sdk/issues/681

大话西游666

这是您可能想尝试的东西。在 Firebase 控制台中创建一个新的活动,暂时不要发布它,因为您无法测试已发布的活动。在“调度”步骤中,选择on_foreground作为触发事件。在您的应用程序中onResume(),添加侦听器。Firebase.inAppMessaging.addClickListener { inAppMessage, action ->    // ...}Firebase.inAppMessaging.addImpressionListener { inAppMessage ->    // ...}运行您的应用程序,然后按 HOME 按钮将其置于后台。从 Firebase 控制台发送测试消息Test on device,该消息位于“样式和内容”步骤中。将您的应用程序置于前台,然后点击未标记为“使用关闭作为操作”的广告系列按钮。此时,应该同时调用ClickListener和。ImpressionListenerIn-App Messaging 会删除所有侦听器,除非应用程序进入后台,因此如果您想用作触发事件,则DismissListener需要添加侦听器。onResume()on_foreground

跃然一笑

出于某种原因,每次活动进入后台时,FirebaseInAppMessaging 都会删除所有侦听器。removeAllListeners您可以通过在类的方法上放置一个断点来看到这一点DeveloperListenerManager。在主要活动的方法中注册您的侦听器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.inAppMessagingfirebaseIam.addClickListener { inAppMessage, action ->            //write your functionality            Log.d("here","successful)        }
随时随地看视频慕课网APP

相关分类

Java
我要回答