@houseninja/capacitor-intercom v4.3.0
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: 'test@example.com', // you can set user details on boot:
userId: '1234', // see https://developers.intercom.com/installing-intercom/docs/intercom-javascript#intercomboot-intercomsettings
});
Intercom.registerIdentifiedUser({
email: 'test@example.com', // 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!
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago