React Native wrapper to bridge our iOS and Android SDK

Overview

Welcome to @intercom/intercom-react-native 👋

Version Documentation License: Apache--2.0 CircleCi

React Native wrapper to bridge our iOS and Android SDK

🏠 Website

📚 Developer Docs


📂 Homepage

Installation

$ npm install @intercom/intercom-react-native

or

yarn add @intercom/intercom-react-native

Android

If you're using React Native v0.60 or above, the library will be linked automatically without any steps being taken.

Android: Automatic linking with React Native v0.59 and below

$ react-native link @intercom/intercom-react-native

Android: Manual linking with React Native v0.59 and below

  • Add below code to android/settings.gradle
include ':intercom-react-native'
project(':intercom-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/@intercom/intercom-react-native/android')
  • Then edit android/app/build.gradle, inside dependencies at very bottom add
implementation project(':intercom-react-native')

Android: Setup

  • Add below lines to MainApplication.java inside onCreate method, replacing apiKey and appId which can be found in your workspace settings.
<-- Add this line // ... } ">
import com.intercom.reactnative.IntercomModule; //  <-- Add this line

// ...

@Override
public void onCreate() {
  super.onCreate();
  SoLoader.init(this, /* native exopackage */ false);

  // ...

  IntercomModule.initialize(this, "apiKey", "appId"); // <-- Add this line

  // ...
}
  • Open android/build.gradle and change minSdkVersion to 21
<-- Here compileSdkVersion = 29 targetSdkVersion = 29 } // ... } ">
buildscript {
    // ...
    ext {
        buildToolsVersion = "29.0.2"
        minSdkVersion = 21 // <-- Here
        compileSdkVersion = 29
        targetSdkVersion = 29
    }
    // ...
}
  • In android/build.gradle make sure that com.android.tools.build:gradle version is greater than 4.0.0
dependencies {
    classpath("com.android.tools.build:gradle:4.0.1")
    // ...
}

Android: Permissions

You will need to include the READ_EXTERNAL_STORAGE permission if you have enabled attachments:

">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

You can also include VIBRATE to enable vibration in push notifications:

">
<uses-permission android:name="android.permission.VIBRATE"/>

Android: Push Notifications

For Push notification support add GoogleServices and Firebase Cloud Messagng to your app.

More information about push notification setup HERE

  • Inside android/build.gradle add
buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:4.2.0' // <-- Add this
    }
}
  • In android/app/build.gradle in dependencies add Firebase Messaging and at the very bottom apply Google Services Plugin:
<-- Add this // ... } // ... apply plugin: 'com.google.gms.google-services' // <-- Add this apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) ">
// ...

dependencies{
    implementation "com.facebook.react:react-native:+"

    implementation 'com.google.firebase:firebase-messaging:20.2.+' // <-- Add this
    // ...
}
// ...

apply plugin: 'com.google.gms.google-services' // <-- Add this
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
  • Place google-services.json in android/app directory.

  • Create MainNotificationService.java inside your app directory(com.example.app) with below content:

    Remember to replace package com.example.app;, with your app package name

package com.example.app;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import com.intercom.reactnative.IntercomModule;

public class MainNotificationService extends FirebaseMessagingService {

  public void onMessageReceived(RemoteMessage remoteMessage) {
    if (IntercomModule.isIntercomPush(remoteMessage)) {
      IntercomModule.handleRemotePushMessage(getApplication(), remoteMessage);
    } else {
      // HANDLE NON-INTERCOM MESSAGE
    }
  }
}
  • Edit AndroidManifest.xml. Add below content inside below

Make sure that xmlns:tools="http://schemas.android.com/tools" is added to manifest tag

... ... ">

<manifest
  xmlns:tools="http://schemas.android.com/tools"
>
  <application>
    <activity>
      ...
    activity>
    ...

    
    <service
      android:name=".MainNotificationService">
      <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
      intent-filter>
    service>

    <receiver
      android:name="com.intercom.reactnative.RNIntercomPushBroadcastReceiver"
      tools:replace="android:exported"
      android:exported="true"/>
    

  application>
manifest>
  • Add below code to your React Native app
  useEffect(() => {
    /**
     * Handle PushNotification
     */
    const appStateListener = AppState.addEventListener(
      'change',
      (nextAppState) =>
        nextAppState === 'active' && Intercom.handlePushMessage()
    );
    return () => AppState.removeEventListener('change', () => true); // <- for RN < 0.65
    return () => appStateListener.remove() // <- for RN >= 0.65
  }
  , [])

