如何在React Native应用程序中添加Firebase Crashlytics

如何在React Native应用程序中添加Firebase Crashlytics

这是我们的第五篇文章 反应原生 Firebase 系列,在这个例子中我们将看到什么是Firebase Crashlytics? 以及如何将 Crashlytics 集成到 React Native App 中? 如何在 Firebase 控制台中查看崩溃报告? 让我们从 Firebase Crashlytics 示例开始。

推荐:如何Microsoft Store 下载和安装Msixbundle/Appx/Appxbundle文件

Firebase Crashlytics

Firebase Crashlytics 是由 Crash + Analytics 组成的一个词,这意味着它可以帮助您收集有关以下内容的分析和详细信息 崩溃错误 您的应用程序中发生的情况。 它通过三个方面来做到这一点:

  • 日志:记录应用程序中的事件,以便在应用程序崩溃时与崩溃报告一起发送以获取上下文。
  • 崩溃报告:每次崩溃都会自动转换为崩溃报告并发送。
  • 堆栈跟踪:即使捕获错误并且您的应用程序恢复,仍然可以发送 JavaScript 堆栈跟踪。

Firebase Crashlytics 的使用

如上所述,Crashlytics 可帮助您收集有关崩溃和错误的分析和详细信息。 有 各种方法 使用 Crashlytics 设置崩溃报告的属性,以便提供崩溃分析并帮助您查看它们。 方法帮助我们设置 预定义属性,但我们也可以设置自己的 自定义属性

crashlytics().setUserId(user.uid),
crashlytics().setAttribute('credits', String(user.credits)),
crashlytics().setAttributes({
  role: 'admin',
  followers: '13',
  email: user.email,
  username: user.username
}),

我们可以用 日志 我们的应用程序中的方法可以为可能发生的崩溃积累额外的上下文。

crashlytics().log('App mounted.');

为了测试 Crashlytics,我们可以使用 碰撞 强制崩溃应用程序的方法

crashlytics().crash()

Crashlytics 还支持将 JavaScript 堆栈跟踪发送到 Firebase 控制台。 这可以用于任何发生错误但被您自己的代码捕获并正常恢复的情况。 要发送堆栈跟踪,请将 JavaScript 错误传递给 记录错误 方法。

crashlytics().log('Updating user count.');
try {
  if (users) {
    // An empty array is truthy, but not actually true.
    // Therefore the array was never initialised.
    setUserCounts(userCounts.push(users.length));
  }
} catch (error) {
  crashlytics().recordError(error);
  console.log(error);
}

如果您想随时停止收集任何 Crashlytics,那么您可以使用 setCrashlyticsCollectionEnabled 禁用 crashlytics 集合。

crashlytics().setCrashlyticsCollectionEnabled(false)

示例说明

在此示例中,我们将集成 Firebase Crashlytics 并在 Firebase 控制台中记录崩溃。 我们将创建一个简单的屏幕来记录用户详细信息、单击不同按钮时发生的崩溃和错误。 当应用程序启动时,我们还将添加一些额外的日志,以查看是否可以在控制台中看到它们。 那么让我们看看这个代码是什么样子的。

制作 React Native 应用程序

React Native 入门将帮助您更多地了解如何制作 React Native 项目。 我们将使用 React Native 命令行界面来制作我们的 React Native 应用程序。

如果您之前安装了全局的react-native-cli软件包,请将其删除,因为它可能会导致意外问题:

npm uninstall -g react-native-cli @react-native-community/cli

运行以下命令创建一个新的 React Native 项目

npx react-native init ProjectName

如果你想使用特定的 React Native 版本启动一个新项目,你可以使用 –version 参数:

npx react-native init ProjectName --version X.XX.X

注意如果上述命令失败,您可能使用的是旧版本 react-native 或者 react-native-cli 在您的电脑上全局安装。 尝试卸载 cli 并使用 npx 运行 cli。

这将在项目目录中创建一个带有名为 App.js 的索引文件的项目结构。

Firebase SDK 集成

要从任何 React Native Firebase 示例开始,您需要将 Firebase 集成到您的应用程序中,我专门为此详细制作了一篇单独的文章,您将在其中看到在 Android 版 React Native 应用程序中添加 Firebase 的点对点过程,以及iOS 两者都有。

请访问如何在 Android 和 iOS 应用程序中集成 Firebase,然后返回执行下一步。

完成 Firebase 集成后,您可以安装更多依赖项。

安装依赖项

要安装依赖项,请打开终端并使用以下命令跳转到您的项目

cd ProjectName

对于 React Native Firebase,我们需要安装和设置应用程序模块

npm install @react-native-firebase/app --save

现在安装 crashlytics 模块

npm install @react-native-firebase/crashlytics --save

此命令会将所有依赖项复制到您的 node_module 目录中。 –save 是可选的,它只是更新 package.json 文件中的依赖项。

CocoaPods 安装

React Native 0.60 更新后,他们引入了自动链接,因此我们不需要链接库,但对于 iOS,我们需要安装 pod。 因此要安装 pod,请使用

cd ios/ && pod install --repo-update && cd ..

Android 的附加设置

我们必须添加一些东西来集成 Android 版 Crashlytics。

