I'd like to configure this to run in Android. Please advise how I'd go about doing this.
Okay but what specifically are the steps.

React Native wrapper for Intercom.io. Based off of intercom-cordova
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
Link native dependencies
react-native link react-native-intercom
Manually Link the library in Xcode (Linking librarys on iOS)
RNIntercom.xcodeproj located in node_modules/react-native-intercom/iOS.libRNIntercom.aConfig for iOS (intercom-ios)
#import "Intercom/intercom.h" with the other imports at the top of ios/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, open ios/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 add maven { 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.+'
}
If "Firebase Cloud Messaging(FCM)", then:
dependencies {
//...other configuration here...
compile 'io.intercom.android:intercom-sdk-fcm:5.+'
compile 'com.google.firebase:firebase-messaging:11.+'
}
If you'd rather not have push notifications in your app, you can use this dependency:
dependencies {
implementation 'io.intercom.android:intercom-sdk-base: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' }) (or Intercom.registerUnidentifiedUser()) is required before using methods which require that Intercom know the current user… such as Intercom.displayMessageComposer(), etc.
import Intercom from 'react-native-intercom';
or
var Intercom = require('react-native-intercom');
Intercom.logEvent('viewed_screen', { extra: 'metadata' });
Intercom.registerIdentifiedUser({ userId: 'bob' });
Intercom.registerUnidentifiedUser();
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
},
});
Intercom.setUserHash(hash_received_from_backend)
Intercom.logout()
Intercom.displayMessageComposer();
Intercom.displayMessageComposerWithInitialMessage('Initial Message');
Intercom.setBottomPadding(64);
componentDidMount() {
Intercom.addEventListener(Intercom.Notifications.UNREAD_COUNT, this._onUnreadChange)
}
componentWillUnmount() {
Intercom.removeEventListener(Intercom.Notifications.UNREAD_COUNT, this._onUnreadChange);
}
_onUnreadChange = ({ count }) => {
//...
}
// The window was hidden
Intercom.Notifications.WINDOW_DID_HIDE
// The window was shown
Intercom.Notifications.WINDOW_DID_SHOW
Firebase.messaging().getToken()
.then((token) => {
console.log('Device FCM Token: ', token);
Intercom.sendTokenToIntercom(token);
});
Thanks. Another question. I'd like to Send an FCM token directly to Intercom for push notifications. Any ideas?
Nope
gee, thanks for nothing then.
Wow that's toxic "help"
@cbrwizard this is a joke in case you missed it: https://twitter.com/klamping/status/1095776458520383489
@browniefed feel free to delete this issue
Ha, I'll leave it. The giant troll face above is pretty good indicator we were joking.
@browniefed After following all the steps, I am getting following error :
Intercom: Api call failed: {"type":"error.list","request_id":"000inqj90bj3mpbrov80","errors":[{"code":"not_found","message":"User Not Found"}]}
any help?
Most helpful comment
Wow that's toxic "help"