import { Injectable } from '@angular/core'; import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core'; export interface BranchIoPromise { $identity_id?: number; $one_time_use?: boolean; '+click_timestamp'?: number; '+clicked_branch_link'?: boolean; '+is_first_session'?: boolean; '+match_guaranteed'?: boolean; contentMetadata?: string; source?: string; '~campaign'?: string; '~channel'?: string; '~creation_source'?: string; '~feature'?: string; '~id'?: number; '~referring_link:'?: string; [x: string]: any; } export interface BranchIoAnalytics { channel?: string; feature?: string; campaign?: string; stage?: string; tags?: string[]; [x: string]: any; } export interface BranchIoProperties { contentMetadata?: { [x: string]: any; }; [x: string]: any; } export interface BranchUniversalObject { generateShortUrl(analytics: BranchIoAnalytics, properties: BranchIoProperties): Promise<any>; registerView(): Promise<any>; showShareSheet(analytics: BranchIoAnalytics, properties: BranchIoProperties, shareText: string): Promise<any>; onShareSheetLaunched(callback: any): void; onShareSheetDismissed(callback: any): void; onLinkShareResponse(callback: any): void; onChannelSelected(callback: any): void; listOnSpotlight(): Promise<any>; } /** * @name BranchIo * @description * Branch.io is an attribution service for deeplinking and invitation links * * @usage * ``` * import { BranchIo } from '@ionic-native/branch-io/ngx'; * * * constructor(private branch: BranchIo) { } * * ``` * * @interfaces * BranchIoPromise * BranchIoAnalytics * BranchIoProperties * BranchUniversalObject * */ @Plugin({ pluginName: 'BranchIo', plugin: 'branch-cordova-sdk', pluginRef: 'Branch', repo: 'https://github.com/BranchMetrics/cordova-ionic-phonegap-branch-deep-linking', platforms: ['iOS', 'Android'], }) @Injectable() export class BranchIo extends IonicNativePlugin { /** * for development and debugging only * @param {boolean} enable Enable debug * @return {Promise<any>} */ @Cordova({ otherPromise: true }) setDebug(enable: boolean): Promise<any> { return; } /** * Disable tracking * @param {boolean} disable disable tracking * @return {Promise<any>} */ @Cordova({ otherPromise: true }) disableTracking(disable: boolean): Promise<any> { return; } /** * Initializes Branch * @return {Promise<any>} */ @Cordova({ otherPromise: true }) initSession(): Promise<BranchIoPromise> { return; } /** * Set Request Metadata * @return {Promise<any>} */ @Cordova({ otherPromise: true }) setRequestMetadata(): Promise<any> { return; } /** * for better Android matching * @param {string} linkDomain LinkDomain at branch * @return {Promise<any>} */ @Cordova({ otherPromise: true }) setCookieBasedMatching(linkDomain: string): Promise<any> { return; } /** * First data * @return {Promise<any>} */ @Cordova({ otherPromise: true }) getFirstReferringParams(): Promise<any> { return; } /** * Latest data * @return {Promise<any>} */ @Cordova({ otherPromise: true }) getLatestReferringParams(): Promise<any> { return; } /** * Set identy of user * @param {string} userId * @return {Promise<any>} */ @Cordova({ otherPromise: true }) setIdentity(userId: string): Promise<any> { return; } /** * Logout user * @return {Promise<any>} */ @Cordova({ otherPromise: true }) logout(): Promise<any> { return; } /** * Registers a custom event * @param {string} eventName * @param {any} metaData * @return {Promise<any>} */ @Cordova({ otherPromise: true }) userCompletedAction(eventName: string, metaData: any): Promise<any> { return; } /** * Send Commerce Event * @param {string} event * @param {any} metaData * @return {Promise<any>} */ @Cordova({ otherPromise: true }) sendCommerceEvent(event: string, metaData: any): Promise<any> { return; } /** * create a branchUniversalObj variable to reference with other Branch methods * @param {BranchIoProperties} properties * @return {Promise<BranchUniversalObject>} */ @Cordova({ otherPromise: true }) createBranchUniversalObject(properties: BranchIoProperties): Promise<BranchUniversalObject> { return; } /** * Load credits * @param {any} bucket * @return {Promise<any>} */ @Cordova({ otherPromise: true }) loadRewards(bucket: any): Promise<any> { return; } /** * Redeem Rewards * @param {string} value * @param {any} bucket * @return {Promise<any>} */ @Cordova({ otherPromise: true }) redeemRewards(value: string, bucket: any): Promise<any> { return; } /** * Show credit history * @return {Promise<any>} */ @Cordova({ otherPromise: true }) creditHistory(): Promise<any> { return; } }