ionic-capacitor-tenjin
v2.1.0
Published
Tenjin Ionic Capacitor Plugin
Maintainers
Readme
Ionic Capacitor Tenjin Plugin
Summary
Tenjin's SDK allows users to track events and installs in their iOS apps. To learn more about Tenjin and our product offering, please visit https://www.tenjin.com.
Notes:
On iOS:
For AppTrackingTransparency, be sure to update your project .plist file and add NSUserTrackingUsageDescription along with the text message you want to display to users. This library is only available in iOS 14.0+. For further information on this, you can check our iOS documentation
Table of contents
- Integrate with an AI assistant (LLM)
- Plugin Integration
- Install
- Available methods
- Initialize
- Connect
- OptIn
- OptOut
- OptIn with parameters
- OptOut with parameters
- OptIn and OptOut using CMP
- Opt out of Google DMA parameters
- Opt in of Google DMA parameters
- Register transaction
- Send event with name
- Send event with name and value
- LiveOps Campaigns
- Append app subversion
- Impression Level Revenue Data (ILRD)
- Re-engagement Deeplinks
- Customer User ID
- Analytics Installation ID
- Retry/cache events and IAP
- User Profile - LiveOps Metrics
- Send Google DMA Parameters
- Update SKAN Postback Conversion Value (iOS only)
- Support
Integrate with an AI assistant (LLM)
You can integrate the Tenjin Ionic SDK with the help of an AI assistant (Claude, Cursor, GitHub Copilot, etc.). Paste the following prompt into your assistant of choice:
Add Tenjin SDK to my project using: https://raw.githubusercontent.com/tenjin/sdk-llm-guides/main/guides/ionic/llm-guide.mdThe guide walks the assistant through the complete integration. For more details, see the Tenjin SDK Guides for LLMs.
Plugin Integration
Install
npm install ionic-capacitor-tenjin
npx cap syncImport
import Tenjin from 'ionic-capacitor-tenjin';Available methods
Initialize
You need to initialize the plugin before doing calling any of the other methods available, for this, you would need the api key provided on Tenjin's dashboard:
Tenjin.initialize(sdkKey: string)Connect
Tenjin.connect()OptIn
Tenjin.optIn()OptOut
Tenjin.optOut()OptIn with parameters
Tenjin.optIn(params: string[])OptOut with parameters
Tenjin.optOut(params: string[])OptIn and OptOut using CMP
Tenjin.optInOutUsingCMP()Opt out of Google DMA parameters
Tenjin.optOutGoogleDMA()Opt in of Google DMA parameters
Tenjin.optInGoogleDMA()Register transaction
transaction(productName: string, currencyCode: string, quantity: number, unitPrice: number)Send event with name
Tenjin.eventWithName(name: string)Send event with name and value
Tenjin.eventWithNameAndValue(name: string, value: string)LiveOps Campaigns
Tenjin supports retrieving of attributes, which are required for developers to get analytics installation id (previously known as tenjin reference id). This parameter can be used when there is no advertising id.
Append app subversion
Tenjin.appendAppSubversion(subversion: number)Impression Level Revenue Data (ILRD)
Tenjin supports the ability to integrate with the Impression Level Ad Revenue (ILRD) feature from,
- AppLovin
- Unity LevelPlay
- AdMob
- TopOn
- Clever Ads Solutions (CAS)
- TradPlus
Re-engagement Deeplinks
Report the deeplink your app was opened with, so re-engagement clicks can be attributed to the ad network.
Tenjin.handleOpenUrl({ url })Parameters:
url: string
Forward both the launch link and links received while the app is running:
import { App } from '@capacitor/app';
const launch = await App.getLaunchUrl();
if (launch?.url) Tenjin.handleOpenUrl({ url: launch.url });
App.addListener('appUrlOpen', (event) => Tenjin.handleOpenUrl({ url: event.url }));On iOS this is safe to call before initialize. On Android, opens that start or recreate your activity are captured automatically, so this is only needed for links delivered to an already-running activity.
Customer User ID
Tenjin.setCustomerUserId(userId)Parameters:
userId: string
Tenjin.getCustomerUserId()Returns: string
Analytics Installation ID
Tenjin.getAnalyticsInstallationId()Returns: string
Retry/cache events and IAP
You can enable/disable retrying and caching events and IAP when requests fail or users don't have internet connection. These events will be sent after a new event has been added to the queue and user has recovered connection.
Tenjin.setCacheEventSetting({ setting: true })Parameters:
setting: Boolean
[!IMPORTANT] This setting is stored on the device and persists across app sessions on both iOS and Android. Once a build has enabled it, removing the
setCacheEventSettingcall in a later release will not disable caching for existing users, because the previously stored value stays in effect. To turn it off, explicitly callTenjin.setCacheEventSetting({ setting: false }).
User Profile - LiveOps Metrics
The Tenjin SDK automatically tracks user engagement metrics to help you understand player behavior and lifetime value. These metrics are collected automatically and can be accessed programmatically.
Automatic Tracking
The SDK automatically tracks:
- Session metrics: Session count, duration, first/last session dates
- In-App Purchases (IAP): Transaction count, revenue by currency, purchased product IDs
- Ad Revenue (ILRD): Impression-level revenue from supported ad networks
Get User Profile Dictionary
Retrieve the user profile as a dictionary with all metrics:
const profile = await Tenjin.getUserProfileDictionary();
console.log('Session Count:', profile.session_count);
console.log('Total Session Time (ms):', profile.total_session_time);
console.log('Average Session Length (ms):', profile.average_session_length);
console.log('IAP Transaction Count:', profile.iap_transaction_count);
console.log('Total ILRD Revenue USD:', profile.total_ilrd_revenue_usd);Dictionary Keys (Always Present):
| Key | Type | Description |
|-----|------|-------------|
| session_count | number | Total sessions |
| total_session_time | number | Total time (milliseconds) |
| average_session_length | number | Average session (milliseconds) |
| last_session_length | number | Last session (milliseconds) |
| iap_transaction_count | number | Total IAP count |
| total_ilrd_revenue_usd | number | Total ad revenue USD |
Dictionary Keys (Conditional - only if available):
| Key | Type | Description |
|-----|------|-------------|
| first_session_date | string | ISO8601 formatted date |
| last_session_date | string | ISO8601 formatted date |
| current_session_length | number | Active session duration (milliseconds) |
| iap_revenue_by_currency | object | Map of currency -> revenue |
| purchased_product_ids | array | Sorted array of product IDs |
| ilrd_revenue_by_network | object | Map of network -> revenue |
Reset User Profile
Clear all user profile data (useful for testing or user logout):
Tenjin.resetUserProfile();Send Google DMA Parameters
Tenjin.setGoogleDMAParametersWithAdPersonalization(adPersonalization, adUserData)Parameters:
adPersonalization: BooleanadUserData: Boolean
Update SKAN Postback Conversion Value (iOS only)
Tenjin.updatePostbackConversionValue(conversionValue)Parameters:
conversionValue: number
Tenjin.updatePostbackConversionValueCoarseValue(conversionValue, coarseValue)Parameters:
conversionValue: numbercoarseValue: string
Tenjin.updatePostbackConversionValueCoarseValueLockWindow(conversionValue, coarseValue, lockWindow)Parameters:
conversionValue: numbercoarseValue: stringlockWindow: boolean
Support
If you have any issues with the plugin integration or usage, please contact us to [email protected]
