1) Create folder custom_modules in your project root folder:
Project_Name/custom_modules
2) Added folder with library to your custom_modules folder:
Project_Name/custom_modules/RNOkaySDK
3) Added to package.json dependencies :
"react-native-okay-sdk": "file:custom_modules/RNOkaySDK"
5) Link library with react-native:
$ react-native link react-native-okay-sdk
6) Configure Android project:
Open Project_Name/android/build.gradle
Set minSdkVersion in build.gradle
buildscript {
ext {
buildToolsVersion = " 28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = " 28.0.0"
}
.....
dependencies {
classpath(" com.android.tools.build:gradle:3.4.1" ) // update gradle to 3.4.1
...
}
.....
}
Added maven repository to build.gradle
allprojects {
repositories {
mavenLocal ()
google ()
jcenter ()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url " $rootDir /../node_modules/react-native/android"
}
// Begin: Added This
maven {
url ' https://dl.bintray.com/okaythis/maven'
}
// End:
}
}
7) Added permissions to AndroidManifest.xml :
Open Project_Name/android/src/main/AndroidManifest.xml
Added user-permissions to AndroidManifest.xml
< uses-permission android:name=" android.permission.INTERNET" />
< uses-permission android:name=" android.permission.READ_PHONE_STATE" />
< uses-permission android:name=" android.permission.ACCESS_WIFI_STATE" />
< uses-permission android:name=" android.permission.ACCESS_NETWORK_STATE" />
< uses-permission android:name=" android.permission.WRITE_EXTERNAL_STORAGE" />
< uses-permission android:name=" android.permission.READ_EXTERNAL_STORAGE" />
8) Added databinding and multidex for android:
open Project_Name/android/app/build.gradle
android {
compileSdkVersion rootProject.ext.compileSdkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
// Begin Added DataBinding
dataBinding {
enabled = true
}
// End
defaultConfig {
...
multiDexEnabled true // Added this line
}
...
}
9) Install react-native Firebase:
6) Download PSA.framework and PSACommon.framework :
7) Unpack content of PSA.zip and PSACommon.zip to the RN's PROJECT_DIR/ios
8) Open XCode project structure
right-click on Frameworks folder in Project Structure
click Add files to "PROJECT_NAME"...
Added PSA.framework and PSACommon.framework
9) Open PROJECT_NAME target
Open Build Phases tab
Remove PSA.framework and PSACommon.framework from Link Binaries with Libraries
Open General tab
Drag and drop PSA.framework and PSACommon.framework into Embedded Binaries
10) Added Push Notifications
11) Install react-native Firebase:
RNOkaySdk.permissionRequest ().then(response => console.log(response)); // Response: Array or required permissions
CompontentDidMount () {
RNOkaySdk.init(" http://protdemo.demohoster.com" ).then(response =>
...
);
}
updateDeviceToken(token) // (ONLY FOR iOS). Token received from PushNotificationsIOS
// For example
CompontentDidMount () {
PushNotificationIOS.addEventListener(' register' , token => {
RNOkaySdk.updateDeviceToken(token);
})
...
);
}
isEnrolled()
isReadyForAuthorization()
authorization(SpaAuthorizationData) // Called after receive message from firebase
firebase.messaging ().onMessage(message => {
startAuthorization(message.data.sessionId);
});
startAuthorization = (sessionId) => {
firebase.iid().get ()
.then(instanceID => {
RNOkaySdk.authorization({
SpaAuthorizationData: {
sessionId: sessionId, // Received from firebase messaging
appPNS: instanceID,
pageTheme: { // Page Theme customization, if you don' t want customization: pageTheme: null
actionBarTitle: "YOUR_ACTION_BAR_TITLE",
actionBarBackgroundColor: 5,
actionBarTextColor: 10,
buttonTextColor: 15,
}
}
}).then(response => console.log(response));
})
.catch(error => console.log(error));
}
enrollProcedure(SpaEnrollData)
firebase.iid().get ()
.then(instanceID => {
RNOkaySdk.enrollProcedure({
SpaEnrollData: {
host: " http://protdemo.demohoster.com" , // PSS server address
appPns: instanceID,
pubPss: pubPssBase64, // public Pss key https://github.com/Okaythis/okay-example/wiki/Mobile-Client-Settings
installationId: " 9990" , // installationId https://github.com/Okaythis/okay-example/wiki/Mobile-Client-Settings
pageTheme: { // Page Theme customization, if you don' t want customization: pageTheme: null.
actionBarTitle: "YOUR_ACTION_BAR_TITLE",
actionBarBackgroundColor: "#ffffff",
actionBarTextColor: "#ffffff",
buttonTextColor: "#ffffff",
}
}
}).then(response => console.log(response));
})
.catch(error => console.log(error));
Page Theme properies for Android
Page Theme properies for iOS: Not available now.