@capacitor-community/intercom
Capacitor community plugin for enabling Intercom capabilities
Sponsors
Using npm:
npm install @capacitor-community/intercom
Using yarn:
yarn add @capacitor-community/intercom
Sync native files:
import { Intercom } from '@capacitor-community/intercom' ;
import { PushNotifications } from '@capacitor/push-notifications' ;
// Register for push notifications from Intercom
PushNotifications . register ( ) ;
// Register an indetified user
Intercom . registerIdentifiedUser ( { userId : 123456 } ) ;
Intercom . registerIdentifiedUser ( { email : '[email protected] ' } ) ;
Intercom . registerIdentifiedUser ( { userId : 123456 , email : '[email protected] ' } ) ;
// Register a log event
Intercom . logEvent ( { name : 'my-event' , data : { pi : 3.14 } } ) ;
// Display the message composer
Intercom . displayMessageComposer ( { message : 'Hello there!' } ) ;
// Identity Verification
// https://developers.intercom.com/installing-intercom/docs/ios-identity-verification
Intercom . setUserHash ( { hmac : 'xyz' } ) ;
ionic start my-cap-app --capacitor
cd my-cap-app
npm install β-save @capacitor-community/intercom
mkdir www && touch www/index.html
npx cap add ios
add intercom keys to capacitor's configuration file
{
β¦
"plugins": {
"Intercom": {
"iosApiKey": "ios_sdk-xxx",
"iosAppId": "yyy"
}
}
β¦
}
npx cap open ios
sign your app at xcode (general tab)
Tip: every time you change a native code you may need to clean up the cache (Product > Clean build folder) and then run the app again.
ionic start my-cap-app --capacitor
cd my-cap-app
npm install β-save @capacitor-community/intercom
mkdir www && touch www/index.html
npx cap add android
add intercom keys to capacitor's configuration file
{
β¦
"plugins": {
"Intercom": {
"androidApiKey": "android_sdk-xxx",
"androidAppId": "yyy"
}
}
β¦
}
Now you should be set to go. Try to run your client using ionic cap run android --livereload
.
Tip: every time you change a native code you may need to clean up the cache (Build > Clean Project | Build > Rebuild Project) and then run the app again.
loadWithKeys ( options : { appId ?: string; apiKeyIOS ?: string; apiKeyAndroid ?: string ; } ) = > Promise < void >
Param
Type
options
{ appId?: string; apiKeyIOS?: string; apiKeyAndroid?: string; }
registerIdentifiedUser(...)
registerIdentifiedUser ( options : { userId ?: string; email ?: string ; } ) = > Promise < void >
Param
Type
options
{ userId?: string; email?: string; }
registerUnidentifiedUser()
registerUnidentifiedUser ( ) = > Promise < void >
updateUser ( options : IntercomUserUpdateOptions ) = > Promise < void >
logout ( ) = > Promise < void >
logEvent ( options : { name : string ; data ?: any; } ) = > Promise < void >
Param
Type
options
{ name: string; data?: any; }
displayMessenger ( ) = > Promise < void >
displayMessageComposer(...)
displayMessageComposer ( options : { message : string ; } ) = > Promise < void >
Param
Type
options
{ message: string; }
displayHelpCenter ( ) = > Promise < void >
hideMessenger ( ) = > Promise < void >
displayLauncher ( ) = > Promise < void >
hideLauncher ( ) = > Promise < void >
displayInAppMessages ( ) = > Promise < void >
hideInAppMessages ( ) = > Promise < void >
displayCarousel ( options : { carouselId : string ; } ) = > Promise < void >
Param
Type
options
{ carouselId: string; }
setUserHash ( options : { hmac : string ; } ) = > Promise < void >
Param
Type
options
{ hmac: string; }
setBottomPadding ( options : { value : string ; } ) = > Promise < void >
Param
Type
options
{ value: string; }
sendPushTokenToIntercom(...)
sendPushTokenToIntercom ( options : { value : string ; } ) = > Promise < void >
Param
Type
options
{ value: string; }
receivePush ( notification : IntercomPushNotificationData ) = > Promise < void >
displayArticle ( options : { articleId : string ; } ) = > Promise < void >
Param
Type
options
{ articleId: string; }
addListener('windowDidShow', ...)
addListener ( eventName : 'windowDidShow' , listenerFunc : ( ) = > void ) => Promise < PluginListenerHandle >
Param
Type
eventName
'windowDidShow'
listenerFunc
() => void
Returns: Promise<PluginListenerHandle >
addListener('windowDidHide', ...)
addListener ( eventName : 'windowDidHide' , listenerFunc : ( ) = > void ) => Promise < PluginListenerHandle >
Param
Type
eventName
'windowDidHide'
listenerFunc
() => void
Returns: Promise<PluginListenerHandle >
removeAllListeners ( ) = > Promise < void >
IntercomUserUpdateOptions
Prop
Type
userId
string
email
string
name
string
phone
string
languageOverride
string
customAttributes
{ [key: string]: any; }
IntercomPushNotificationData
Prop
Type
conversation_id
string
message
string
body
string
author_name
string
image_url
string
app_name
string
receiver
string
conversation_part_type
string
intercom_push_type
string
uri
string
push_only_conversation_id
string
instance_id
string
title
string
priority
number
Prop
Type
remove
() => Promise<void>
We're starting fresh under an official org. If you were using the previous npm package capacitor-intercom
, please update your package.json to @capacitor-community/intercom
. Check out changelog for more info.
Breaking changes from Capacitor v2 to v3
UserUpdateOptions
option type becomes IntercomUserUpdateOptions
IntercomPlugin
configuration key becomes Intercom
android-apiKey
config key becomes androidApiKey
android-appId
config key becomes androidAppId
ios-apiKey
config key becomes iosApiKey
ios-appId
config key becomes iosAppId
Switch from CAPBridge to ApplicationDelegateProxy in application events
remove the whole onCreate initialization from your app's MainActivity.java
public class MainActivity extends BridgeActivity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- // Initializes the Bridge
- this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
- // Additional plugins you've installed go here
- add(IntercomPlugin.class);
- }});
- }
}
MIT
Thanks goes to these wonderful people (emoji key ):
This project follows the all-contributors specification. Contributions of any kind welcome!