• Stars
    star
    124
  • Rank 288,207 (Top 6 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created almost 9 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

HockeyApp integration for React Native with Android and iOS support

❗ While I do not have the time to actively maintain RN-hockeyapp anymore, I am open to new maintainers taking the lead. If you would be interested, contact me at ladislav (at) benloop (dot) com. ❗

react-native-hockeyapp

HockeyApp integration for React Native.

Requirements

  • iOS 7+
  • Android
  • React Native >0.17
  • CocoaPods

Installation

npm install react-native-hockeyapp --save

iOS

You will need:

CocoaPods (Setup)

Podfile

Add to your ios/Podfile:

pod "HockeySDK"

Run pod install

Open YourProject.xcworkspace

Add the RNHockeyApp library to your project

  • Drag-and-drop RNHockeyApp.xcodeproj from ./node_modules/react-native-hockeyapp/RNHockeyApp into your Project > Libraries.
  • Drag-and-drop libRNHockeyApp.a from Libraries/RNHockeyApp/Products into Linked Frameworks and Libraries

Changes to AppDelegate.m

If you wish to use Device UUID authentication or Web authentication, the following must be added to ios/AppDelegate.m

#import "RNHockeyApp.h"

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
  if( [[BITHockeyManager sharedHockeyManager].authenticator handleOpenURL:url
                                                        sourceApplication:sourceApplication
                                                               annotation:annotation]) {
    return YES;
  }

  /* Your own custom URL handlers */

  return NO;
}

You also need to add RNHockeyApp to Build Settings > Search Paths > Header Search Paths as a recursive search path, adding the following to both Debug and Release and ensuring recursive is selected (double click each line as opposed to editing it as text, and you'll see the dropdowns):

$(SRCROOT)/../node_modules/react-native-hockeyapp/RNHockeyApp

Android (React Native >= 0.29)

Google project configuration

  • In android/setting.gradle
...
include ':react-native-hockeyapp', ':app'
project(':react-native-hockeyapp').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-hockeyapp/android')
  • In android/build.gradle
...
repositories {
    jcenter()
    mavenCentral()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.3.1'
    classpath 'net.hockeyapp.android:HockeySDK:4.1.0' // <--- add this
}
  • In android/app/build.gradle
apply plugin: "com.android.application"
...
dependencies {
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.facebook.react:react-native:0.29.+"
    compile project(":react-native-hockeyapp") // <--- add this
}
  • Manifest file
<application ..>
    <activity android:name="net.hockeyapp.android.UpdateActivity" />
    <activity android:name="net.hockeyapp.android.FeedbackActivity" />
</application>
  • Register Module (in MainApplication.java)
import com.slowpath.hockeyapp.RNHockeyAppModule; // <--- import
import com.slowpath.hockeyapp.RNHockeyAppPackage;  // <--- import

public class MainApplication extends Application implements ReactApplication {
  ......

  @Override
  protected List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
      new RNHockeyAppPackage(MainApplication.this), // <------ add this line to yout MainApplication class
      new MainReactPackage());
  }

  ......

}

Android (React Native 0.17 - 0.28) - Only react-native-hockeyapp:0.4.2 or less

Google project configuration

  • In android/setting.gradle
...
include ':react-native-hockeyapp', ':app'
project(':react-native-hockeyapp').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-hockeyapp/android')
  • In android/build.gradle
...
repositories {
    jcenter()
    mavenCentral()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.3.1'
    classpath 'net.hockeyapp.android:HockeySDK:4.1.2' // <--- add this
}
  • In android/app/build.gradle
apply plugin: "com.android.application"
...
dependencies {
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.facebook.react:react-native:0.17.+"
    compile project(":react-native-hockeyapp") // <--- add this
}
  • Manifest file
<application ..>
    <activity android:name="net.hockeyapp.android.UpdateActivity" />
    <activity android:name="net.hockeyapp.android.FeedbackActivity" />
</application>
  • Register Module (in MainActivity.java)
