Android SDK
Android SDK for DigitalGenius Chat.
Overview
This SDK enables the DigitalGenius Chat Widget to be embedded anywhere inside an Android app.
The SDK requires minimal setup. Please see the PublicDemoApp.zip
for an example.
A DigitalGenius Customer Success Manager will provide you with a custom widgetId
, flowURL
and version
before getting started.
Please see the Integrating SDK to your project
section for details on how to integrate the following settings into an Android app using the SDK.
Installation
- Extract the provided
chatwidgetsdk
zip. - Add to your build gradle file:
dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') }
- Put
DGChatSDK.aar
into yourproject/module/libs
folder. - Click
Sync Project with Gradle files
in Android Studio
Basic usage example
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
DGChatSdk.init(
widgetId = "your_widget_id",
flowURL = "your_flowURL",
version = "your_version",
useCache = true,
callbacks = object : IDGChatWidgetListener {
override fun onChatMinimizeClick() {
Toast.makeText(
this@MainActivity,
"User callback -> onChatMinimizeClick",
Toast.LENGTH_LONG
).show()
}
override fun onChatEndClick() {
Toast.makeText(
this@MainActivity,
"User callback -> onChatEndClick",
Toast.LENGTH_LONG
).show()
}
override fun onChatLauncherClick() {
Toast.makeText(
this@MainActivity,
"User callback -> onChatLauncherClick",
Toast.LENGTH_LONG
).show()
}
override fun onChatProactiveButtonClick() {
Toast.makeText(
this@MainActivity,
"User callback -> onChatProactiveButtonClick",
Toast.LENGTH_LONG
).show()
}
},
metadata = """
metadata: {
"currentPage": "some-random-string",
"currentPageTitle": "another-random-string"
}
""".trimIndent()
)
attachDGChatViewToLifecycle()
/*
....
*/
val methods = showDGChatView()
methods.sendMessage("your message")
methods.launchWidget()
methods.initProactiveButtons(
listOf("question1", "question2", "question3"),
listOf("answer1", "answer2", "answer3")
)
}
}
⚠️ It is highly important to provide version
as a Semantic versioning three-part version number. Otherwise, you'll encounter runtime error.
And finally, just call showDGChatViewWith(animator: DGChatViewAnimator)
to present a chat button on top of specified Activity with animation or showDGChatView()
without.
Methods showDGChatViewWith(animator: DGChatViewAnimator)
and showDGChatView()
returned DGChatMethods
which can be used to performed programmatically widget actions
Sample project
The interaction model and example usage can be found in Demo project. Refer to the MainActivity.kt
file.
React-native
Installation
- Extract the provided
chatwidgetsdk
zip. - Add to your build gradle file:
dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0")) implementation("androidx.compose.runtime:runtime:1.4.3") }
- Put
DGChatSDK.aar
into yourproject/android/app/libs
folder. - Click
Sync Project with Gradle files
in Android Studio
Basic usage example
Add to your react-native application class:
public class MainApplication extends Application implements ReactApplication {
...
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for example:
packages.add(new DGChatSdkPackage());
return packages;
}
...
Add to your react-native activity class:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DGChatSdkModule.Companion.initDgChatSdkModule(this);
}
Add to your react-native App.tsx:
import {useEffect, useState} from 'react';
import {NativeEventEmitter, NativeModules} from 'react-native';
const {DGChatModule} = NativeModules;
...
useEffect(() => {
const eventEmitter = new NativeEventEmitter(NativeModules.DGChatModule);
let onChatMinimizeClickEventListener = eventEmitter.addListener('OnChatMinimizeClick', event => {
DGChatModule.showToast("OnChatMinimizeClick")
});
let onChatEndClickEventListener = eventEmitter.addListener('onChatEndClick', event => {
DGChatModule.showToast("onChatEndClick")
});
let onChatLauncherClickEventListener = eventEmitter.addListener('onChatLauncherClick', event => {
DGChatModule.showToast("onChatLauncherClick")
});
let onChatProactiveButtonClickEventListener = eventEmitter.addListener('onChatProactiveButtonClick', event => {
DGChatModule.showToast("onChatProactiveButtonClick")
});
return () => {
onChatMinimizeClickEventListener.remove();
onChatEndClickEventListener.remove();
onChatLauncherClickEventListener.remove();
onChatProactiveButtonClickEventListener.remove();
};
}, []
);
...
DGChatModule.showDGChatView(
"your_widget_id",
"your_flowURL",
"your_version",
true,
"metadata: { \"currentPage\": \"some-random-string\", \"currentPageTitle\": \"another-random-string\"}"
);
...
DGChatModule.sendMessage("your message")
DGChatModule.launchWidget()
DGChatModule.initProactiveButtons(
["question1", "question2", "question3"],
["answer1", "answer2", "answer3"]
)
...
Sample project
The interaction model and example usage can be found in Demo project.
Updated 3 months ago