genesys-cloud-messenger-mobile-sdk-rn-wrapper
Genesys Cloud Messaging SDK for React Native
The SDK provides a simple react native wrapper for the Genesys Cloud Messenger SDK.
Author: Genesys
Platform Support: Android, iOS
Getting Started
Pre-requisites
In order to use this SDK you need a Genesys account with the Messaging feature enabled.
Install
Run the following on the application root directory.
-
Option 1 - npm install
npm install genesys-cloud-messenger-mobile-sdk-rn-wrapper --save
-
Option 2 - yarn add
yarn add genesys-cloud-messenger-mobile-sdk-rn-wrapper
-
Install Genesys chat module native dependency
react-native link genesys-cloud-messenger-mobile-sdk-rn-wrapper
Update
To update your project to the latest version of genesys-messenger-mobile-sdk-rn-wrapper
npm update genesys-cloud-messenger-mobile-sdk-rn-wrapper
Platform specific additional steps
android
In order to be able to use the chat module on android please follow the next steps.
- Go to
build.gradle
file, on the android project of your react native app.
YourAppFolder
├── android
│ ├── app
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ ├── build.gradle <---
│ ├── gradle
│ │ └── wrapper
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ └── settings.gradle
|
ios
In order to be able to use the chat module on iOS please follow the next steps.
-
Go to Podfile
file, on the ios project of your react native app.
YourAppFolder
├── ios
│ ├── Podfile <---
- validate your platform is set to
iOS13
or above.
platform :ios, '13.0'
- Add Genesys Messeging SDK sources.
source 'https://github.com/genesys/dx-sdk-specs-dev'
source 'https://github.com/CocoaPods/Specs'
- Add
use_frameworks!
inside target
scope. - Add below
post_install
inside target
scope.
target 'YourAppTargetName' do
config = use_native_modules!
use_frameworks!
use_react_native!(
:path => config[:reactNativePath],
:hermes_enabled => false
)
post_install do |installer|
react_native_post_install(installer)
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
end
if (target.name&.eql?('FBReactNativeSpec'))
target.build_phases.each do |build_phase|
if (build_phase.respond_to?(:name) && build_phase.name.eql?('[CP-User] Generate Specs'))
target.build_phases.move(build_phase, 0)
end
end
end
end
end
end
Podfile Full Example
- Disable
Flipper
if activated.
2 . Make sure you run pod update genesys-cloud-messenger-mobile-sdk-rn-wrapper
to get latest version.
Usage
import
Import GenesysCloud
module.
import { NativeModules } from 'react-native';
const { GenesysCloud } = NativeModules;
start-chat
Call startChat
to get the messenging view and start conversation with an agent.
GenesysCloud.startChat(deploymentId, domain, tokenStoreKey, logging);
chat-events
The wrapper allows listenning to events raised on the chat.
-
Error events
Error event has the following format: {errorCode:"", reason:"", message:""}
-
State events
Currently only started
and ended
are supported.
State event has the following format: {state:""}
In order to register to chat events, add the following to your App:
import { DeviceEventEmitter, NativeEventEmitter } from 'react-native';
const eventEmitter = Platform.OS === 'android' ? DeviceEventEmitter : new NativeEventEmitter(GenesysCloud)
listeners['onMessengerError'] = eventEmitter.addListener('onMessengerError', (error) => {});
listeners['onMessengerState'] = eventEmitter.addListener('onMessengerState', (state)=>{});
listeners['onMessengerError'].remove();
listeners['onMessengerState'].remove();
const onStateChanged = (state) => {
if(state.state == 'ended'){
Object.keys(listeners).forEach((key)=>{
const listener = listeners[key]
console.log(`removing listener: ${key}`);
if(listener) listener.remove();
})
}
};
Android
Configure chat screen orientation
Before startChat
is called, use GenesysCloud.requestScreenOrientation()
API to set the chat orientation to one of the available options provided by GenesysCloud.getConstants()
.
- SCREEN_ORIENTATION_PORTRAIT
- SCREEN_ORIENTATION_LANDSCAPE
- SCREEN_ORIENTATION_UNSPECIFIED
- SCREEN_ORIENTATION_LOCKED
GenesysCloud.requestScreenOrientation(
GenesysCloud.getConstants().SCREEN_ORIENTATION_LOCKED)
MinifyEnabled and proguard rules
If the hosting app is using the minifyEnabled
on gradle configurations, the following line should be added to the proguard-rules.pro
file:
-keep class com.genesys.cloud.messenger.transport.shyrka.** { *; }
License
MIT