import com.slowpath.hockeyapp.RNHockeyAppModule; // <--- import
import com.slowpath.hockeyapp.RNHockeyAppPackage;  // <--- import

public class MainActivity extends ReactActivity {
  ......

  @Override
  protected List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
      new RNHockeyAppPackage(this), // <------ add this line to yout MainActivity class
      new MainReactPackage());
  }

  ......

}

Usage

From your JS files for both iOS and Android:

var HockeyApp = require('react-native-hockeyapp');

componentWillMount() {
    HockeyApp.configure(HOCKEY_APP_ID, true);
}

componentDidMount() {
    HockeyApp.start();
    HockeyApp.checkForUpdate(); // optional
}

You have available these methods:

HockeyApp.configure(HockeyAppId: string, autoSendCrashReports: boolean = true, authenticationType: AuthenticationType = AuthenticationType.Anonymous, appSecret: string = '', ignoreDefaultHandler: string = false); // Configure the settings
HockeyApp.start(); // Start the HockeyApp integration
HockeyApp.checkForUpdate(); // Check if there's new version and if so trigger update
HockeyApp.feedback(); // Ask user for feedback.
HockeyApp.addMetadata(metadata: object); // Add metadata to crash report.  The argument must be an object with key-value pairs.
HockeyApp.generateTestCrash(); // Generate test crash. Only works in no-debug mode.

The following authentication methods are available:

  1. AuthenticationType.Anonymous - Anonymous Authentication
  2. AuthenticationType.EmailSecret - HockeyApp email & App Secret
  3. AuthenticationType.EmailPassword - HockeyApp email & password
  4. AuthenticationType.DeviceUUID - HockeyApp registered device UUID
  5. AuthenticationType.Web - HockeyApp Web Auth (iOS only)

Contributions

See https://github.com/slowpath/react-native-hockeyapp/graphs/contributors

More Repositories

1

react-native-actionsheet-native

React Native ActionSheet Android extension
Java
26
star
2

react-native-google-app-invites

Google App Invites for React Native
Objective-C
12
star
3

memcache_store_with_delete_matched

Memcache Store Rails plugin with missing implementation of delete_matched() . If you're using Memcache as your caching storage and you have problem with expire_fragmet() raising exception "Not supported by Memcache" than this plugin is going to help you.
Ruby
10
star
4

chef-bootstrap

Helps you bootsrap Chef server/client machine
Ruby
6
star
5

acts_as_nullobject

Instead of using a null reference to convey absence of an object (for instance, a non-existent customer), one uses an object which implements the expected interface, but whose method body is empty. The advantage of this approach over a working default implementation is that a Null Object is very predictable and has no side effects: it does nothing. This project is Rails plugin.
6
star
6

simpleclouding-invites

SimpleClouding.com - Beta invites
Ruby
4
star
7

sscheduler

Shopify Scheduler
Ruby
4
star
8

StackBuffer

StackBuffer is awesome StackOverflow interface
JavaScript
4
star
9

rack-restful_submit

Simulates RESTful with multiple submit buttons and no javascript
Ruby
3
star
10

chipmunk-ruby

Ruby bindings for Chipmunk library
3
star
11

simpleclouding

Simpleclouding
Ruby
2
star
12

my-vim

My Vim configuration files
Vim Script
2
star
13

yet-another-capistrano

Yet Another Capistrano is my playground to rewrite Capistrano like prototype to meet my needs to solve various deploy strategies or server maintenance taks
Ruby
2
star
14

gem_repo

Multiple repository plugin for your Ruby Gems.
Ruby
2
star
15

audiobookr

Audio Books Aggregator
Ruby
1
star
16

scrumy-color-changer

Scrumy color changer
Ruby
1
star
17

rack-restful_submit_example_app

Example app using rack-restful_submit
Ruby
1
star
18

retaste.me

Simple Delicious app to keep you posted what you bookmarked last week
JavaScript
1
star
19

mixergyflow

Mixergyflow - Small sinatra app help me keep all the Mixergy.com videos on one place
JavaScript
1
star