Android: Push notification deep links support

  • Add below code to inside AndroidManifest.xml
">
<activity
  android:name=".MainActivity"
  android:label="@string/app_name"
  android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
  android:launchMode="singleTask"
  android:windowSoftInputMode="adjustResize">
  <intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
  intent-filter>

  
  <intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>

    <data android:scheme="http" android:host="Your app url(www.app.com)"/> 
    <data android:scheme="Your app scheme(app)"/> 
  intent-filter>
  

activity>

See the example app for an example of how to handle deep linking in your app.

IOS

cd ios
pod install
cd ..

If you're using React Native v0.60 or above, the library will be linked automatically without any steps being taken.

iOS: Manual linking with React Native v0.59 and below

See How to manually link IOS Intercom SDK

iOS: Setup

  • Open ios/AppDelegate.m then add below code:

  • At the top of file add the following:

#import #import // ... #import // <-- Add This ">
#import "AppDelegate.h"
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
// ...
#import <IntercomModule.h> // <-- Add This
  • Inside didFinishLaunchingWithOptions before return YES add, remember to replace apiKey and appId which can be found in your workspace settings:
<-- Add this (Remember to replace strings with your api keys) return YES; } ">
  // ...
  self.window.rootViewController = rootViewController;

  [IntercomModule initialize:@"apiKey" withAppId:@"appId"]; // <-- Add this (Remember to replace strings with your api keys)

  return YES;
  }

iOS: Permissions

Add this permission to your Info.plist

<key>NSPhotoLibraryUsageDescriptionkey>
<string>Send photos to support centerstring>

iOS: Push Notifications

Add Push Notifications and Background Modes > Remote Notifications Details HERE

Option 1: In your JavaScript code

An example using react-native-notifications:

// Request notification permissions
Notifications.registerRemoteNotifications();

// When permission is granted, send the device token to Intercom using [Intercom.sendTokenToIntercom(token)](#intercomsendtokentointercomtoken)
Notifications.events().registerRemoteNotificationsRegistered(({ deviceToken }: Registered) => {
  Intercom.sendTokenToIntercom(deviceToken);
});

Option 2: In your native code

  • In AppDelegate.m at the top add
#import <UserNotifications/UserNotifications.h>
  • Request notification permissions when app launches by adding the folloowing to didFinishLaunchingWithOptions before return YES;:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // ...

    // START: Code to add
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert + UNAuthorizationOptionSound)
                          completionHandler:^(BOOL granted, NSError *_Nullable error) {
                          }];
    [[UIApplication sharedApplication] registerForRemoteNotifications];
    // END: Code to add

    return YES;
}
  • In same file, above @end add the following to send the device token to Intercom when permission is granted:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [IntercomModule setDeviceToken:deviceToken];
}

@end

iOS: Push notification deep links support

Add URL types

Xcode utl types

Setup of React Native deep links can be found Here

  • Add import to AppDelegate.m
#import #import #import <--Add this ">
#import "AppDelegate.h"

#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

#import <React/RCTLinkingManager.h> <--Add this
  • Add below code to AppDelegate.m above @end
- (BOOL)application:(UIApplication *)application
   openURL:(NSURL *)url
   options:(NSDictionary
   id> *)options
{
  
   return [RCTLinkingManager 
   application:application 
   openURL:url 
   options:options];
}


- (
   BOOL)application:(UIApplication *)application openURL:(
   NSURL *)url
  sourceApplication:(
   NSString *)sourceApplication annotation:(
   id)annotation
{
  
   return [RCTLinkingManager 
   application:application 
   openURL:url
                      
   sourceApplication:sourceApplication 
   annotation:annotation];
}

@end
  

See the example app for an example of how to handle deep linking in your app.


Methods

Import

import Intercom from '@intercom/intercom-react-native';


Intercom.setUserHash(userHash) (Optional)

Sets the user hash necessary for validation when Identity Verification is enabled. This should be called before any registration calls.

Options

Type Type Required
userHash string yes

Returns

Promise


Intercom.registerUnidentifiedUser()

Registers an unidentified user with Intercom

Returns

Promise


Intercom.registerIdentifiedUser({email,userId})

Registers an identified user with Intercom

Options

One of below fields is required.

Type Type Required
email string no
userId string no

Returns

Promise


Intercom.updateUser(userAttributes)

Updates a user in Intercom.

