npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

genesys-cloud-messenger-mobile-sdk-rn-wrapper

v1.3.8

Published

React Native wrappers to allow customers to integrate our Genesys Cloud Messenger Mobile SDK into their React Native applications

Downloads

18

Readme

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.

  1. 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
    |
  • Add the following repositories:
    mavenCentral()
    maven {url "https://genesysdx.jfrog.io/artifactory/genesysdx-android.dev"}

ios

In order to be able to use the chat module on iOS please follow the next steps.

  1. 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],
            # to enable hermes on iOS, change `false` to `true` and then install pods
            :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.
         # use_flipper!()

    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.

// Start a chat using the following line:
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';

// Create event emitter to subscribe to chat events
const eventEmitter = Platform.OS ===  'android' ? DeviceEventEmitter : new NativeEventEmitter(GenesysCloud)

//-> Before calling to startChat, make sure to subscribe to chat events.

// Adds a listener to messenger chat errors.
listeners['onMessengerError'] = eventEmitter.addListener('onMessengerError', (error) => {});

// Adds a listener to messenger chat state events.
listeners['onMessengerState'] = eventEmitter.addListener('onMessengerState', (state)=>{});

//-> Once the chat was ended, the listeners should be removed.
listeners['onMessengerError'].remove();
listeners['onMessengerState'].remove();


// E.g. Usage of the `ended` state event to remove chat listeners:  
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();
        })
    }
};

👉 Checkout Sample Application for more details


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
// E.g.
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