react-native-intercom-mechazod
v12.3.3
Published
A React Native client for Intercom.io
Downloads
2
Readme
react-native-intercom
React Native wrapper for Intercom.io. Based off of intercom-cordova
Installation Guide
Install Intercom for iOS via whichever method you prefer.
More recently others have had more success Installing Intercom Manually.
In the past, installing via CocoaPods was recommended.
Install
react-native-intercom
:yarn add react-native-intercom # or npm install react-native-intercom
Others have reported issues with the current 11.x version and recommend installing the 10.2.0 version:
yarn add [email protected] # or npm install [email protected]
Link native dependencies
react-native link react-native-intercom
Manually Link the library in Xcode (Linking librarys on iOS)
- Open Xcode -> Right click "[Your Project Name]/Libraries" folder and select "Add File to [Your Project Name]" -> Select
RNIntercom.xcodeproj
located innode_modules/react-native-intercom/iOS
. - Open "General Settings" -> "Build Phases" -> "Link Binary with Libraries" and add
libRNIntercom.a
- Open Xcode -> Right click "[Your Project Name]/Libraries" folder and select "Add File to [Your Project Name]" -> Select
Config for iOS (intercom-ios)
Add
#import "Intercom/intercom.h"
with the other imports at the top ofios/YOUR_PROJECT/AppDelegate.m
.Initialize Intercom in
ios/YOUR_PROJECT/AppDelegate.m
with your Intercom iOS API Key and your Intercom App ID:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Intercom [Intercom setApiKey:@"YOUR_IOS_API_KEY_HERE" forAppId:@"YOUR_APP_ID_HERE"]; }
Optional, Intercom's documentation suggests adding the following call in order to receive push notifications for new messages:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // Intercom [Intercom setDeviceToken:deviceToken]; }
Optional, allow access to photos on iOS. Open
Info.plist
in Xcode and add a new key "Privacy - Photo Library Usage Description". Or alternately, openios/YOUR_PROJECT/Info.plist
and add:<dict> ...other configuration here... <key>NSPhotoLibraryUsageDescription</key> <string>Send photos to help resolve app issues</string> ...other configuration here... </dict>
Config for Android (intercom-android)
In
android/app/src/main/java/com/YOUR_APP/app/MainApplication.java
, add the following code in the respective sections of the file using your Intercom Android API Key and Intercom App ID:// ...other configuration here... import com.robinpowered.react.Intercom.IntercomPackage; import io.intercom.android.sdk.Intercom; public class MainApplication extends Application { @Override public void onCreate() { super.onCreate(); Intercom.initialize(this, "YOUR_ANDROID_API_KEY_HERE", "YOUR_APP_ID_HERE"); // ...other configuration here... } public List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( // ...other configuration here... new IntercomPackage() // ...other configuration here... ); } }
In
android/app/src/main/AndroidManifest.xml
, add the following code in the respective sections of the file:<?xml version="1.0" encoding="utf-8"?> <manifest package="com.myapp" ...other configuration here... > <application ...other configuration here... xmlns:tools="http://schemas.android.com/tools" > <!-- ...other configuration here... --> <service android:name="com.robinpowered.react.Intercom.IntercomIntentService" android:exported="false"> <intent-filter android:priority="999"> <action android:name="com.google.android.c2dm.intent.RECEIVE"/> </intent-filter> </service> <receiver android:name="io.intercom.android.sdk.push.IntercomPushBroadcastReceiver" tools:replace="android:exported" android:exported="true" /> </application> </manifest>
In
android/build.gradle
addmaven { url "https://maven.google.com" }
(h/t):allprojects { repositories { //...other configuration here... maven { url "https://maven.google.com" } } }
Decide which type of push messaging you want to install, and add choosen method to
android/app/build.gradle
. If "Google Cloud Messaging (GCM)", then:dependencies { //...other configuration here... compile 'io.intercom.android:intercom-sdk:5.+' }
Import Intercom and use methods
import Intercom from 'react-native-intercom'; // or… // var Intercom = require('react-native-intercom'); Intercom.registerIdentifiedUser({ userId: 'Bob' }); Intercom.logEvent('viewed_screen', { extra: 'metadata' }); //...rest of your file...
Note that calling
Intercom.registerIdentifiedUser({ userId: 'Bob' })
(orIntercom.registerUnidentifiedUser()
) is required before using methods which require that Intercom know the current user… such asIntercom.displayMessageComposer()
, etc.
Usage
Import or Require the module
import Intercom from 'react-native-intercom';
or
var Intercom = require('react-native-intercom');
Log an event
Intercom.logEvent('viewed_screen', { extra: 'metadata' });
Register a Logged In user
Intercom.registerIdentifiedUser({ userId: 'bob' });
Register Unidentified user
Intercom.registerUnidentifiedUser();
Register a Logged In user and post extra metadata
Intercom.registerIdentifiedUser({ userId: 'bob' })
Intercom.updateUser({
// Pre-defined user attributes
email: '[email protected]',
user_id: 'user_id',
name: 'your name',
phone: '010-1234-5678',
language_override: 'language_override',
signed_up_at: 1004,
unsubscribed_from_emails: true,
companies: [{
company_id: 'your company id',
name: 'your company name'
}],
custom_attributes: {
my_custom_attribute: 123
},
});
Set User Hash for Identity Validation (optional)
Intercom.setUserHash(hash_received_from_backend)
IOS (only)
Note: this method is called on the index.ios.js or entry point of your RN app
Intercom.initialize(`<INTERCOM_API_KEY>`, `<INTERCOM_API_KEY>`);
Sign Out
Intercom.logout()
Show Message Composer
Intercom.displayMessageComposer();
Show Message Composer with an Initial Message
Intercom.displayMessageComposerWithInitialMessage('Initial Message');
Set Bottom Padding
Intercom.setBottomPadding(64);
Listen for Unread Conversation Notifications
componentDidMount() {
Intercom.addEventListener(Intercom.Notifications.UNREAD_COUNT, this._onUnreadChange)
}
componentWillUnmount() {
Intercom.removeEventListener(Intercom.Notifications.UNREAD_COUNT, this._onUnreadChange);
}
_onUnreadChange = ({ count }) => {
//...
}
Other Notifications
// The window was hidden
Intercom.Notifications.WINDOW_DID_HIDE
Send FCM token directly to Intercom
Firebase.messaging().getToken()
.then((token) => {
console.log('Device FCM Token: ', token);
Intercom.sendTokenToIntercom(token);
});