You can send any data you like to Intercom. Typically our customers see a lot of value in sending data that
  • relates to customer development, such as price plan, value of purchases, etc. Once these have been sent to
  • Intercom you can then apply filters based on these attributes.
Intercom.updateUser({
  email: '[email protected]',
  userId: 'userId',
  name: 'Name',
  phone: '010-1234-5678',
  languageOverride: 'languageOverride',
  signedUpAt: 1621844451,
  unsubscribedFromEmails: true,
  companies: [{
    createdAt: 1621844451,
    id: 'companyId',
    monthlySpend: 100,
    name: 'CompanyName',
    plan: "plan",
    customAttributes: {
      city: "New York"
    },
  }],
  customAttributes: {
    userCustomAttribute: 123,
    hasUserCustomAttribute: true
  }
});

Options

Type Type Required
userId string no
email string no
name string no
phone string no
languageOverride string no
signedUpAt number (timestamp) no
unsubscribedFromEmails boolean no
companies array no
customAttributes object {key: boolean,string, number} no

Returns

Promise


Intercom.logout()

Logout is used to clear all local caches and user data the Intercom SDK has created. Use this at a time when you wish to log a user out of your app or change a user. Once called, the SDK will no longer communicate with Intercom until a further registration is made.

Returns

Promise


Intercom.logEvent(eventName, metaData)

Logs an event with a given name and some metadata.

Options

Type Type Required
eventName string yes
metaData object {key: boolean,string,number} no

Returns

Promise


Intercom.sendTokenToIntercom(token)

This takes a push registration token to send to Intercom to enable this device to receive push.

Options

Type Type Required
token string yes

Returns

Promise


Intercom.getUnreadConversationCount()

Gets the number of unread conversations for a user.

Returns

Promise


Intercom.handlePushMessage()

Handles the opening of an Intercom push message. This will retrieve the URI from the last Intercom push message.

  useEffect(() => {
  /**
   * Handle PushNotification Open
   */
  const appStateListener = AppState.addEventListener(
    'change',
    (nextAppState) =>
      nextAppState === 'active' && Intercom.handlePushMessage()
  );

  return () => AppState.removeEventListener('change', () => {}); // <- for RN < 0.65
  return () => appStateListener.remove(); // <- for RN >= 0.65
}, []);

Returns

Promise


Intercom.displayMessenger()

Opens the Intercom Messenger automatically to the best place for your users.

Returns

Promise


Intercom.displayMessageComposer(initialMessage)

Open the conversation screen with the composer pre-populated text.

Options

Type Type Required
initialMessage string no

Returns

Promise


Intercom.displayHelpCenter()

Open up your apps help center

Returns

Promise


Intercom.displayHelpCenterCollections()

Present the help center with specific collections only .

Note: If the requested collections cannot be found, the full help center will be shown instead.

Options

Type Type Required
collections string[] no

Returns

Promise


Intercom.fetchHelpCenterCollections()

Fetch a list of all Collections.

Returns

Promise


Intercom.fetchHelpCenterCollection(collectionId)

Get a list of sections/articles for a collection.

Options

Type Type Required
collectionId string yes

Returns

Promise


Intercom.searchHelpCenter(searchTerm)

Get a list of articles in the Help Center, filtered by a search term

Options

Type Type Required
searchTerm string yes

Returns

Promise


Intercom.displayArticle(articleId)

Displays article with given id.

Type Type Required
articleId string yes

Returns

Promise


Intercom.displayCarousel(carouselId)

Displays carousel

Options

Type Type Required
carouselId string yes

Returns

Promise

Intercom.displayArticle(articleId)

Opens an article

Options

Type Type Required
articleId string yes

Returns

Promise


Intercom.setInAppMessageVisibility(visibility)

Toggles visibility of in-app messages.

Options

Type Type Required
visibility string GONE, VISIBLE yes

Returns

Promise


Intercom.setLauncherVisibility(visibility)

Toggles visibility of the launcher view. Set as Intercom.Visibility.GONE to hide the launcher when you don't want it to be visible.

Options

Type Type Required
visibility string GONE, VISIBLE yes

Returns

Promise


Intercom.setBottomPadding(bottomPadding)

Set the bottom padding of in app messages and the launcher.

Setting the bottom padding will increase how far from the bottom of the screen the default launcher and in app messages will appear

Options

Type Type Required
bottomPadding number yes

Returns

Promise


Intercom.setLogLevel(logLevel)

Set the level of the native logger

Options

Type Type Required
logLevel string(ASSERT, DEBUG, DISABLED, ERROR, INFO, VERBOSE, WARN) yes

