[crashlytics] Add first version of crashlytics functionality
This commit is contained in:
parent
e697f11641
commit
efeb24d168
|
@ -2,9 +2,13 @@ buildscript {
|
|||
ext.firebaseVersion = '11.4.2'
|
||||
repositories {
|
||||
jcenter()
|
||||
maven {
|
||||
url 'https://maven.fabric.io/public'
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:2.3.3'
|
||||
classpath 'io.fabric.tools:gradle:1.24.4'
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -91,4 +95,7 @@ dependencies {
|
|||
compile "com.google.firebase:firebase-ads:$firebaseVersion"
|
||||
compile "com.google.firebase:firebase-firestore:$firebaseVersion"
|
||||
compile "com.google.firebase:firebase-invites:$firebaseVersion"
|
||||
compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') {
|
||||
transitive = true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
package io.invertase.firebase.fabric.crashlytics;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.facebook.react.bridge.ReactMethod;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
||||
|
||||
import com.crashlytics.android.Crashlytics;
|
||||
|
||||
|
||||
public class RNFirebaseCrashlytics extends ReactContextBaseJavaModule {
|
||||
|
||||
private static final String TAG = "RNFirebaseCrashlytics";
|
||||
|
||||
public RNFirebaseCrashlytics(ReactApplicationContext reactContext) {
|
||||
super(reactContext);
|
||||
Log.d(TAG, "New instance");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void crash() {
|
||||
Crashlytics.getInstance().crash();
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void log(final String message) {
|
||||
Crashlytics.log(message);
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void recordError(final int code, final String domain) {
|
||||
Crashlytics.logException(new Exception(code + ": " + domain));
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void setBoolValue(final String key, final boolean boolValue) {
|
||||
Crashlytics.setBool(key, boolValue);
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void setFloatValue(final String key, final float floatValue) {
|
||||
Crashlytics.setFloat(key, floatValue);
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void setIntValue(final String key, final int intValue) {
|
||||
Crashlytics.setInt(key, intValue);
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void setStringValue(final String key, final String stringValue) {
|
||||
Crashlytics.setString(key, stringValue);
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void setUserIdentifier(String userId) {
|
||||
Crashlytics.setUserIdentifier(userId);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package io.invertase.firebase.fabric.crashlytics;
|
||||
|
||||
import com.facebook.react.ReactPackage;
|
||||
import com.facebook.react.bridge.JavaScriptModule;
|
||||
import com.facebook.react.bridge.NativeModule;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.uimanager.UIManagerModule;
|
||||
import com.facebook.react.uimanager.ViewManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class RNFirebaseCrashlyticsPackage implements ReactPackage {
|
||||
public RNFirebaseCrashlyticsPackage() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param reactContext react application context that can be used to create modules
|
||||
* @return list of native modules to register with the newly created catalyst instance
|
||||
*/
|
||||
@Override
|
||||
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
||||
List<NativeModule> modules = new ArrayList<>();
|
||||
modules.add(new RNFirebaseCrashlytics(reactContext));
|
||||
|
||||
return modules;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param reactContext
|
||||
* @return a list of view managers that should be registered with {@link UIManagerModule}
|
||||
*/
|
||||
@Override
|
||||
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
|
@ -13,6 +13,7 @@
|
|||
8323CF071F6FBD870071420B /* NativeExpressComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 8323CF011F6FBD870071420B /* NativeExpressComponent.m */; };
|
||||
8323CF081F6FBD870071420B /* RNFirebaseAdMobBannerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8323CF031F6FBD870071420B /* RNFirebaseAdMobBannerManager.m */; };
|
||||
8323CF091F6FBD870071420B /* RNFirebaseAdMobNativeExpressManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8323CF051F6FBD870071420B /* RNFirebaseAdMobNativeExpressManager.m */; };
|
||||
833693131FD824EF00AA806B /* RNFirebaseCrashlytics.m in Sources */ = {isa = PBXBuildFile; fileRef = 833693121FD824EF00AA806B /* RNFirebaseCrashlytics.m */; };
|
||||
8376F7141F7C149100D45A85 /* RNFirebaseFirestoreDocumentReference.m in Sources */ = {isa = PBXBuildFile; fileRef = 8376F70E1F7C149000D45A85 /* RNFirebaseFirestoreDocumentReference.m */; };
|
||||
8376F7151F7C149100D45A85 /* RNFirebaseFirestore.m in Sources */ = {isa = PBXBuildFile; fileRef = 8376F7101F7C149000D45A85 /* RNFirebaseFirestore.m */; };
|
||||
8376F7161F7C149100D45A85 /* RNFirebaseFirestoreCollectionReference.m in Sources */ = {isa = PBXBuildFile; fileRef = 8376F7111F7C149000D45A85 /* RNFirebaseFirestoreCollectionReference.m */; };
|
||||
|
@ -57,6 +58,8 @@
|
|||
8323CF031F6FBD870071420B /* RNFirebaseAdMobBannerManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseAdMobBannerManager.m; sourceTree = "<group>"; };
|
||||
8323CF041F6FBD870071420B /* RNFirebaseAdMobNativeExpressManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNFirebaseAdMobNativeExpressManager.h; sourceTree = "<group>"; };
|
||||
8323CF051F6FBD870071420B /* RNFirebaseAdMobNativeExpressManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseAdMobNativeExpressManager.m; sourceTree = "<group>"; };
|
||||
833693111FD824EF00AA806B /* RNFirebaseCrashlytics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNFirebaseCrashlytics.h; path = RNFirebase/fabric/crashlytics/RNFirebaseCrashlytics.h; sourceTree = SOURCE_ROOT; };
|
||||
833693121FD824EF00AA806B /* RNFirebaseCrashlytics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNFirebaseCrashlytics.m; path = RNFirebase/fabric/crashlytics/RNFirebaseCrashlytics.m; sourceTree = SOURCE_ROOT; };
|
||||
8376F70E1F7C149000D45A85 /* RNFirebaseFirestoreDocumentReference.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseFirestoreDocumentReference.m; sourceTree = "<group>"; };
|
||||
8376F70F1F7C149000D45A85 /* RNFirebaseFirestore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNFirebaseFirestore.h; sourceTree = "<group>"; };
|
||||
8376F7101F7C149000D45A85 /* RNFirebaseFirestore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseFirestore.m; sourceTree = "<group>"; };
|
||||
|
@ -124,6 +127,7 @@
|
|||
58B511D21A9E6C8500147676 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8336930F1FD80DE800AA806B /* fabric */,
|
||||
BA84AE541FA9E59800E79390 /* storage */,
|
||||
17AF4F681F59CDBF00C02336 /* links */,
|
||||
839D914D1EF3E20A0077C7C8 /* admob */,
|
||||
|
@ -144,6 +148,23 @@
|
|||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8336930F1FD80DE800AA806B /* fabric */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
833693101FD80DF500AA806B /* crashlytics */,
|
||||
);
|
||||
path = fabric;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
833693101FD80DF500AA806B /* crashlytics */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
833693111FD824EF00AA806B /* RNFirebaseCrashlytics.h */,
|
||||
833693121FD824EF00AA806B /* RNFirebaseCrashlytics.m */,
|
||||
);
|
||||
path = crashlytics;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8376F70D1F7C141500D45A85 /* firestore */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -328,6 +349,7 @@
|
|||
8376F7141F7C149100D45A85 /* RNFirebaseFirestoreDocumentReference.m in Sources */,
|
||||
839D916F1EF3E20B0077C7C8 /* RNFirebaseAnalytics.m in Sources */,
|
||||
839D91711EF3E20B0077C7C8 /* RNFirebaseRemoteConfig.m in Sources */,
|
||||
833693131FD824EF00AA806B /* RNFirebaseCrashlytics.m in Sources */,
|
||||
D950369E1D19C77400F7094D /* RNFirebase.m in Sources */,
|
||||
839D91731EF3E20B0077C7C8 /* RNFirebaseDatabase.m in Sources */,
|
||||
BA84AE571FA9E59800E79390 /* RNFirebaseStorage.m in Sources */,
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
#ifndef RNFirebaseCrashlytics_h
|
||||
#define RNFirebaseCrashlytics_h
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#if __has_include(<Crashlytics/Crashlytics.h>)
|
||||
#import <React/RCTBridgeModule.h>
|
||||
|
||||
@interface RNFirebaseCrashlytics : NSObject <RCTBridgeModule> {
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#else
|
||||
@interface RNFirebaseCrashlytics : NSObject
|
||||
@end
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,47 @@
|
|||
#import "RNFirebaseCrashlytics.h"
|
||||
|
||||
#if __has_include(<Crashlytics/Crashlytics.h>)
|
||||
#import <Crashlytics/Crashlytics.h>
|
||||
|
||||
@implementation RNFirebaseCrashlytics
|
||||
RCT_EXPORT_MODULE();
|
||||
|
||||
RCT_EXPORT_METHOD(crash) {
|
||||
[[Crashlytics sharedInstance] crash];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(log:(NSString *)message) {
|
||||
CLS_LOG(@"%@", message);
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(recordError:(nonnull NSNumber *)code domain:(NSString *)domain) {
|
||||
NSError *error = [NSError errorWithDomain:domain code:[code integerValue] userInfo:nil];
|
||||
[CrashlyticsKit recordError:error];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(setBoolValue:(NSString *)key boolValue:(BOOL *)boolValue) {
|
||||
[CrashlyticsKit setBoolValue:boolValue forKey:key];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(setFloatValue:(NSString *)key floatValue:(nonnull NSNumber *)floatValue) {
|
||||
[CrashlyticsKit setFloatValue:[floatValue floatValue] forKey:key];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(setIntValue:(NSString *)key intValue:(nonnull NSNumber *)intValue) {
|
||||
[CrashlyticsKit setIntValue:[intValue integerValue] forKey:key];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(setStringValue:(NSString *)key stringValue:(NSString *)stringValue) {
|
||||
[CrashlyticsKit setObjectValue:stringValue forKey:key];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(setUserIdentifier:(NSString *)userId) {
|
||||
[CrashlyticsKit setUserIdentifier:userId];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#else
|
||||
@implementation RNFirebaseCrashlytics
|
||||
@end
|
||||
#endif
|
|
@ -11,6 +11,7 @@ import Auth, { statics as AuthStatics } from '../auth';
|
|||
import Analytics, { statics as AnalyticsStatics } from '../analytics';
|
||||
import Config, { statics as ConfigStatics } from '../config';
|
||||
import Crash, { statics as CrashStatics } from '../crash';
|
||||
import Crashlytics, { statics as CrashlyticsStatics } from '../fabric/crashlytics';
|
||||
import Database, { statics as DatabaseStatics } from '../database';
|
||||
import Firestore, { statics as FirestoreStatics } from '../firestore';
|
||||
import Links, { statics as LinksStatics } from '../links';
|
||||
|
@ -26,6 +27,7 @@ import type {
|
|||
ConfigModule,
|
||||
CrashModule,
|
||||
DatabaseModule,
|
||||
FabricModule,
|
||||
FirebaseModule,
|
||||
FirebaseModuleAndStatics,
|
||||
FirebaseOptions,
|
||||
|
@ -54,6 +56,7 @@ export default class FirebaseApp {
|
|||
config: ConfigModule;
|
||||
crash: CrashModule;
|
||||
database: DatabaseModule;
|
||||
fabric: FabricModule;
|
||||
firestore: FirestoreModule;
|
||||
links: LinksModule;
|
||||
messaging: MessagingModule;
|
||||
|
@ -77,6 +80,9 @@ export default class FirebaseApp {
|
|||
this.config = this._staticsOrModuleInstance(ConfigStatics, Config);
|
||||
this.crash = this._staticsOrModuleInstance(CrashStatics, Crash);
|
||||
this.database = this._staticsOrModuleInstance(DatabaseStatics, Database);
|
||||
this.fabric = {
|
||||
crashlytics: this._staticsOrModuleInstance(CrashlyticsStatics, Crashlytics),
|
||||
};
|
||||
this.firestore = this._staticsOrModuleInstance(FirestoreStatics, Firestore);
|
||||
this.links = this._staticsOrModuleInstance(LinksStatics, Links);
|
||||
this.messaging = this._staticsOrModuleInstance(MessagingStatics, Messaging);
|
||||
|
|
|
@ -14,6 +14,7 @@ import Auth, { statics as AuthStatics } from '../auth';
|
|||
import Analytics, { statics as AnalyticsStatics } from '../analytics';
|
||||
import Config, { statics as ConfigStatics } from '../config';
|
||||
import Crash, { statics as CrashStatics } from '../crash';
|
||||
import Crashlytics, { statics as CrashlyticsStatics } from '../fabric/crashlytics';
|
||||
import Database, { statics as DatabaseStatics } from '../database';
|
||||
import Firestore, { statics as FirestoreStatics } from '../firestore';
|
||||
import Links, { statics as LinksStatics } from '../links';
|
||||
|
@ -29,6 +30,7 @@ import type {
|
|||
ConfigModule,
|
||||
CrashModule,
|
||||
DatabaseModule,
|
||||
FabricModule,
|
||||
FirebaseModule,
|
||||
FirebaseModuleAndStatics,
|
||||
FirebaseOptions,
|
||||
|
@ -52,6 +54,7 @@ class FirebaseCore {
|
|||
config: ConfigModule;
|
||||
crash: CrashModule;
|
||||
database: DatabaseModule;
|
||||
fabric: FabricModule;
|
||||
firestore: FirestoreModule;
|
||||
links: LinksModule;
|
||||
messaging: MessagingModule;
|
||||
|
@ -76,6 +79,9 @@ class FirebaseCore {
|
|||
this.config = this._appNamespaceOrStatics(ConfigStatics, Config);
|
||||
this.crash = this._appNamespaceOrStatics(CrashStatics, Crash);
|
||||
this.database = this._appNamespaceOrStatics(DatabaseStatics, Database);
|
||||
this.fabric = {
|
||||
crashlytics: this._appNamespaceOrStatics(CrashlyticsStatics, Crashlytics),
|
||||
};
|
||||
this.firestore = this._appNamespaceOrStatics(FirestoreStatics, Firestore);
|
||||
this.links = this._appNamespaceOrStatics(LinksStatics, Links);
|
||||
this.messaging = this._appNamespaceOrStatics(MessagingStatics, Messaging);
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
/**
|
||||
* @flow
|
||||
* Crash Reporting representation wrapper
|
||||
*/
|
||||
import ModuleBase from '../../../utils/ModuleBase';
|
||||
|
||||
import type FirebaseApp from '../../core/firebase-app';
|
||||
|
||||
export default class Crashlytics extends ModuleBase {
|
||||
static _NAMESPACE = 'crashlytics';
|
||||
static _NATIVE_MODULE = 'RNFirebaseCrashlytics';
|
||||
|
||||
constructor(firebaseApp: FirebaseApp, options: Object = {}) {
|
||||
super(firebaseApp, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Forces a crash. Useful for testing your application is set up correctly.
|
||||
*/
|
||||
crash(): void {
|
||||
this._native.crash();
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs a message that will appear in any subsequent crash reports.
|
||||
* @param {string} message
|
||||
*/
|
||||
log(message: string): void {
|
||||
this._native.log(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs a non fatal exception.
|
||||
* @param {string} code
|
||||
* @param {string} message
|
||||
*/
|
||||
recordError(code: number, message: string): void {
|
||||
this._native.recordError(code, message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a boolean value to show alongside any subsequent crash reports.
|
||||
*/
|
||||
setBoolValue(key: string, value: boolean): void {
|
||||
this._native.setBoolValue(key, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a float value to show alongside any subsequent crash reports.
|
||||
*/
|
||||
setFloatValue(key: string, value: number): void {
|
||||
this._native.setFloatValue(key, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set an integer value to show alongside any subsequent crash reports.
|
||||
*/
|
||||
setIntValue(key: string, value: number): void {
|
||||
this._native.setIntValue(key, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a string value to show alongside any subsequent crash reports.
|
||||
*/
|
||||
setStringValue(key: string, value: string): void {
|
||||
this._native.setStringValue(key, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the user ID to show alongside any subsequent crash reports.
|
||||
*/
|
||||
setUserIdentifier(userId: string): void {
|
||||
this._native.setUserIdentifier(userId);
|
||||
}
|
||||
}
|
||||
|
||||
export const statics = {};
|
|
@ -9,6 +9,8 @@ import type Config from '../modules/config';
|
|||
import { typeof statics as ConfigStatics } from '../modules/config';
|
||||
import type Crash from '../modules/crash';
|
||||
import { typeof statics as CrashStatics } from '../modules/crash';
|
||||
import type Crashlytics from '../modules/fabric/crashlytics';
|
||||
import { typeof statics as CrashlyticsStatics } from '../modules/fabric/crashlytics';
|
||||
import type Database from '../modules/database';
|
||||
import { typeof statics as DatabaseStatics } from '../modules/database';
|
||||
import type Firestore from '../modules/firestore';
|
||||
|
@ -38,8 +40,9 @@ export type FirebaseError = {
|
|||
|
||||
export type FirebaseModule = $Subtype<ModuleBase>;
|
||||
|
||||
export type FirebaseModuleName = 'admob' | 'analytics' | 'auth' | 'config' | 'crash' | 'database'
|
||||
| 'firestore' | 'links' | 'messaging' | 'perf' | 'storage' | 'utils';
|
||||
export type FirebaseModuleName = 'admob' | 'analytics' | 'auth' | 'config' | 'crash'
|
||||
| 'crashlytics' | 'database' | 'firestore' | 'links' | 'messaging' | 'perf' | 'storage'
|
||||
| 'utils';
|
||||
|
||||
export type FirebaseOptions = {
|
||||
apiKey: string,
|
||||
|
@ -115,6 +118,16 @@ export type DatabaseModifier = {
|
|||
valueType?: string;
|
||||
}
|
||||
|
||||
/* Fabric types */
|
||||
export type CrashlyticsModule = {
|
||||
(): Crashlytics,
|
||||
nativeModuleExists: boolean,
|
||||
} & CrashlyticsStatics;
|
||||
|
||||
export type FabricModule = {
|
||||
crashlytics: CrashlyticsModule,
|
||||
}
|
||||
|
||||
/* Firestore types */
|
||||
|
||||
export type FirestoreModule = {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
apply plugin: "com.android.application"
|
||||
apply plugin: "com.google.firebase.firebase-perf"
|
||||
apply plugin: 'io.fabric'
|
||||
|
||||
import com.android.build.OutputFile
|
||||
|
||||
|
@ -93,6 +94,9 @@ dependencies {
|
|||
compile "com.google.firebase:firebase-storage:$firebaseVersion"
|
||||
compile "com.google.firebase:firebase-firestore:$firebaseVersion"
|
||||
compile "com.google.firebase:firebase-invites:$firebaseVersion"
|
||||
compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') {
|
||||
transitive = true
|
||||
}
|
||||
compile "com.android.support:appcompat-v7:26.0.1"
|
||||
compile "com.facebook.react:react-native:+" // From node_modules
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import io.invertase.firebase.auth.RNFirebaseAuthPackage;
|
|||
import io.invertase.firebase.config.RNFirebaseRemoteConfigPackage;
|
||||
import io.invertase.firebase.crash.RNFirebaseCrashPackage;
|
||||
import io.invertase.firebase.database.RNFirebaseDatabasePackage;
|
||||
import io.invertase.firebase.fabric.crashlytics.RNFirebaseCrashlyticsPackage;
|
||||
import io.invertase.firebase.firestore.RNFirebaseFirestorePackage;
|
||||
import io.invertase.firebase.links.RNFirebaseLinksPackage;
|
||||
import io.invertase.firebase.messaging.RNFirebaseMessagingPackage;
|
||||
|
@ -43,6 +44,7 @@ public class MainApplication extends Application implements ReactApplication {
|
|||
new RNFirebaseAuthPackage(),
|
||||
new RNFirebaseRemoteConfigPackage(),
|
||||
new RNFirebaseCrashPackage(),
|
||||
new RNFirebaseCrashlyticsPackage(),
|
||||
new RNFirebaseDatabasePackage(),
|
||||
new RNFirebaseFirestorePackage(),
|
||||
new RNFirebaseLinksPackage(),
|
||||
|
|
|
@ -3,11 +3,15 @@
|
|||
buildscript {
|
||||
repositories {
|
||||
jcenter()
|
||||
maven {
|
||||
url 'https://maven.fabric.io/public'
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:2.3.3'
|
||||
classpath 'com.google.gms:google-services:3.1.1'
|
||||
classpath 'com.google.gms:google-services:3.1.2'
|
||||
classpath 'com.google.firebase:firebase-plugins:1.1.1'
|
||||
classpath 'io.fabric.tools:gradle:1.24.4'
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,8 @@ target 'ReactNativeFirebaseDemo' do
|
|||
pod 'Firebase/RemoteConfig'
|
||||
pod 'Firebase/Storage'
|
||||
pod 'Firebase/Performance'
|
||||
|
||||
pod 'Fabric', '~> 1.7.2'
|
||||
pod 'Crashlytics', '~> 3.9.3'
|
||||
|
||||
pod 'RNFirebase', :path => './../../'
|
||||
|
||||
|
|
|
@ -5,6 +5,9 @@ PODS:
|
|||
- BoringSSL/Implementation (9.0):
|
||||
- BoringSSL/Interface (= 9.0)
|
||||
- BoringSSL/Interface (9.0)
|
||||
- Crashlytics (3.9.3):
|
||||
- Fabric (~> 1.7.2)
|
||||
- Fabric (1.7.2)
|
||||
- Firebase/AdMob (4.3.0):
|
||||
- Firebase/Core
|
||||
- Google-Mobile-Ads-SDK (= 7.24.1)
|
||||
|
@ -150,11 +153,13 @@ PODS:
|
|||
- React/Core
|
||||
- React/fishhook
|
||||
- React/RCTBlob
|
||||
- RNFirebase (3.1.1-alpha.11):
|
||||
- RNFirebase (3.1.1):
|
||||
- React
|
||||
- yoga (0.49.1.React)
|
||||
|
||||
DEPENDENCIES:
|
||||
- Crashlytics (~> 3.9.3)
|
||||
- Fabric (~> 1.7.2)
|
||||
- Firebase/AdMob
|
||||
- Firebase/Auth
|
||||
- Firebase/Core
|
||||
|
@ -184,6 +189,8 @@ EXTERNAL SOURCES:
|
|||
|
||||
SPEC CHECKSUMS:
|
||||
BoringSSL: 19083b821ef3ae0f758fae15482e183003b1e265
|
||||
Crashlytics: dbb07d01876c171c5ccbdf7826410380189e452c
|
||||
Fabric: 9cd6a848efcf1b8b07497e0b6a2e7d336353ba15
|
||||
Firebase: 83283761a1ef6dc9846e03d08059f51421afbd65
|
||||
FirebaseAnalytics: 722b53c7b32bfc7806b06e0093a2f5180d4f2c5a
|
||||
FirebaseAuth: d7f047fbeab98062b98ea933b8d934e0fb1190e2
|
||||
|
@ -208,9 +215,9 @@ SPEC CHECKSUMS:
|
|||
nanopb: 5601e6bca2dbf1ed831b519092ec110f66982ca3
|
||||
Protobuf: 03eef2ee0b674770735cf79d9c4d3659cf6908e8
|
||||
React: cf892fb84b7d06bf5fea7f328e554c6dcabe85ee
|
||||
RNFirebase: e959075eb2f348c3586cd92973543b80e373b29c
|
||||
RNFirebase: 30522211772f22affff6f3a61981110852d2668b
|
||||
yoga: 3abf02d6d9aeeb139b4c930eb1367feae690a35a
|
||||
|
||||
PODFILE CHECKSUM: b5674be55653f5dda937c8b794d0479900643d45
|
||||
PODFILE CHECKSUM: a5e2256012836120598e7daba7320d085400ecbb
|
||||
|
||||
COCOAPODS: 1.2.1
|
||||
|
|
|
@ -636,6 +636,7 @@
|
|||
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
||||
C015646CE8F8CB4B578CE178 /* [CP] Embed Pods Frameworks */,
|
||||
6AE1012F46FF8A4D1D818A12 /* [CP] Copy Pods Resources */,
|
||||
8336933B1FD8559A00AA806B /* Fabric */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -1043,7 +1044,7 @@
|
|||
);
|
||||
inputPaths = (
|
||||
"${SRCROOT}/Pods/Target Support Files/Pods-ReactNativeFirebaseDemo/Pods-ReactNativeFirebaseDemo-resources.sh",
|
||||
"$PODS_CONFIGURATION_BUILD_DIR/gRPC/gRPCCertificates.bundle",
|
||||
$PODS_CONFIGURATION_BUILD_DIR/gRPC/gRPCCertificates.bundle,
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
|
@ -1054,6 +1055,20 @@
|
|||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ReactNativeFirebaseDemo/Pods-ReactNativeFirebaseDemo-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
8336933B1FD8559A00AA806B /* Fabric */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = Fabric;
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Fabric/run\"";
|
||||
};
|
||||
C015646CE8F8CB4B578CE178 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
export default function addTests({ describe, it, firebase }) {
|
||||
describe('Crashlytics', () => {
|
||||
it('log: it should log without error', () => {
|
||||
return new Promise((resolve) => {
|
||||
firebase.native.fabric.crashlytics().log('Test log');
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
it('recordError: it should record an error without error', () => {
|
||||
return new Promise((resolve) => {
|
||||
firebase.native.fabric.crashlytics().recordError(1234, 'Test error');
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
it('setBoolValue: it should set a boolean value without error', () => {
|
||||
return new Promise((resolve) => {
|
||||
firebase.native.fabric.crashlytics().setBoolValue('boolKey', true);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
it('setFloatValue: it should set a float value without error', () => {
|
||||
return new Promise((resolve) => {
|
||||
firebase.native.fabric.crashlytics().setFloatValue('floatKey', 1.23);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
it('setIntValue: it should set an integer value without error', () => {
|
||||
return new Promise((resolve) => {
|
||||
firebase.native.fabric.crashlytics().setIntValue('intKey', 123);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
it('setStringValue: it should set a string value without error', () => {
|
||||
return new Promise((resolve) => {
|
||||
firebase.native.fabric.crashlytics().setStringValue('stringKey', 'test');
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
it('setUserIdentifier: it should set the user ID without error', () => {
|
||||
return new Promise((resolve) => {
|
||||
firebase.native.fabric.crashlytics().setUserIdentifier('1234');
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
import firebase from '../../firebase';
|
||||
import TestSuite from '../../../lib/TestSuite';
|
||||
import crashlyticsTests from './crashlyticsTests';
|
||||
|
||||
const suite = new TestSuite('Crashlytics', 'firebase.fabric.crashlytics()', firebase);
|
||||
|
||||
// bootstrap tests
|
||||
suite.addTests(crashlyticsTests);
|
||||
|
||||
export default suite;
|
|
@ -1,6 +1,7 @@
|
|||
import { setSuiteStatus, setTestStatus } from '../actions/TestActions';
|
||||
import analytics from './analytics';
|
||||
import crash from './crash';
|
||||
import crashlytics from './crashlytics';
|
||||
import core from './core';
|
||||
import database from './database';
|
||||
import messaging from './messaging';
|
||||
|
@ -23,6 +24,7 @@ const testSuiteInstances = [
|
|||
config,
|
||||
core,
|
||||
crash,
|
||||
crashlytics,
|
||||
database,
|
||||
firestore,
|
||||
messaging,
|
||||
|
|
Loading…
Reference in New Issue