Getting started with integrating Helpshift in your Android app.
Add the following dependencies to your build.gradle
file inside the dependencies section.
dependencies { implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.helpshift:helpshift-sdkx:10.2.0' }
Helpshift SDK comes with built-in support for 47 languages. An API to change SDK language is provided. More details here.
Helpshift is now ready to help you have conversations with your users!
Helpshift uniquely identifies each registered App with a combination of 2 tokens:
Domain Name
Platform ID
App Id
on dashboard is your platform Id)
Settings
>SDK (for Developers)
in your agent dashboard.
Select your App and check Android as a platform from the dropdowns and copy
the 2 tokens to be passed when initializing Helpshift.
show me
Initialize SDK by calling com.helpshift.Helpshift.install()
method.
public class MainApplication extends Application { @Override public void onCreate() { super.onCreate(); // Add install configs in the config map Map<String, Object> config = new HashMap<>(); //... // Install call try { Helpshift.install(this, "<App Id from the Helpshift Dashboard>", "<Domain name from the Helpshift Dashboard>", config); } catch (UnsupportedOSVersionException e) { // Android OS versions prior to Lollipop (< SDK 21) are not supported. } } }
Placing the install call
You should not place the install call anywhere other than Application.onCreate
Placing it elsewhere might cause unexpected runtime problems.
HelpshiftInitializationException
Calling any API before the install call would throw an unchecked HelpshiftInitializationException in debug mode.
UnsupportedOSVersionException
Calling install()
below android SDK version 21 will throw this checked exception. All the APIs will be non operable.
The Helpshift SDK for Android requires minimum API level to be 16. However, all the Helpshift's public apis will be non-operable below android SDK version 21.
You can call Helpshift.showConversation(MyActivity.this, configurationMap)
to lead your user to your feedback section. It is advised to add configurationMap.put("initialUserMessage", "Give Feedback");
before this call to add Initial User Message.
Example:
// config map Map<String, Object> config = new HashMap<>(); // set tags for tracking config.put("tags", new String[]{"foo", "bar"}); // set custom issue fields Map<String, Object> cifMap = new HashMap<>(); Map<String, String> isPro = new HashMap<>(); isPro.put("type", "boolean"); isPro.put("value", "true"); cifMap.put("is_pro", isPro); config.put("customIssueFields", cifMap); config.put("initialUserMessage", "Give Feedback"); //..etc // pass the config map in the api Helpshift.showConversation(MainActivity.this, config);
Helpshift.showConversation(MyActivity.this, configMap);
where MyActivity.this
is the Activity you're calling Helpshift from and configMap
is the configuration map that you want to pass to configure the SDK.
Example:
Helpshift.showFAQs(MyActivity.this, configMap);
where MyActivity.this is the Activity you're calling Helpshift from. It is advised to add configMap.put("initialUserMessage", "Give Feedback");
before this call to add Initial User Message to your FAQs.
You can use the api call Helpshift.showFAQs(Activity a, Map<String, Object> configMap)
to provide a way for the user to invoke the purpose built help/FAQs section in your app. This is the easiest approach to enable help in your app as it bundles all the capabilities of the Helpshift SDK in a simple and intuitive interface.
You can wire this api call to a "Help" or "FAQs" action in your app. This Activity combines the FAQ, Search and Give Feedback functionality together in a single interface. In this view a user has to search for a specific question in the FAQ.
You can attach additional metadata to every new feedback started by the app user. This metadata can include properties like username, email, game scores, current game levels, and any other data needed to provide relevant context for each new feedback. You can attach custom metadata by passing it to the configMap
object at the time of calling any of the SDK APIs (showConversation
, showFAQs
) like Helpshift.showConversation(this, configMap)
.
Use code:
HashMap<String, String> customMetadata = new HashMap<String, String(); customMetadata.put("usertype","paid"); customMetadata.put("level","7"); customMetadata.put("score","12345"); HashMap<String, Object> config = new HashMap<>(); config.put("customMetadata", customMetadata); Helpshift.showConversation(MainActivity.this, config);
Metadata should only be sent as String key-value pairs.
On Custom Issue Fields keys & compatibility
If you want to set Custom Issue Fields at the time of Issue creation, follow the steps.
Map
Map
"type"
and "value"
for that custom issue fieldconfigMap
with key "customIssueFields"
of the Helpshift.showConversation(this, configMap)
Map<String, Object> joiningDate = new HashMap<>(); joiningDate.put("type", "date"); joiningDate.put("value", 1505927361535L); Map<String, String> stockLevel = new HashMap<>(); stockLevel.put("type", "number"); stockLevel.put("value", "1505"); Map<String, String> employeeName= new HashMap<>(); employeeName.put("type", "singleline"); employeeName.put("value", "Bugs helpshift"); Map<String, String> isPro = new HashMap<>(); isPro.put("type", "boolean"); isPro.put("value", "true"); Map<String, Object> cifMap = new HashMap<>(); cifMap.put("joining_date", joiningDate); cifMap.put("stock_level", stockLevel); cifMap.put("employee_name", employeeName); cifMap.put("is_pro", isPro); Map<String, Object> config = new HashMap<>(); // other configs... //.. config.put("customIssueFields", cifMap); Helpshift.showConversation(MainActivity.this, config);
The following are the valid values for the type
key of a Custom Issue Field.
Compatibility table for type and values:
Type | Value | Comments |
---|---|---|
singleline | string | Character limit of 255 |
multiline | string | Character limit of 100,000 |
number | string | |
dropdown | string | Drop-down options should exist for the given Custom Issue Field |
date | number | Epoch time. For example - Date.now() |
checkbox | boolean |