Returns

Promise


Intercom.addEventListener(event,callback)

Sets a listener for listed events:

Event Platform
IntercomUnreadConversationCountDidChangeNotification IOS, Android
IntercomHelpCenterDidShowNotification IOS
IntercomHelpCenterDidHideNotification IOS
IntercomWindowDidShowNotification IOS
IntercomWindowDidHideNotification IOS
useEffect(() => {
  const listener = Intercom.addEventListener('IntercomUnreadConversationCountDidChangeNotification', ({count}) => alert(count);
  return () => {
    listener.remove();
  }
}, [])

Options

Type Type Required
event string (IntercomEvents) yes
callback function ({count?: number, visible?: boolean}) => void yes

Returns

EmitterSubscription


Types

type HelpCenterArticle = {
  it: string;
  title: string;
};

type HelpCenterSection = {
  name: string;
  articles: HelpCenterArticle;
};

type HelpCenterCollectionItem = {
  id: string;
  title: string;
  summary: string;
};

type HelpCenterCollectionContent = {
  id: string;
  name: string;
  summary: string;
  articles: HelpCenterArticle[];
  sections: HelpCenterSection[];
};

type HelpCenterArticleSearchResult = {
  id: string;
  title: string;
  matchingSnippet: string;
  summary: string;
};

Usage

Check example app


Troubleshooting

  • This project uses AndroidX dependencies, but the 'android.useAndroidX' property is not enabled.

    • To enable jetifier, add those two lines to your gradle.properties file:
      android.useAndroidX=true
      android.enableJetifier=true
      
  • When Android app keeps stopping (E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules)

    • Add those lines to dependencies in ./android/app/build.gradle:
      implementation 'androidx.appcompat:appcompat:1.1.0'
      implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha03'
      

Author

👤 Intercom (https://www.intercom.com/)

Show your support

Give a ⭐️ if this project helped you!

📝 License

This project is MIT licensed.


Created with ❤️ by Intercom

Comments
  • Release 3.0.0

    Release 3.0.0

    🚀 Enhancements

    Introducing Intercom Surveys — beautiful native in-product surveys to bring all your customer communication to one platform!!

    Intercom Surveys Introduction

    📱 New feature: Intercom Surveys

    👋🏼 Meet Intercom Surveys - Don’t just ask their opinion, act on it. Now, you can seamlessly capture and act on customer feedback and needs, all within Intercom. Intercom Surveys makes it quick and easy to create and send highly targeted, easily customisable in-product native survey - across web and mobile.

    • Choose the relevant question type from multitude of question types available like rating scales (NPS, emoji, star), multiple-choice, dropdown and more
    • Customise the color of your survey’s background and buttons
    • Target the right survey to the right audience at the right time
    • Save survey responses as user attributes to drive follow up actions
    • Add a customisable intro and thank you message
    • Decide whether or not users should be able to dismiss the survey
    • Encourage further user actions by inserting a call-to-action button in the thank you message with a link (external URL or deep link)
    • Leverage email and mobile push as fallback channels if in-product doesn’t get you a response
    • Many more ways to customise your survey — show or hide avatar of survey sender, format survey text and insert user or company attributes in text
    • Use the power of Intercom platform — A/B testing and control groups, goal tracking, orchestrating surveys as a part of series, analysing and exporting results as CSV

    | | | | ------------- | ------------- | | surveys gif 1 | surveys gif 2 |

    👉 You will need to start a 14 day free trial or purchase the Surveys Add-On starting from $49 per month in order to set a survey live 👉 Upgrade to the latest version of the mobile SDK today to use the feature on mobile. No additional integration work required.

    Learn more about Intercom Surveys

    https://user-images.githubusercontent.com/3718984/159649798-a255ab7a-df79-4015-875c-399872e6186c.mp4

    https://user-images.githubusercontent.com/6392766/159682983-e13d3080-8025-4f90-9a75-14f41b81a5bc.mp4

    opened by kbrdthenerd 6
  • exclude Intercom.xcframework files

    exclude Intercom.xcframework files

    Hello! I've faced huge warning when installing pods. You could run pod install in example/ios in the main branch to see the warning.

    Screenshot 2021-08-25 at 17 22 50

    I'm not an iOS developer, but this fix works for me. Could you check it?

    opened by mixail-novikov 6
  • Android: Allow specifying firebase messaging version

    Android: Allow specifying firebase messaging version

    Using this package together with the popular react-native-push-notification package currently clashes when it comes to the firebase version in use. react-native-push-notifications defaults to version 21.1.0 and can't be downgraded to 20.2.+ because of it's use of the getToken API.

    I propose allowing to set the firebaseMessagingVersion as is done in the other library as well: see their docs.

    opened by stigi 4
  • ios: Fix RCTEventEmitter import for Expo 44+

    ios: Fix RCTEventEmitter import for Expo 44+

    When a project is using Swift modules (like Expo 44+), then imports must use the React/<header>.h form, otherwise you get a compiler error: duplicate interface definition for class 'RCTEventEmitter'

    This change should be comptabtible with React 40+, which introducedthe React/ headers.

    See https://github.com/expo/expo/issues/15622#issuecomment-997225774 for the detailed investigation and fix.

    Here is a similar change in another package: https://github.com/LinusU/react-native-get-random-values/pull/33

    opened by renchap 2
  • Fix incompatible method signatures

    Fix incompatible method signatures

    The setDeviceToken method has different signatures in the .h and .m files. As a result, when configuring push notifications using the native didRegisterForRemoteNotificationsWithDeviceToken delegate method, there is a build error in Xcode 12.5.1:

    Screenshot 2021-10-13 at 14 12 42

    It seems that the method signature for this was changed in the .m file, but not in the corresponding .h file. Since Xcode uses the header file during compilation, this appears to be causing a compile-time error.

    This PR changes the .h file to be brought into line with the .m implementation. There are also a couple of nonnull keywords that were present in the .h file, that have been mirrored in .m for completion.

    opened by fiznool 2
  • Fix Android release build for v3.0.0

    Fix Android release build for v3.0.0

    Problem Android release builds are failing with the latest changes. The README recommends incrementing targetSdkVersion and compileSdkVersion to 31. That causes Android release builds to fail with errors like:

    The minCompileSdk (31) specified in a
         dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
         is greater than this module's compileSdkVersion (android-30).
    

    Also the latest React Native version 0.68.0 has targetSdkVersion and compileSdkVersion set to 31.

    Solution Set targetSdkVersion and compileSdkVersion to 31 in android/build.gradle

    opened by Rehubbard 1
  • Release 2.1.0

    Release 2.1.0

    🚀 Enhancements

    We've added Suggested Articles to your Homescreen! Provide a better self-serve experience to your users by enabling them to answer their question before they reach out to a teammate.

    opened by prithivraj 1
  • Release 2.0.4

    Release 2.0.4

    🚀 Enhancements

    We've added Suggested Articles to your Homescreen! Provide a better self-serve experience to your users by enabling them to answer their question before they reach out to a teammate.

    opened by niamh-coleman 1
  • fix: HelpCenterArticle typings

    fix: HelpCenterArticle typings

    I believe the typings are incorrect on the HelpCenterArticle type exposed in index.d.ts.

    Fetching a collection with Intercom.fetchHelpCenterCollection("COLLECTION_ID") returns id and title props. But types are declared as it and title

    // Returned value from fetchHelpCenterCollection
    {"articles": [
    {"id": "1234", "title": "Article 1"}, 
    {"id": "5678", "title": "Article 2"}]
    

    Version: 1.1.1

    Feel free to close this if I'm out sailing. Have good one :)

    opened by Tuuben 1
  • Update README.md

    Update README.md

    After a few days of not getting Push Notifications to work on Android I realized that an important part of the implementation is missing in the documentation (In the README.md and on https://developers.intercom.com/installing-intercom/docs/react-native-push-notifications)

    I got this part from the android example. Please add it to the documentation.

    opened by stefblokdijk 1
  • Release 4.0.0

    Release 4.0.0

    Release Date: 4-11-2022

    🚀 Enhancements

    In v4.0.0 of the Intercom React Native!! Say hello to the most customizable Messenger. Ever. 👋

    📱 New feature: Messenger

    👋🏼 Introducing the fully customizable Messenger that provides customers with in-context engagement throughout their journey.

    • Customization: Now you can update and style your Messenger just the way you want it and enable a consistent brand experience with a fully customizable Messenger. Learn more and get started here. Image

    • Spaces: You’ll have increased product flexibility and versatility with Messenger ‘spaces’ that provide intuitive navigation for your customers. Let’s go through each of the 3 new spaces you can add to your Messenger:

      • Home Space: A redesigned Home screen that’s highly configurable and supports multiple use cases with new capabilities.
      • Messages Space: Messages is a dedicated space for conversation management. Both inbound and outbound conversations and conversations which contain tickets will live here.
      • Help Space: Enable customers to better self-serve with a more intuitive and personalized support experience. Customers can access a full, in-context help center from anywhere in your product with the dedicated Help Space.

    📱 New feature: Tickets

    Go beyond simple live chat – handle complex customer requests asynchronously.

    • As you scale, so does your conversation volume and not every customer request can be handled in a live chat. That’s where tickets come in.
    • Let customers submit tickets directly from your app for async resolution

    Learn more about Intercom Messenger

    Learn more about Intercom Tickets

    👉 Upgrade to the latest version of the mobile SDK today to use the feature on mobile.

    opened by BrianBoyle18 0
Releases(4.0.1)
  • 4.0.1(Nov 23, 2022)

  • 4.0.0(Nov 8, 2022)

    🚀 Enhancements

    In v4.0.0 of the Intercom React Native!! Say hello to the most customizable Messenger. Ever. 👋

    📱 New feature: Messenger

    👋🏼 Introducing the fully customizable Messenger that provides customers with in-context engagement throughout their journey.

    • Customization: Now you can update and style your Messenger just the way you want it and enable a consistent brand experience with a fully customizable Messenger. Learn more and get started here. Image

    • Spaces: You’ll have increased product flexibility and versatility with Messenger ‘spaces’ that provide intuitive navigation for your customers. Let’s go through each of the 3 new spaces you can add to your Messenger:

      • Home Space: A redesigned Home screen that’s highly configurable and supports multiple use cases with new capabilities.
      • Messages Space: Messages is a dedicated space for conversation management. Both inbound and outbound conversations and conversations which contain tickets will live here.
      • Help Space: Enable customers to better self-serve with a more intuitive and personalized support experience. Customers can access a full, in-context help center from anywhere in your product with the dedicated Help Space.

    📱 New feature: Tickets

    Go beyond simple live chat – handle complex customer requests asynchronously.

    • As you scale, so does your conversation volume and not every customer request can be handled in a live chat. That’s where tickets come in.
    • Let customers submit tickets directly from your app for async resolution

    Learn more about Intercom Messenger

    Learn more about Intercom Tickets

    👉 Upgrade to the latest version of the mobile SDK today to use the feature on mobile.

    Source code(tar.gz)
    Source code(zip)
  • 3.0.5(Jun 30, 2022)

  • 3.0.4(Jun 3, 2022)

    • Now targets the latest version of the Intercom’s iOS SDK (12.4.0) and Android SDK (12.4.1)
    • You can now display a Survey programmatically with intercom.displaySurvey("12345")
    Source code(tar.gz)
    Source code(zip)
  • 3.0.3(May 5, 2022)

  • v3.0.2(May 3, 2022)

  • v3.0.1(Apr 26, 2022)

  • v3.0.0(Mar 30, 2022)

    3.0.0 (2022-03-30)

    🚀 Enhancements

    Introducing Intercom Surveys — beautiful native in-product surveys to bring all your customer communication to one platform!!

    Intercom Surveys Introduction

    📱 New feature: Intercom Surveys

    👋🏼 Meet Intercom Surveys - Don’t just ask their opinion, act on it. Now, you can seamlessly capture and act on customer feedback and needs, all within Intercom. Intercom Surveys makes it quick and easy to create and send highly targeted, easily customisable in-product native survey - across web and mobile.

    • Choose the relevant question type from multitude of question types available like rating scales (NPS, emoji, star), multiple-choice, dropdown and more
    • Customise the color of your survey’s background and buttons
    • Target the right survey to the right audience at the right time
    • Save survey responses as user attributes to drive follow up actions
    • Add a customisable intro and thank you message
    • Decide whether or not users should be able to dismiss the survey
    • Encourage further user actions by inserting a call-to-action button in the thank you message with a link (external URL or deep link)
    • Leverage email and mobile push as fallback channels if in-product doesn’t get you a response
    • Many more ways to customise your survey — show or hide avatar of survey sender, format survey text and insert user or company attributes in text
    • Use the power of Intercom platform — A/B testing and control groups, goal tracking, orchestrating surveys as a part of series, analysing and exporting results as CSV

    | | | | ------------- | ------------- | | surveys gif 1 | surveys gif 2 |

    👉 You will need to start a 14 day free trial or purchase the Surveys Add-On starting from $49 per month in order to set a survey live 👉 Upgrade to the latest version of the mobile SDK today to use the feature on mobile. No additional integration work required.

    Learn more about Intercom Surveys

    https://user-images.githubusercontent.com/3718984/159649798-a255ab7a-df79-4015-875c-399872e6186c.mp4

    https://user-images.githubusercontent.com/6392766/159682983-e13d3080-8025-4f90-9a75-14f41b81a5bc.mp4

    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Mar 8, 2022)

    2.1.0 (2022-03-08)

    Features: We’ve added Suggested Articles to your Homescreen! Provide a better self-serve experience to your users by enabling them to answer their question before they reach out to a teammate.

    Code Updates: You Android app must target at least API level 31 to use Intercom react native SDK v2.1.0 and above.

    Source code(tar.gz)
    Source code(zip)
  • v2.0.4(Mar 8, 2022)

  • v2.0.3(Feb 18, 2022)

  • v2.0.2(Feb 11, 2022)

  • v2.0.1(Jan 7, 2022)

  • v1.1.1(Oct 29, 2021)

  • v1.0.5(Sep 3, 2021)

  • v1.0.4(Aug 30, 2021)

  • v1.0.3(Jul 2, 2021)

  • v1.0.2(Jul 1, 2021)

  • v1.0.1(Jun 29, 2021)

  • v1.0.0(Jun 24, 2021)

  • v0.2.0(Jun 24, 2021)

    0.2.0 (2021-06-24)

    Bug Fixes

    • fixed help center types (7cb0937)
    • android: added display article method (b49c757)
    • android: fixed android error codes (67d917d)
    • android: module name was unified with ios (b3e2316)
    • example: added missing permission to ios example app (37e00de)
    • example: example podfile lock sync (475ac16)
    • example: fixed flipper build issue on xcode 12 (15e2540)
    • ios: added intercom module to compile sources (9249bff)
    • ios: changed algorithm for generating data from token string (eef18cb)
    • ios: fixed requiresMainQueueSetup warning message (82316ca)
    • ios: removed typu in app delegate (26919e9)
    • listeners: fixed event listeners handling (a29fa87)
    • play services: added build variant without google services (88ba9f8)
    • types: changed handle push message return type (01ca01b)

    Features

    • android: added display help center collections method (5b57716)
    • android: added fetch help center collections method (c56bd67)
    • android: added help center fetch methods (f318160)
    • android: added help center search term validation (46fe14b)
    • example: updated example app (ec918fc)
    • ios: added help center collections support (b2b1659)
    • ios: added help center fetch methods (00fa0f1)
    • added ios rn header interceptor (637be06)
    • android: added rn header interceptor (c290d1e)
    • event: added support for unread messages event listener (52191c8)
    • example: added examples to example app (f78e6a4)
    • fcm: added push notification handling (e795c1e)
    • ios: added intercom ios sdk source for manual linking (3ab98ca)
    • ios: bridged ios sdk methods (2f43b78)
    • ios: ios push notifications and deep lining support (02de834)
    • js: added named default export for intercom module (70ca31c)
    • update: updated intercom sdk to version 10 (9e6d56c)
    • bridged android methods (a4e6d6c)
    Source code(tar.gz)
    Source code(zip)
Owner
Intercom
Intercom
Provides custom lint rules developed by Bottle Rocket Studios to help keep our code cleaner

Provides custom lint rules developed by Bottle Rocket Studios to help keep our code cleaner, detect and mitigate possible security issues, and allow us to write rules around best practices and usage as necessary in the future

Bottle Rocket Studios 1 Feb 11, 2022
Android Shared preference wrapper than encrypts the values of Shared Preferences. It's not bullet proof security but rather a quick win for incrementally making your android app more secure.

Secure-preferences - Deprecated Please use EncryptedSharedPreferences from androidx.security in preferenced to secure-preference. (There are no active

Scott Alexander-Bown 1.5k Dec 24, 2022
Wrapper around the android Camera class that simplifies its usage

EasyCamera Wrapper around the android Camera class that simplifies its usage (read more about the process) Usage: // the surface where the preview wil

Bozhidar Bozhanov 641 Dec 29, 2022
Very easy to use wrapper library for Android SharePreferences

Treasure English document Treasure是一个Android平台上基于SharePreferences的偏好存储库,只需要定义接口,无需编写实现,默认支持Serializable和Parcelable。运行时0反射,不仅使用方便而且性能和原生写法几乎无差别。 使用方法 1

星一 507 Nov 12, 2022
🪁 Android Resources Wrapper Library

Kite Android Resource Wrapper Library. TLDR Fed up with typing ContextCompat, resources and context all over your apps to access your resources? Say n

Andrea Cioccarelli 132 Dec 9, 2022
Expirable Disk Lru Cache is a secure(with encryption) wrapper for [DiskLruCache](https://github.com/JakeWharton/DiskLruCache) that allows expiring of key/value pairs by specifying evictionTimeSpan. It has very simple API.

ExpirableDiskLruCache ExpirableDiskLruCache is a wrapper for DiskLruCache that allows expiring of key/value pairs by specifying evictionTimeSpan. It h

Vijay Rawat 24 Oct 3, 2022
Screen Capture Utils - A plugin to handle screen capture events on android and ios

Screen Capture Utils A plugin to handle screen capture events on android and ios ?? Initialize SDK late ScreenCaptureUtils screenCaptureUtils;

Chiziaruhoma Ogbonda 41 Apr 12, 2022
安卓设备唯一标识解决方案,可完全替代移动安全联盟统一 SDK 闭源方案。包括国内手机厂商的开放匿名标识(OAID)、海外手机平台的安卓广告标识(AAID),另外也提供了 IMEI/MEID、AndroidID、WidevineID、PseudoID、GUID 等常见的设备标识的获取方法。

Android_CN_OAID 安卓设备唯一标识解决方案,可作为移动安全联盟统一 SDK (miit_mdid_xxx.aar)的替代方案。本项目提供了国内各大手机厂商获取 OAID(开放匿名设备标识)及海外手机平台获取 AAID (安卓广告标识)的便携接口,另外也提供了 IMEI/MEID、And

贵州山魈羡民 1.4k Dec 29, 2022
Multiplaform kotlin library for calculating text differences. Based on java-diff-utils, supports JVM, JS and native targets.

kotlin-multiplatform-diff This is a port of java-diff-utils to kotlin with multiplatform support. All credit for the implementation goes to original a

Peter Trifanov 51 Jan 3, 2023
Gitversion - A native console application to calculate a version based on git commits and tags

GitCommit A native console application to calculate a version based on git commi

Solugo 5 Sep 13, 2022
Native Kotlin library for time-based TOTP and HMAC-based HOTP one-time passwords

A kotlin implementation of HOTP (RFC-4226) and TOTP (RFC-6238). Supports validation and generation of 2-factor authentication codes, recovery codes and randomly secure secrets.

Robin Ohs 6 Dec 19, 2022
Android Utilities Library build in kotlin Provide user 100 of pre defined method to create advanced native android app.

Android Utilities Library build in kotlin Provide user 100 of pre defined method to create advanced native android app.

Shahid Iqbal 4 Nov 29, 2022
A robust native library loader for Android.

ReLinker A robust native library loader for Android. More information can be found in our blog post Min SDK: 9 JavaDoc Overview The Android PackageMan

Keepsafe 2.9k Dec 27, 2022
Routable, an in-app native URL router, for Android

Routable Routable is an in-app native URL router, for Android. Also available for iOS. Usage Set up your app's router and URLs: import com.usepropelle

Clay Allsopp 476 Nov 11, 2022
SoLoader is a native code loader for Android.

SoLoader is a native code loader for Android. It takes care of unpacking your native libraries and recursively loads dependencies on platforms that don't support that out of the box.

Meta 1.2k Jan 3, 2023
Fuzzy string matching for Kotlin (JVM, native, JS, Web Assembly) - port of Fuzzy Wuzzy Python lib

FuzzyWuzzy-Kotlin Fuzzy string matching for Kotlin (JVM, iOS) - fork of the Java fork of of Fuzzy Wuzzy Python lib. For use in on JVM, Android, or Kot

WillowTree, LLC 54 Nov 8, 2022
A Kotlin native Postgres driver for SqlDelight.

Module postgres-native-sqldelight A native Postgres driver for SqlDelight. Source code Install This package is uploaded to MavenCentral and supports m

Philip Wedemann 19 Dec 30, 2022
gRPC and protocol buffers for Android, Kotlin, and Java.

Wire “A man got to have a code!” - Omar Little See the project website for documentation and APIs. As our teams and programs grow, the variety and vol

Square 3.9k Dec 31, 2022
General purpose utilities and hash functions for Android and Java (aka java-common)

Essentials Essentials are a collection of general-purpose classes we found useful in many occasions. Beats standard Java API performance, e.g. LongHas

Markus Junginger 1.4k Dec 29, 2022