Firebase setCurrentScreen () в качестве первого события не записывает правильные значения - PullRequest
0 голосов
/ 27 апреля 2018

У меня ViewPager с Tabs, поэтому я регистрирую собственные имена экранов в Firebase Analytics, когда пользователь переключается между вкладками. Проблема в том, что мое первое событие не зарегистрировано . Почему?

Может ли это произойти, потому что регистрируется автоматическое событие screen_view (без аргумента firebase_screen, который необходим для правильного анализа данных), и это автоматическое событие имеет «более высокий приоритет» и переопределяет мое событие?

Или, может быть, я записал свое первое событие не в том месте (метод onCreate)?

Упрощенный код:

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        (...)

        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }

            @Override
            public void onPageSelected(int position) {
                FirebaseAnalytics.getInstance(SecondActivity.this).setCurrentScreen(SecondActivity.this, getTabNameForLogging(position), null);
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });

        //send event because onPageSelected isn't triggered at activity/viewpager start-up
        FirebaseAnalytics.getInstance(this).setCurrentScreen(this, "TAB 0", null);

    }

    private String getTabNameForLogging(int position) {
        switch (position) {
            case 0:
                return "TAB 0";
            case 1:
                return "TAB 1";
            case 2:
                return "TAB 2";
            default:
                return "invalid position";
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Возможно, что firebase не может установитьCurrentScreen, потому что он не получает активность от SecondActivity.this в onCreate (). Нечто подобное случилось со мной.

Есть обходные пути, например, добавление в onGlobalLayout () или onResume ().

0 голосов
/ 28 апреля 2018

Причина этого в том, что, цитируя официальную документацию :

Отслеживание экранов вручную полезно, если ваше приложение не использует отдельный UIViewController или Activity для каждого экрана, который вы можете пожелать дорожка, например, в игре.

Следовательно, вы не можете изменить его в пределах Activity с вкладками, это уникально для Activity. Кроме того, если вы установите screenClassOverride на null, вы вернете его к значению по умолчанию, см. Ниже:

Название класса экрана. По умолчанию это имя класса текущая активность. Установите значение null, чтобы вернуться к имени класса по умолчанию.

Я предлагаю вам использовать view_item для своих нужд во вкладках и отправлять вместо этого однозначно, что лучше подходит для ваших целей. Но если вам интересно, почему он не запускает первый, просто попробуйте так на onCreate:

FirebaseAnalytics.getInstance(this).setCurrentScreen(SecondActivity.this, "SecondActivity");
...