Step 1. Add the JitPack repository to your build file
Add it in your root settings.gradle at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
Add it in your settings.gradle.kts at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
Add to pom.xml
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Add it in your build.sbt at the end of resolvers:
resolvers += "jitpack" at "https://jitpack.io"
Add it in your project.clj at the end of repositories:
:repositories [["jitpack" "https://jitpack.io"]]
Step 2. Add the dependency
dependencies {
implementation 'com.github.cvongrim:react-native-ua:-SNAPSHOT'
}
dependencies {
implementation("com.github.cvongrim:react-native-ua:-SNAPSHOT")
}
<dependency>
<groupId>com.github.cvongrim</groupId>
<artifactId>react-native-ua</artifactId>
<version>-SNAPSHOT</version>
</dependency>
libraryDependencies += "com.github.cvongrim" % "react-native-ua" % "-SNAPSHOT"
:dependencies [[com.github.cvongrim/react-native-ua "-SNAPSHOT"]]
This plugin provides client-side integration for the Urban Airship Engage Platform in iOS and Android app environment.
<!-- TOC depthFrom:2 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 --> <!-- /TOC -->In your React Native project, install the following module:
npm install react-native-ua --save
Include the following module to your android/settings.gradle
in your React Native project:
include ':react-native-ua'
project(':react-native-ua').projectDir = file('../node_modules/react-native-ua/android')
Include the react-native-ua
module in your app compile dependencies, inside the android/app/build.gradle
file:
// ...
dependencies {
// ...
compile project(':react-native-ua') // add react-native-ua module
}
Create the android/app/src/main/assets/airshipconfig.properties
file and update it with your Urban Airship App's data:
gcmSender = Your GCM sender ID (Your Google API project number)
developmentAppKey = Your Development App Key
developmentAppSecret = Your Development App Secret
# If inProduction is true set production key and secret
inProduction = false
productionAppKey = Your Production App Key
productionAppSecret = Your Production Secret
Inside MainApplication.java
, located at android/app/src/main/java/your/app/domain
, add the ReactNativeUAPackage
to your app package list:
// ...
import com.globo.reactnativeua.ReactNativeUAPackage; // import react-native-ua package
public class MainApplication extends Application implements ReactApplication {
// ...
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
// ...
new ReactNativeUAPackage() // set react-native-ua package using application
);
}
}
Select the project node, in Targets section:
Find the ReactNativeUAIOS.xcodeproj
file within node_modules/react-native-ua/ios
and drag it into the Libraries
node in Xcode.
Add AirshipConfig.plist
from folder ios/
in the project node
Edit the file and add your App Key, App Secret and App Master Secret, the same used within Urban Airship setup (⚙ > APIs & Integrations > Urban Airship API
).
Back to the project node, select the Targets section:
In the Build Settings tab, go to Linking > Other Linker Flags and include the following tags:
-ObjC
-lz
-lsqlite3
Then go to Search Paths > Header Search Paths, add the following path and select the recursive option:
$(SRCROOT)/../node_modules/react-native-ua/ios
In the Build Phases tab:
libReactNativeUAIOS.a
from Workspace.Now expand the Copy Bundle Resources, click on the plus sign (➕) and add the following file:
node_modules/react-native-ua/ios/Libraries/Airship/AirshipResources.bundle
Inside AppDelegate.m
, import ReactNativeUAIOS.h
and setup the module. Follow the example below:
#import "ReactNativeUAIOS.h"
// ...
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// setup react native urban airship using AirshipConfig.plist (the default way)
[ReactNativeUAIOS setupUrbanAirship:launchOptions];
// OR setup react native urban airship programmatically. The following example use the content of AirshipConfig-dev.plist instead of the default AirshipConfig.plist
NSString *configPath = [[NSBundle mainBundle] pathForResource:@"AirshipConfig-dev" ofType:@"plist"];
UAConfig *config = [UAConfig configWithContentsOfFile:configPath];
[ReactNativeUAIOS setupUrbanAirship:launchOptions withConfig:config];
// ...
}
// ...
@end
To enable location add this two string keys with their values inside Info.plist:
url
property;componentWillMount()
of the component lifecycle.import React, { Component } from 'react';
import {
AppRegistry,
Text,
View
} from 'react-native';
import ReactNativeUA from 'react-native-ua'; // import module
class SampleApp extends Component {
constructor(props) {
super(props);
ReactNativeUA.enable_notification(); // prompt user to enable notification
ReactNativeUA.enable_geolocation(); // prompt user to enable geolocation
ReactNativeUA.enable_action_url(); // enable url action
ReactNativeUA.handle_background_notification(); // handle notifications when app is in background
ReactNativeUA.add_tag('tag'); // set tag to the user
ReactNativeUA.set_named_user_id('user_id'); // set named user id
ReactNativeUA.set_quiet_time_enabled(true); // activate a quiet period
ReactNativeUA.set_quiet_time({
startHour: 22,
startMinute: 0,
endHour: 7,
endMinute: 0
}); // set the period to 22:00-07:00
}
componentWillMount() {
// add handler to handle all incoming notifications
ReactNativeUA.on_notification((notification) => {
console.log('notification:',
notification.url, // if action url is disabled
notification.platform,
notification.event,
notification.alert,
notification.data);
alert(notification.alert);
});
// Check if user enabled notifications
ReactNativeUA.are_notifications_enabled().then(enabled => {
console.log('notifications enabled:', enabled);
})
// Get channel id for device
ReactNativeUA.get_channel_id().then(channelId => {
console.log('channel id:', channelId);
})
}
render () {
return (
<View>
<Text>ReactNativeUA</Text>
</View>
);
}
}
AppRegistry.registerComponent('SampleApp', () => SampleApp);