首页 > 解决方案 > 为什么 screen_view 没有显示 firebase_screen?

问题描述

大家早上好,希望我能得到一些帮助。

在实时、事件、趋势中,我可以找到一个带有屏幕名称的自定义参数,但它们不会出现在 screen_view 中。所以在事件中,screen_view 表是全部(未设置)。

在 screen_view 中,firebase_screen 显示未设置

应用程序.js:

import React from "react";
import { AppState, NativeModules } from "react-native";
import { Provider } from "react-redux";
import LoginContainer from "./src/components/login/LoginContainer";
import { createSwitchNavigator, createStackNavigator } from "react-navigation";
import CommonAppStack from "./src/navigation/opciones_menu/commonStacks";
import AuthLoadingScreen from "./src/screens/AuthLoadingScreen";
import configureStore from "./src/configureStore";
import {
  HomeSegurosDrawer,
  HomeSegurosDrawerSinConsultas,
} from "./src/navigation/menu_drawers/HomeSegurosDrawer";
import NavigationService from "./src/services/NavigationService";
import SeleccionarUnidadContainer from "./src/components/seleccion_unidad/SeleccionarUnidadContainer";
import SeleccionSeguroContainer from "./src/components/seleccion_seguro/SeleccionSeguroContainer";
import TelefonosUtilesPublicoContainer from "./src/screens/telefonos_utiles_publico/TelefonosUtilesPublicoContainer";
import SplashScreen from "react-native-splash-screen";
import { PersistGate } from "redux-persist/integration/react";
import Analytics from "@react-native-firebase/analytics";

const seleccionarUnidadProductorStack = createStackNavigator(
  {
    UnidadSelectScreen: {
      screen: SeleccionarUnidadContainer,
    },
    SeleccionSeguro: SeleccionSeguroContainer,
  },
  {
    navigationOptions: {
      initialRouteName: "UnidadSelectScreen",
    },
  }
);

const AppStack = createStackNavigator(
  {
    UnidadYProductorStackNav: seleccionarUnidadProductorStack,
    homeSegurosDrawer: HomeSegurosDrawer,
    homeSegurosDrawerSinConsultas: HomeSegurosDrawerSinConsultas,
    CommonAppStack,
  },
  {
    initialRouteName: "UnidadYProductorStackNav",
    headerMode: "none",
  }
);

const AuthStack = createStackNavigator(
  {
    SignIn: {
      screen: LoginContainer,
    },
    TelefonosUtilesPublico: TelefonosUtilesPublicoContainer,
  },
  {
    navigationOptions: {
      initialRouteName: "SignIn",
    },
  }
);

const RootStack = createSwitchNavigator(
  {
    AuthLoading: AuthLoadingScreen,
    AppStack: AppStack,
    AuthStack: AuthStack,
  },
  {
    initialRouteName: "AuthLoading",
  }
);

export const { store, persistor } = configureStore();

export default class App extends React.Component {
  constructor(props) {
    super();
    this.state = {
      isReady: false,
      fontLoaded: false,
      appState: AppState.currentState,
    };
  }

  componentDidMount() {
    SplashScreen.hide();
    AppState.addEventListener("change", this._handleAppStateChange);
  }

  componentWillUnmount() {
    AppState.removeEventListener("change", this._handleAppStateChange);
  }

  _handleAppStateChange = async (nextAppState) => {
    if (
      this.state.appState.match(/inactive|background/) &&
      nextAppState === "active"
    ) {
      console.log("App has come to the foreground!");
    }

    this.setState({ appState: nextAppState });
  };

  getActiveRouteName(navigationState) {
    if (!navigationState) {
      return null;
    }
    const route = navigationState.routes[navigationState.index];
    // Dive into nested navigators
    if (route.routes) {
      return this.getActiveRouteName(route);
    }
    return route.routeName;
  }

  render() {
    return (
      <Provider store={store}>
        <PersistGate loading={null} persistor={persistor}>
          <RootStack
            ref={(navigatorRef) => {
              NavigationService.setTopLevelNavigator(navigatorRef);
            }}
            onNavigationStateChange={async (prevState, currentState) => {
              const currentScreen = this.getActiveRouteName(currentState);
              const prevScreen = this.getActiveRouteName(prevState);

              if (prevScreen !== currentScreen) {
                await Analytics().setCurrentScreen(currentScreen);
              }
            }}
          ></RootStack>
        </PersistGate>
      </Provider>
    );
  }
}

导航服务.js:

import { NavigationActions, StackActions } from 'react-navigation';
import { DrawerActions } from 'react-navigation';
import Analytics from '@react-native-firebase/analytics';

let _navigator;

function setTopLevelNavigator(navigatorRef) {
  _navigator = navigatorRef;
}

function navigate(routeName, params) {
  + Analytics().logEvent('custom_view', {screen: routeName});
  _navigator.dispatch(
    NavigationActions.navigate({
      routeName,
      params,
    })
  );
}

function navigateAndReset(routeName, params) {
  + Analytics().logEvent('custom_view', {screen: routeName});
  _navigator.dispatch(
    NavigationActions.navigate({
      routeName,
      params,
      action: StackActions.reset({
        index: 0,
        actions: [
          NavigationActions.navigate({
            routeName,
            params
          })
        ]
      })
    })
  );
}

function openDrawer() {
  _navigator.dispatch(DrawerActions.openDrawer());
}
export default {
  navigate,
  navigateAndReset,
  setTopLevelNavigator,
  openDrawer
};

包.json:

"@react-native-firebase/analytics": "^11.2.0",
"@react-native-firebase/app": "^11.2.0",
"react-native": "0.61.5",
"react-navigation": "^2.9.3",

我有另一个应用程序运行相同的 firebase 分析代码及其工作,我不知道可能是什么问题。预先感谢您的帮助!

标签: firebasereact-nativereact-navigationfirebase-analyticsreact-native-firebase

解决方案


推荐阅读