react-native-intercom
React Native wrapper for Intercom.io. Based off of intercom-cordova
Install
IOS
npm install react-native-intercom
RNPM
Run rnpm link
CocoaPods
Add the following to your podfile
pod 'react-native-intercom', :path => '../node_modules/react-native-intercom'
Manual
Follow how to manually link a library here https://facebook.github.io/react-native/docs/linking-libraries-ios.html#content
Android
Run rnpm link
Necessary Code Bits
IOS
More instructions here: Intercom for iOS
Initialize Intercom in your AppDelegate.m
#import "Intercom/intercom.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Initialize Intercom
[Intercom setApiKey:@"<#ios_sdk-...#>" forAppId:@"<#your-app-id#>"];
}
- 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 setDeviceToken:deviceToken];
}
Android
More instructions here: Intercom for Android
Intercom.initialize(getApplicationContext(), "your api key", "your app id");
And in your AndroidManifest.xml file add the following lines within the <application> ... </application>
tags
<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" />
Make sure to add xmlns:tools="http://schemas.android.com/tools" in your main <application>
tag
Usage
Require the module
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 a Logged In user and post extra metadata
Intercom.registerIdentifiedUser({ userId: 'bob' })
Intercom.updateUser({
email: 'email',
name: 'name',
});
Sign Out
Intercom.reset()
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 }) => {
//...
}