Ручное отслеживание экрана не работает в Firebase (iOS)

Я пытаюсь отключить ручное отслеживание экрана в Firebase, заменяя его собственной реализацией отслеживания экрана.

Благодаря автоматическому отслеживанию экрана каждое событие, которое я отправляю в firebase, имеет два дополнительных параметра: firebase_screen_class а также firebase_screen_id со значением последнего ViewController, представленного в приложении

Поэтому я изменил приложение Info.plist файл с:

FirebaseScreenReportingEnabled = NO

И я начал вызывать функцию, когда экран приложения изменился:

Analytics.setScreenName(screenName, screenClass: screenName)

Результатом этого изменения является то, что DebugView Firebase больше не регистрируется screen_view события и без дополнительной информации (firebase_screen_class а также firebase_screen_id) прикреплен к последующим событиям.

Что мне не хватает?

Изменить: это связанные с Google модули в podfile.lock

  - Firebase/AdMob (4.2.0):
    - Firebase/Core
    - Google-Mobile-Ads-SDK (= 7.24.0)
  - Firebase/Core (4.2.0):
    - FirebaseAnalytics (= 4.0.3)
    - FirebaseCore (= 4.0.7)
  - Firebase/RemoteConfig (4.2.0):
    - Firebase/Core
    - FirebaseRemoteConfig (= 2.0.3)
  - FirebaseAnalytics (4.0.3):
    - FirebaseCore (~> 4.0)
    - FirebaseInstanceID (~> 2.0)
    - GoogleToolboxForMac/NSData+zlib (~> 2.1)
    - nanopb (~> 0.3)
  - FirebaseCore (4.0.7):
    - GoogleToolboxForMac/NSData+zlib (~> 2.1)
    - nanopb (~> 0.3)
  - FirebaseInstanceID (2.0.3)
  - FirebaseRemoteConfig (2.0.3):
    - FirebaseAnalytics (~> 4.0)
    - FirebaseInstanceID (~> 2.0)
    - GoogleToolboxForMac/NSData+zlib (~> 2.1)
    - Protobuf (~> 3.1)
  - Google-Mobile-Ads-SDK (7.24.0)
  - GoogleAnalytics (3.17.0)
  - GoogleSignIn (4.1.0):
    - GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)
    - GoogleToolboxForMac/NSString+URLArguments (~> 2.1)
    - GTMOAuth2 (~> 1.0)
    - GTMSessionFetcher/Core (~> 1.1)
  - GoogleToolboxForMac/DebugUtils (2.1.1):
    - GoogleToolboxForMac/Defines (= 2.1.1)
  - GoogleToolboxForMac/Defines (2.1.1)
  - GoogleToolboxForMac/NSData+zlib (2.1.1):
    - GoogleToolboxForMac/Defines (= 2.1.1)
  - GoogleToolboxForMac/NSDictionary+URLArguments (2.1.1):
    - GoogleToolboxForMac/DebugUtils (= 2.1.1)
    - GoogleToolboxForMac/Defines (= 2.1.1)
    - GoogleToolboxForMac/NSString+URLArguments (= 2.1.1)
  - GoogleToolboxForMac/NSString+URLArguments (2.1.1)
  - GTMOAuth2 (1.1.5):
    - GTMSessionFetcher (~> 1.1)
  - GTMSessionFetcher (1.1.12):
    - GTMSessionFetcher/Full (= 1.1.12)
  - GTMSessionFetcher/Core (1.1.12)
  - GTMSessionFetcher/Full (1.1.12):
    - GTMSessionFetcher/Core (= 1.1.12)

1 ответ

Решение

Я получил ответ от Firebase о том, что на iOS они поддерживают автоматическую + ручную отчетность по экрану или вообще без экранной отчетности. Google Analytics для Firebase НЕ поддерживает случай создания отчетов только на экране вручную. Флаг plist FirebaseAutomaticScreenReportingEnabled был переименован в FirebaseScreenReportingEnabled, чтобы уменьшить эту путаницу. Обратите внимание, что значение должно быть логическим, а не строкой. Если это не работает так, как вы ожидали, вы можете полностью отключить экранную отчетность, добавив в Info.plist флаг FirebaseScreenReportingEnabled со значением логического значения NO.

Теперь это исправлено, хотя ответы на вопросы по Stackru еще не дошли.

Я нашел решение в этом билете на Firebase github

По сути, это недавно было исправлено, чтобы дать разработчикам больше гибкости в своих проектах. Если вы обновитесь до версии 6.29.0 или выше, вы сможете отчитываться по своему усмотрению.

Последние изменения избавили от setScreen функциональность и теперь используйте только события.

Событие журнала:

Firebase.Analytics.logEvent(name, parameters: parameters)

Просмотр экрана журнала

Firebase.Analytics.logEvent(AnalyticsEventScreenView, parameters:[AnalyticsParameterScreenName: screenName])
Другие вопросы по тегам