在 React Native 中集成 Crashlytics 的代码

请在任何代码编辑器中打开 App.js 并将代码替换为以下代码

应用程序.js

// #5 How to Add Firebase Crashlytics in React Native App
// https://aboutreact.com/react-native-firebase-crashlytics/

// Import React in our code
import React, { useEffect, useState } from "react";

// Import all the components we are going to use
import {
  SafeAreaView,
  StyleSheet,
  View,
  Text,
  TouchableOpacity,
} from "react-native";

import crashlytics from "@react-native-firebase/crashlytics";

const App = () => {
  const (userCounts, setUserCounts) = useState(null);

  useEffect(() => {
    crashlytics().log("App mounted.");
  }, ());

  const logCrashlytics = async () => {
    crashlytics().log("Dummy Details Added");
    await Promise.all((
      crashlytics().setUserId("101"),
      crashlytics().setAttribute("credits", String(50)),
      crashlytics().setAttributes({
        email: "aboutreact11@gmail.com",
        username: "aboutreact11",
      }),
    ));
  };

  const logCrash = async (user) => {
    crashlytics().crash();
  };

  const logError = async (user) => {
    crashlytics().log("Updating user count.");
    try {
      if (users) {
        // An empty array is truthy, but not actually true.
        // Therefore the array was never initialised.
        setUserCounts(userCounts.push(users.length));
      }
    } catch (error) {
      crashlytics().recordError(error);
      console.log(error);
    }
  };

  return (
    <SafeAreaView style={styles.container}>
      <Text style={styles.titleText}>
        How to Add Firebase Crashlytics in React Native App
      </Text>
      <View style={styles.innerContainer}>
        <TouchableOpacity
          activeOpacity={0.5}
          style={styles.buttonStyle}
          onPress={() => logCrashlytics()}
        >
          <Text style={styles.buttonTextStyle}>
            Log User Details
          </Text>
        </TouchableOpacity>
        <TouchableOpacity
          activeOpacity={0.5}
          style={styles.buttonStyle}
          onPress={logCrash}
        >
          <Text style={styles.buttonTextStyle}>
            Log Crash
          </Text>
        </TouchableOpacity>
        <TouchableOpacity
          activeOpacity={0.5}
          style={styles.buttonStyle}
          onPress={logError}
        >
          <Text style={styles.buttonTextStyle}>
            Log Error
          </Text>
        </TouchableOpacity>
      </View>
      <Text style={styles.footerHeading}>
        React Native Firebase Crashlytics
      </Text>
      <Text style={styles.footerText}>
        www.aboutreact.com
      </Text>
    </SafeAreaView>
  );
};

export default App;

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: "#fff",
  },
  innerContainer: {
    flex: 1,
    alignItems: "center",
    padding: 35,
    justifyContent: "center",
  },
  titleText: {
    fontSize: 30,
    fontWeight: "bold",
    textAlign: "center",
    paddingVertical: 20,
  },
  buttonTextStyle: {
    color: "white",
    fontWeight: "bold",
  },
  buttonStyle: {
    alignItems: "center",
    backgroundColor: "orange",
    padding: 10,
    width: "100%",
    marginTop: 16,
  },
  footerHeading: {
    fontSize: 18,
    textAlign: "center",
    color: "grey",
  },
  footerText: {
    fontSize: 16,
    textAlign: "center",
    color: "grey",
  },
});

Crashlytics 设置

完成所有这些设置并替换代码后,我们必须从 Firebase 控制台启用 crashlytics 并打开您的 Firebase 控制台 并单击 崩溃解决方案 标签

React_native_crashlytics_setup1

到达那里后,您可以单击 “启用 Crashlytics”

React_native_crashlytics_setup2

启用后,您将看到它等待您的应用程序首次连接。 现在您必须启动您的应用程序。

运行 React Native 应用程序

再次打开终端并使用跳转到您的项目。

cd ProjectName

1. 启动 Metro Bundler

首先,您需要启动 Metro,React Native 附带的 JavaScript 捆绑器。 要启动 Metro 捆绑程序,请运行以下命令

npx react-native start

一旦您启动 Metro Bundler,它将永远在您的终端上运行,直到您将其关闭。 让 Metro Bundler 在自己的终端中运行。 打开一个新终端并运行该应用程序。

2.启动React Native应用程序

在 Android 虚拟设备或真实调试设备上运行项目

npx react-native run-android

或在 iOS 模拟器上运行(仅限 macOS)

npx react-native run-ios

如果您的应用程序通过正确的设置成功启动,那么您可以看到 “安装成功!” 消息并转到仪表板选项。 Android 和 iOS 都需要所有这些东西。

React_native_crashlytics_setup3

输出截图

React_native_crashlytics1

仅供参考:一天后,Crashlytics 报告将在 Firebase 仪表板上可见

React_native_crashlytics2

React_native_crashlytics3

React_native_crashlytics4

这是如何在适用于 Android 和 iOS 的 React Native 应用程序中添加 Firebase Crashlytics。 如果您有任何疑问或想分享有关该主题的内容,您可以在下面发表评论或在此处联系我们。 很快就会有更多帖子发布。 

推荐:WordPress网站抓取插件Crawlomatic


发表评论