react-native-firebase-crash-report
Version:
React Native Firebase Crash Report
219 lines (149 loc) • 5.07 kB
Markdown
# React Native Firebase Crash Report
[](https://badge.fury.io/js/react-native-firebase-crash-report)
[](https://img.shields.io/npm/dm/react-native-firebase-crash-report.svg?maxAge=2592000)
React Native Firebase Crash Report With Custom Log
## Version
If you're using React Native >= 0.40, make sure to use `react-native-firebase-crash-report` >= **1.2.0**
## Usage
```javascript
import FirebaseCrash from 'react-native-firebase-crash-report';
/*
* Create custom log messages that will be included in the crash report
*/
FirebaseCrash.log('User logged in');
/*
* Create custom log messages that will be included in the crash report and output to logcat/NSLog
*/
FirebaseCrash.logcat('User logged in');
// Android only
// Params:
// - message: string, required
// - debug level: int, optional, default 3 (https://developer.android.com/reference/android/util/Log.html)
// - tag: string, optional, default 'RNFirebaseCrashReport'
FirebaseCrash.logcat('User logged in', 3, 'MyTag');
/*
* Report errors on demand
*
* iOS Note: calling this API on iOS will result in app crash
*/
FirebaseCrash.report('A weird thing just happened...');
```
## Installation
### Install node module
```bash
npm install --save react-native-firebase-crash-report
```
### Linking libraries
```bash
rnpm link react-native-firebase-crash-report
```
## iOS Configuration
### Install Firebase From Cocoapods
For more information please visit [Set Up Crash Reporting For iOS][1]
#### Pre-check
If you are using RN < 0.29 you would have run into [this problem][4], just follow the PR to fix it manually.
#### Go to your project's ios folder
```bash
cd <your_project>/ios
```
#### (Optional) Initialise Pod
**Note**: You can skip this step if you have pod initialised already.
```bash
pod init
```
#### Add `pod 'Firebase/Core'` and `pod 'Firebase/Crash'` to `Podfile`
```diff
target 'YourProject' do
# Uncomment this line if you're using Swift or would like to use dynamic frameworks
use_frameworks!
# Pods for YourProject
+ pod 'Firebase/Core'
+ pod 'Firebase/Crash'
target 'YourProjectTests' do
inherit! :search_paths
# Pods for testing
end
end
```
#### Install Pods
```bash
pod install
```
### Initialise Firebase
Add following code in your `AppDelegate.m`
```diff
#import "AppDelegate.h"
#import "RCTRootView.h"
+@import Firebase;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
+
+ // Use Firebase library to configure APIs
+ [FIRApp configure];
+
return YES;
}
```
## Android Configuration
For more information please visit [Set Up Crash Reporting For Android][2]
### Upgrade Google Play Services and Google Repository

### Add Google Services
- In `android/build.gradle`
```diff
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
classpath 'de.undercouch:gradle-download-task:2.0.0'
+ classpath 'com.google.gms:google-services:3.0.0'
```
- In `android/app/build.gradle`, add this line at the bottom of the file
```gradle
apply plugin: 'com.google.gms.google-services'
```
### (Optional) Manually linking libraries
- **app/build.gradle**
```gradle
dependencies {
...
compile project(':react-native-firebase-analytics')
compile project(':react-native-firebase-crash-report') <-- add this
...
}
```
- **settings.gradle**
```gradle
include ':react-native-firebase-analytics'
project(':react-native-firebase-analytics').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase-analytics/android')
// add everything below this
include ':react-native-firebase-crash-report'
project(':react-native-firebase-crash-report').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase-crash-report/android')
```
- **MainApplication.java**
```gradle
...
import com.ianlin.RNFirebaseCrashReport.RNFirebaseCrashReportPackage; <-- add this
...
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new FIRAnalyticsPackage(),
...
new RNFirebaseCrashReportPackage(), <-- add this
...
);
}
```
## Contributing
Any pull requests, issue reports and suggestion are highly welcome.
## License
[ISC License][5] (functionality equivalent to **MIT License**)
[1]: https://firebase.google.com/docs/crash/ios
[2]: https://firebase.google.com/docs/android/setup
[3]: https://github.com/rnpm/rnpm
[4]: https://github.com/facebook/react-native/pull/7927
[5]: https://opensource.org/licenses/ISC