[assigned] FireBaseAnalytics.setCurrentScreen() on Fragment may not be called
See original GitHub issueOverview (Required)
(日本語で失礼します)
一部のFragmentでFireBaseAnalytics.setCurrentScreen
が呼ばれないケースがあります。
そのFragmentとは、AllSessionsFragment
やSearchSessionsFragment
と、ViewPagerの中の最初のFragmentです。
一例としてSearchSessionsFragment
のライフサイクルは以下のようになります。
- アプリを起動
- bottom navigationで検索を選択
SearchSessionsFragment
インスタンス生成setUserVisibleHint()
が呼ばれるが ログは送れないonAttach()
が呼ばれるonActivityCreated()
が呼ばれる(fireBaseAnalyticsインスタンスの初期化)- トピックタブ(
SearchTopicsFragment
)に移動、トピックタブのログは送れる - 再度セッションタブ(
SearchSessionsFragment
)に移動、この時のログは送れる
現状setUserVisibleHint()
でログを送っていますが、 上記の 3 の時点だとfireBaseAnalytics
はまだnullなので実行されません。
たとえfireBaseAnalytics
の初期化タイミングを早めて実行できたとしても、まだこのときはAttachされておらずgetActivity()
がnullなのでsetCurrentScreen()
を実行できません。
代わりにViewPager.OnPageChangeListener
を使って試そうとしましたが、あまりいいやり方にできなかったのでissueにしました 🤔
Links
Issue Analytics
- State:
- Created 6 years ago
- Comments:14 (13 by maintainers)
Top Results From Across the Web
Firebase Analytics not tracking the name of my app screens
setCurrentScreen() event should be pushed from onResume() method only. Otherwise it will not show name of screen in report, it will only show ......
Read more >FirebaseAnalytics - Google
If your app does not use a distinct Activity for each screen, you should call ... the current Activity changes or a new...
Read more >New API for manually tracking screen views in Google Analytics
The latest Google Analytics for Firebase SDK release now makes it possible for you to log the screen_view event manually for both Android ......
Read more >[GA4] Automatically collected events - Firebase Help
Automatically collected events are triggered by basic interactions with your app and/or site (as indicated under the event name in the table below)....
Read more >Firebase Analytics quick start - Rock and Null
A common approach is to call the screen tracking method, passing the fragment class name as the screen name on onResume() . If...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Assigned されたが、コメントだけさせてください 😄,
setUserVisibleHint(true)
でしかログを送信するようであれば、FragmentStatePagerAdapter
を実装する時に、FragmentStatePagerAdapter#setPrimaryItem()
をOverrideして、何とかできるかもしれません 😄 (setUserVisibleHint()に「true」が渡されたのはこのメソッドでしか呼ばれないわけですね)そして fireBaseAnalytics のインスタンスは事前で生成すべきかと思います。SearchFragmentで生成して、PagerAdapterで使うなど 😄
少し冗長かもしれませんが、Rxの
withLatestFrom
を使ってイベントの待ち合わせをするという手もあります。ご参考までに 😃