$ npm install jiny-react-native --save
$ react-native link jiny-react-native
- Open up
android/app/src/main/java/[...]/MainApplication.java
- Add
import com.jiny.reactnative.JinyReactNativePackage;
to the imports at the top of the file - Add
new JinyReactNativePackage()
to the list returned by thegetPackages()
method
- Append the following lines to
android/settings.gradle
:include ':jiny-react-native' project(':jiny-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/jiny-react-native/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:implementation project(':jiny-react-native')
Jiny identifies a screen of native apps uniquely with resource-id
and tag
property of an element in that screen. In react-native resource-id
is autogenerated at run time it is not reliable to identify a screen using resource-id
. But tag
is used in testing frameworks like Espresso to identify the elements during testing. tag
in native is testID
in react-native.
To enable tagging UI elements so that each screen can be identified uniquely implement the below code
<View style={styles.body}
testID="body_view">
</View>
import RNJinyReactNative from 'jiny-react-native';
export class App extends React.Component {
componentDidMount() {
// To set the environment in test mode pass true
JinyReactNative.init("YOUR_API_KEY", true);
// To set the environment in production mode pass false
JinyReactNative.init("YOUR_API_KEY", false);
}
}
If your app has any webview, tag your webview with a uinque testID and call this function in componentDidMount
JinyReactNative.enableWebInterface('UNIQUE_WEBVIEW_TESTID')
For tagging webview with unique testID refer below code
<WebView
testID='jiny-test-webview'
source={{ uri: sourceUri }}
javaScriptEnabled={true}
/>
In case you want to disable JinySDK, you can call this method
JinyReactNative.enable(false)
You can listen to the events provided by Jiny SDK by attaching a listener to DeviceEventEmitter with JinyCallbacks. (Make sure to call this method after you have initialised Jiny). Event is an Object with key as name of the event(String) and value as an Object of meta data of the event(Map<String, String>).
import { DeviceEventEmitter } from 'react-native';
componentDidMount() {
// Listen for callbacks
const onJinyCallback = (event) => {
// For eg - value of the event is
// {
// "jiny_ab_event": {
// "jiny_pilot_mode": "",
// "experiment_code":""
// }
// }
console.log("Jiny Events: ", event)
};
DeviceEventEmitter.addListener('JinyCallbacks', onJinyCallback);
}
If you are using any other user identification other than google ad id, call this method
JinyReactNative.setAnalyticsDetails({
id: 'unique user identifier',
name: 'Elon Musk',
email: 'elon@spacex.com',
age: '48',
gender: 'Male',
city: 'Los Angeles',
state: 'Calnifornia',
country: 'USA',
latitude: 39.538,
longitude: -119.44,
extras: {
'custom_key1': 'custom_value1',
'custom_key2': 'custom_value2'
}
})
To get deeper analytics insights, use the above function.
If you are using proguard for your builds, add the following rules in android/proguard-rules.pro
file
-dontwarn com.jiny.android.**
-keep class com.jiny.android.** {*;}