Update: This library is now maintained by the Branch Metrics Team: https://github.com/BranchMetrics/React-Native-Deferred-Deep-Linking-SDK
Native Wrapper around Branch Metrics native SDKs. Tested with React Native 0.21.0.
Supports iOS and Android.
var branch = require('react-native-branch');
//Receives the initSession's result as soon as it becomes available
branch.getInitSessionResultPatiently(({params, error}) => { });
branch.setDebug();
branch.getLatestReferringParams((params) => { });
branch.getFirstReferringParams((params) => { });
branch.setIdentity("Your User's ID");
branch.userCompletedAction("Purchased Item", {item: 123});
var shareOptions = {messageHeader: "Check this out!", messageBody: "Check this cool thing out: "};
var branchUniversalObject = {metadata: {prop1: "test", prop2: "abc"}, canonicalIdentifier: "RNBranchSharedObjectId", contentTitle: "Cool Content!", contentDescription: "Cool Content Description", contentImageUrl: ""};
var linkProperties = {feature: 'share', channel: 'RNApp'};
branch.showShareSheet(shareOptions, branchUniversalObject, linkProperties, ({channel, completed, error}) => {});
branch.logout();
npm install rnpm -g
npm install --save react-native-branch
rnpm link react-native-branch
cd node_modules/react-native-branch
pod install #Only required for iOS
Sometimes rnpm link creates incorrect relative paths, leading to compilation errors
Ensure that the following files look as described and all linked paths are correct
// file: android/settings.gradle
...
include ':react-native-branch', ':app'
// The relative path to the react-native-branch directory tends to often be prefixed with one too many "../"s
project(':react-native-branch').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-branch/android')
// file: android/app/build.gradle
...
dependencies {
...
compile project(':react-native-branch')
}
// file: android/app/src/main/java/com/xxx/MainActivity.java
import android.content.Intent; // <-- import
import com.dispatcher.rnbranch.*; // <-- import
public class MainActivity extends ReactActivity {
// ...
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new RNBranchPackage() // <-- add this line, if not already there
);
}
// Add onStart
@Override
public void onStart() {
super.onStart();
RNBranchModule.initSession(this.getIntent().getData(), this);
}
// Add onNewIntent
@Override
public void onNewIntent(Intent intent) {
this.setIntent(intent);
}
// ...
}
Please follow [these instructions] (https://dev.branch.io/getting-started/sdk-integration-guide/guide/android/#configure-manifest)
Please follow these instructions
Note: The "receiver" element needs to be added to the "application" node in AndroidManifest.xml
Please follow these instructions
Notes:
- The "intent-filter" element needs to be added to the activity node, whose android:name is "com.yourAppName.MainActivity". This node is in the "application" node.
- If you already have an intent-filter tag, this has to be added as an additional one.
- Make sure to replace "yourApp" with the scheme you specified in the Branch dashboard.
Please follow these instructions
Note: Just add the "android:name" attribute to your "application" node in your AndroidManifest.xml
Please follow these instructions
- Drag and Drop /node_modules/react-native-branch/Pods/Pods.xcodeproj into the Libraries folder of your project in XCode (as described in Step 1 here)
- Drag and Drop the Pods.xcodeproj's Products's libBranch.a into your project's target's "Linked Frameworks and Libraries" section (as described in Step 2 here)
Import RNBranch.h at the top
#import "RNBranch.h"
Initialize the Branch Session in didFinishLaunchingWithOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[RNBranch initSessionWithLaunchOptions:launchOptions isReferrable:YES];
NSURL *jsCodeLocation;
///
}
Add the openURL and continueUserActivity functions
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
if (![RNBranch handleDeepLink:url]) {
// do other deep link routing for the Facebook SDK, Pinterest SDK, etc
}
return YES;
}
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler {
return [RNBranch continueUserActivity:userActivity];
}
Add a String entry branch_key with your branch key to your plist (as described here)
Please follow these instructions here
Please follow these instructions here