@houseninja/capacitor-intercom
v4.3.0
Published
Enable Intercom features for Capacitor apps
Readme
Maintainers
| Maintainer | GitHub | Social | | --------------- | --------------------------------------------------- | ----------------------------------------- | | Miles Zimmerman | mileszim | @mileszim | | House Ninja | houseninjadojo | |
Installation
Using npm:
npm install @houseninja/capacitor-intercomUsing yarn:
yarn add @houseninjad/capacitor-intercomSync native files:
npx cap syncUsage
Web Only
For web, you must run boot({ appId: <app-id> }) to initialize.
import { Intercom } from '@houseninja/capacitor-intercom';
Intercom.boot({
appId: '12345',
email: '[email protected]', // you can set user details on boot:
userId: '1234', // see https://developers.intercom.com/installing-intercom/docs/intercom-javascript#intercomboot-intercomsettings
});
Intercom.registerIdentifiedUser({
email: '[email protected]', // you can also set user details like the mobile SDKs
userId: '1234',
});
// show intercom
Intercom.show();
Web, iOS, Android
import { Intercom } from '@houseninja/capacitor-intercom';
import { PushNotifications } from '@capacitor/push-notifications';
// Register for push notifications from Intercom
await PushNotifications.register();
// Register an indetified user
await Intercom.registerIdentifiedUser({ userId: 123456 }); // or email or both
// Register a log event
await Intercom.logEvent({ name: 'my-event', data: { pi: 3.14 } });
// Display the message composer
await Intercom.displayMessageComposer({ message: 'Hello there!' });
// Identity Verification
// https://developers.intercom.com/installing-intercom/docs/ios-identity-verification
await Intercom.setUserHash({ hmac: 'xyz' });
// Get Unread Conversation Count
await Intercom.unreadConversationCount();
// Listen for unread conversation count to change
Intercom.addListener('onUnreadCountChange', ({ value }) => {
console.log('conversation count is: ', value);
});iOS setup
ionic start my-cap-app --capacitorcd my-cap-appnpm install —-save @houseninja/capacitor-intercommkdir www && touch www/index.htmlnpx 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.
Android setup
ionic start my-cap-app --capacitorcd my-cap-appnpm install —-save @houseninja/capacitor-intercommkdir www && touch www/index.htmlnpx cap add android- add intercom keys to capacitor's configuration file
{
…
"plugins": {
"Intercom": {
"androidApiKey": "android_sdk-xxx",
"androidAppId": "yyy"
}
}
…
}npx cap open android
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.
API
boot(...)loginUser(...)registerIdentifiedUser(...)loginUnidentifiedUser()registerUnidentifiedUser()updateUser(...)logout()logEvent(...)displayMessenger()show()displayInbox()displayMessageComposer(...)displayHelpCenter()displayArticle(...)displayCarousel(...)displayLauncher()enableLauncher()displayInAppMessages()enableMessengerPopups()hideMessenger()hide()hideLauncher()disableLauncher()hideInAppMessages()disableMessengerPopups()setUserHash(...)setBottomPadding(...)sendPushTokenToIntercom(...)receivePush(...)unreadConversationCount()addListener('onUnreadCountChange', ...)addListener('windowWillShow', ...)addListener('windowDidShow', ...)addListener('windowWillHide', ...)addListener('windowDidHide', ...)addListener('didStartNewConversation', ...)removeAllListeners()- Interfaces
- Type Aliases
boot(...)
boot(options: IntercomSettings) => Promise<void>| Param | Type |
| ------------- | ------------------------------------------------------------- |
| options | IntercomSettings |
loginUser(...)
loginUser(options: { userId?: string; email?: string; }) => Promise<void>| Param | Type |
| ------------- | ------------------------------------------------- |
| options | { userId?: string; email?: string; } |
registerIdentifiedUser(...)
registerIdentifiedUser(options: { userId?: string; email?: string; }) => Promise<void>| Param | Type |
| ------------- | ------------------------------------------------- |
| options | { userId?: string; email?: string; } |
loginUnidentifiedUser()
loginUnidentifiedUser() => Promise<void>registerUnidentifiedUser()
registerUnidentifiedUser() => Promise<void>updateUser(...)
updateUser(options: IntercomUserUpdateOptions) => Promise<void>| Param | Type |
| ------------- | ------------------------------------------------------------------------------- |
| options | IntercomUserUpdateOptions |
logout()
logout() => Promise<void>logEvent(...)
logEvent(options: { name: string; data?: any; }) => Promise<void>| Param | Type |
| ------------- | ------------------------------------------ |
| options | { name: string; data?: any; } |
displayMessenger()
displayMessenger() => Promise<void>show()
show() => Promise<void>displayInbox()
displayInbox() => Promise<void>displayMessageComposer(...)
displayMessageComposer(options: { message: string; }) => Promise<void>| Param | Type |
| ------------- | --------------------------------- |
| options | { message: string; } |
displayHelpCenter()
displayHelpCenter() => Promise<void>displayArticle(...)
displayArticle(options: { articleId: string; }) => Promise<void>| Param | Type |
| ------------- | ----------------------------------- |
| options | { articleId: string; } |
displayCarousel(...)
displayCarousel(options: { carouselId: string; }) => Promise<void>| Param | Type |
| ------------- | ------------------------------------ |
| options | { carouselId: string; } |
displayLauncher()
displayLauncher() => Promise<void>enableLauncher()
enableLauncher() => Promise<void>displayInAppMessages()
displayInAppMessages() => Promise<void>enableMessengerPopups()
enableMessengerPopups() => Promise<void>hideMessenger()
hideMessenger() => Promise<void>hide()
hide() => Promise<void>hideLauncher()
hideLauncher() => Promise<void>disableLauncher()
disableLauncher() => Promise<void>hideInAppMessages()
hideInAppMessages() => Promise<void>disableMessengerPopups()
disableMessengerPopups() => Promise<void>setUserHash(...)
setUserHash(options: { hmac: string; }) => Promise<void>| Param | Type |
| ------------- | ------------------------------ |
| options | { hmac: string; } |
setBottomPadding(...)
setBottomPadding(options: { value: string; }) => Promise<void>| Param | Type |
| ------------- | ------------------------------- |
| options | { value: string; } |
sendPushTokenToIntercom(...)
sendPushTokenToIntercom(options: { value: string; }) => Promise<void>| Param | Type |
| ------------- | ------------------------------- |
| options | { value: string; } |
receivePush(...)
receivePush(notification: IntercomPushNotificationData) => Promise<void>| Param | Type |
| ------------------ | ------------------------------------------------------------------------------------- |
| notification | IntercomPushNotificationData |
unreadConversationCount()
unreadConversationCount() => Promise<UnreadConversationCount>Returns: Promise<UnreadConversationCount>
addListener('onUnreadCountChange', ...)
addListener(eventName: 'onUnreadCountChange', listenerFunc: UnreadCountChangeListener) => Promise<PluginListenerHandle> & PluginListenerHandle| Param | Type |
| ------------------ | ------------------------------------------------------------------------------- |
| eventName | 'onUnreadCountChange' |
| listenerFunc | UnreadCountChangeListener |
Returns: Promise<PluginListenerHandle> & PluginListenerHandle
addListener('windowWillShow', ...)
addListener(eventName: 'windowWillShow', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle| Param | Type |
| ------------------ | ----------------------------- |
| eventName | 'windowWillShow' |
| listenerFunc | () => void |
Returns: Promise<PluginListenerHandle> & PluginListenerHandle
addListener('windowDidShow', ...)
addListener(eventName: 'windowDidShow', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle| Param | Type |
| ------------------ | ---------------------------- |
| eventName | 'windowDidShow' |
| listenerFunc | () => void |
Returns: Promise<PluginListenerHandle> & PluginListenerHandle
addListener('windowWillHide', ...)
addListener(eventName: 'windowWillHide', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle| Param | Type |
| ------------------ | ----------------------------- |
| eventName | 'windowWillHide' |
| listenerFunc | () => void |
Returns: Promise<PluginListenerHandle> & PluginListenerHandle
addListener('windowDidHide', ...)
addListener(eventName: 'windowDidHide', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle| Param | Type |
| ------------------ | ---------------------------- |
| eventName | 'windowDidHide' |
| listenerFunc | () => void |
Returns: Promise<PluginListenerHandle> & PluginListenerHandle
addListener('didStartNewConversation', ...)
addListener(eventName: 'didStartNewConversation', listenerFunc: () => void) => Promise<PluginListenerHandle> & PluginListenerHandle| Param | Type |
| ------------------ | -------------------------------------- |
| eventName | 'didStartNewConversation' |
| listenerFunc | () => void |
Returns: Promise<PluginListenerHandle> & PluginListenerHandle
removeAllListeners()
removeAllListeners() => Promise<void>Interfaces
IntercomSettings
| Prop | Type |
| ------------------------------ | ----------------------------------------------------------- |
| app_id | string |
| custom_launcher_selector | string |
| alignment | string |
| vertical_padding | number |
| horizontal_padding | number |
| hide_default_launcher | boolean |
| session_duration | number |
| action_color | string |
| background_color | string |
| email | string |
| user_id | string |
| created_at | Date |
| name | string |
| phone | string |
| last_request_at | Date |
| unsubscribed_from_emails | boolean |
| language_override | string |
| utm_campaign | string |
| utm_content | string |
| utm_source | string |
| utm_term | string |
| avatar | IntercomAvatar |
| user_hash | string |
| company | IntercomCompany |
| companies | IntercomCompany[] |
Date
Enables basic storage and retrieval of dates and times.
| Method | Signature | Description | | ---------------------- | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- | | toString | () => string | Returns a string representation of a date. The format of the string depends on the locale. | | toDateString | () => string | Returns a date as a string value. | | toTimeString | () => string | Returns a time as a string value. | | toLocaleString | () => string | Returns a value as a string value appropriate to the host environment's current locale. | | toLocaleDateString | () => string | Returns a date as a string value appropriate to the host environment's current locale. | | toLocaleTimeString | () => string | Returns a time as a string value appropriate to the host environment's current locale. | | valueOf | () => number | Returns the stored time value in milliseconds since midnight, January 1, 1970 UTC. | | getTime | () => number | Gets the time value in milliseconds. | | getFullYear | () => number | Gets the year, using local time. | | getUTCFullYear | () => number | Gets the year using Universal Coordinated Time (UTC). | | getMonth | () => number | Gets the month, using local time. | | getUTCMonth | () => number | Gets the month of a Date object using Universal Coordinated Time (UTC). | | getDate | () => number | Gets the day-of-the-month, using local time. | | getUTCDate | () => number | Gets the day-of-the-month, using Universal Coordinated Time (UTC). | | getDay | () => number | Gets the day of the week, using local time. | | getUTCDay | () => number | Gets the day of the week using Universal Coordinated Time (UTC). | | getHours | () => number | Gets the hours in a date, using local time. | | getUTCHours | () => number | Gets the hours value in a Date object using Universal Coordinated Time (UTC). | | getMinutes | () => number | Gets the minutes of a Date object, using local time. | | getUTCMinutes | () => number | Gets the minutes of a Date object using Universal Coordinated Time (UTC). | | getSeconds | () => number | Gets the seconds of a Date object, using local time. | | getUTCSeconds | () => number | Gets the seconds of a Date object using Universal Coordinated Time (UTC). | | getMilliseconds | () => number | Gets the milliseconds of a Date, using local time. | | getUTCMilliseconds | () => number | Gets the milliseconds of a Date object using Universal Coordinated Time (UTC). | | getTimezoneOffset | () => number | Gets the difference in minutes between the time on the local computer and Universal Coordinated Time (UTC). | | setTime | (time: number) => number | Sets the date and time value in the Date object. | | setMilliseconds | (ms: number) => number | Sets the milliseconds value in the Date object using local time. | | setUTCMilliseconds | (ms: number) => number | Sets the milliseconds value in the Date object using Universal Coordinated Time (UTC). | | setSeconds | (sec: number, ms?: number | undefined) => number | Sets the seconds value in the Date object using local time. | | setUTCSeconds | (sec: number, ms?: number | undefined) => number | Sets the seconds value in the Date object using Universal Coordinated Time (UTC). | | setMinutes | (min: number, sec?: number | undefined, ms?: number | undefined) => number | Sets the minutes value in the Date object using local time. | | setUTCMinutes | (min: number, sec?: number | undefined, ms?: number | undefined) => number | Sets the minutes value in the Date object using Universal Coordinated Time (UTC). | | setHours | (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number | Sets the hour value in the Date object using local time. | | setUTCHours | (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number | Sets the hours value in the Date object using Universal Coordinated Time (UTC). | | setDate | (date: number) => number | Sets the numeric day-of-the-month value of the Date object using local time. | | setUTCDate | (date: number) => number | Sets the numeric day of the month in the Date object using Universal Coordinated Time (UTC). | | setMonth | (month: number, date?: number | undefined) => number | Sets the month value in the Date object using local time. | | setUTCMonth | (month: number, date?: number | undefined) => number | Sets the month value in the Date object using Universal Coordinated Time (UTC). | | setFullYear | (year: number, month?: number | undefined, date?: number | undefined) => number | Sets the year of the Date object using local time. | | setUTCFullYear | (year: number, month?: number | undefined, date?: number | undefined) => number | Sets the year value in the Date object using Universal Coordinated Time (UTC). | | toUTCString | () => string | Returns a date converted to a string using Universal Coordinated Time (UTC). | | toISOString | () => string | Returns a date as a string value in ISO format. | | toJSON | (key?: any) => string | Used by the JSON.stringify method to enable the transformation of an object's data for JavaScript Object Notation (JSON) serialization. |
IntercomAvatar
| Prop | Type |
| --------------- | ------------------- |
| type | string |
| image_url | string |
IntercomCompany
| Prop | Type |
| ----------------------- | ------------------------------------- |
| company_id | string |
| name | string |
| created_at | Date |
| remote_created_at | Date |
| plan | string |
| monthly_spend | number |
| user_count | number |
| size | number |
| website | string |
| industry | string |
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 |
UnreadConversationCount
| Prop | Type |
| ----------- | ------------------- |
| value | string |
PluginListenerHandle
| Prop | Type |
| ------------ | ----------------------------------------- |
| remove | () => Promise<void> |
Type Aliases
UnreadCountChangeListener
(state: UnreadConversationCount): void
License
MIT
Example
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
