@types/branch-sdk
Version:
TypeScript definitions for branch-sdk
695 lines (635 loc) • 27.6 kB
TypeScript
export as namespace branch;
export interface InitOptions {
branch_match_id?: string | undefined;
branch_view_id?: string | undefined;
no_journeys?: boolean | undefined;
disable_entry_animation?: boolean | undefined;
disable_exit_animation?: boolean | undefined;
retries?: number | undefined;
retry_delay?: number | undefined;
timeout?: number | undefined;
metadata?: {} | undefined;
nonce?: string | undefined;
tracking_disabled?: boolean | undefined;
}
export interface SessionData {
data_parsed: {};
referring_identity?: string | undefined;
has_app: boolean;
identity: string;
"~referring_link"?: string | undefined;
}
export interface IdentityCallbackData {
identity_id: string;
link: string;
referring_data_parsed?: {} | undefined;
referring_identity?: string | undefined;
}
export type BranchError = string | null;
export type FingerprintResponse = string | null;
export type CustomLinkData = string | number | boolean;
export enum UriRedirectMode {
/**
* This is the default value that yields the standard behavior where we don't try to open the app if the user can see an error.
*/
Default = 0,
/**
* Smart redirect mode. Same behavior as Default until we know the user has the app installed through Branch persona data. In that case, force URI schemes to open the app.
*/
Smart = 1,
/**
* Forceful redirect mode. Always try to force open the app, even if it risks showing an error message when the app is not installed.
*/
Forceful = 2,
}
export interface DeepLinkData {
// Analytical labels
/**
* Use channel to tag the route that your link reaches users. For example, tag links with 'Facebook' or 'LinkedIn' to help track clicks and installs through those paths separately
*/
channel?: string | undefined;
/**
* This is the feature of your app that the link might be associated with. For example, if you had built a referral program, you would label links with the feature 'referral'
*/
feature?: string | undefined;
/**
* Use this field to organize the links by actual campaign. For example, if you launched a new feature or product and want to run a campaign around that
*/
campaign?: string | undefined;
/**
* Use this to categorize the progress or category of a user when the link was generated.
* For example, if you had an invite system accessible on level 1, level 3 and 5, you could differentiate links generated at each level with this parameter.
*/
stage?: string | undefined;
/**
* This is a free form entry with unlimited values ['string']. Use it to organize your link data with labels that don't fit within the bounds of the above
*/
tags?: string[] | undefined;
data?: {
// Attribution windows
/**
* Time between a click or a web to app auto redirect and an install or reinstall.
*/
$click_install_window_days?: number | undefined;
/**
* Time between a click or a web to app auto redirect and an open or web session start.
*/
$click_session_start_window_days?: number | undefined;
/**
* Time between a click or a web to app auto redirect and a conversion event.
* Conversion events include commerce events (e.g. purchase, add to cart), all custom events, and all view events like pageviews & content views.
*/
$click_conversion_window_days?: number | undefined;
/**
* Time between an ad impression and an install or reinstall.
*/
$impression_install_window_days?: number | undefined;
/**
* Time between an ad impression and an open or web session start.
*/
$impression_session_start_window_days?: number | undefined;
/**
* Time between an ad impression and a conversion event.
* Conversion events include commerce events (e.g. purchase, add to cart), all custom events, and all view events like pageviews & content views.
*/
$impression_conversion_window_days?: number | undefined;
// Custom data
[custom_key: string]: any;
// Redirections
/**
* Change the redirect endpoint for all platforms - so you don't have to enable it by platform.
* Note that Branch will forward all robots to this URL, which overrides any OG tags entered in the link.
*/
$fallback_url?: string | undefined;
/**
* Change the redirect endpoint on desktops
*/
$desktop_url?: string | undefined;
/**
* Change the redirect endpoint for iOS App Store page for your app
*/
$ios_url?: string | undefined;
/**
* Change the redirect endpoint for iPads $ios_url value
*/
$ipad_url?: string | undefined;
/**
* Change the redirect endpoint for Android Play Store page for your app
*/
$android_url?: string | undefined;
/**
* Redirect to Samsung Galaxy Store on Samsung devices. Only link level control. Format should be http://www.samsungapps.com/appquery/appDetail.as?appId=YOUR.PACKAGE.NAME
*/
$samsung_url?: string | undefined;
/**
* Change the redirect endpoint for Windows OS Windows Phone default URL
*/
$windows_phone_url?: string | undefined;
/**
* Change the redirect endpoint for Blackberry OS BlackBerry default URL
*/
$blackberry_url?: string | undefined;
/**
* Change the redirect endpoint for Amazon Fire OS Fire default URL
*/
$fire_url?: string | undefined;
/*
* Change the redirect endpoint for WeChat on iOS devices $ios_url value
*/
$ios_wechat_url?: string | undefined;
/**
* Change the redirect endpoint for WeChat on Android devices $android_url value
*/
$android_wechat_url?: string | undefined;
/**
* Force to open the $fallback_url instead of the app
*/
$web_only?: boolean | undefined;
// Forced redirections
/**
* Prevent error messages from other apps when Branch deep links are clicked
*/
$uri_redirect_mode?: UriRedirectMode | undefined;
// Deep linking
/**
* Set the deep link path for all platforms - so you don't have to enable it by platform.
* When the Branch SDK receives a link with this parameter set, it will automatically load the custom URI path contained within
*/
$deeplink_path?: string | undefined;
/**
* Set the deep link path for Android apps. When the Branch SDK receives a link with this parameter set, it will automatically load the custom Android URI path contained within
*/
$android_deeplink_path?: string | undefined;
/**
* Set the deep link path for iOS apps. When the Branch SDK receives a link with this parameter set, it will automatically load the custom iOS URI path contained within
*/
$ios_deeplink_path?: string | undefined;
/**
* Set the deep link path for Desktop apps. You will have to fetch this parameter and route the user accordingly
*/
$desktop_deeplink_path?: string | undefined;
/**
* Lets you control the snapshotting match timeout (the time that a click will wait for an app open to match) also known as attribution window. Specified in seconds
*/
$match_duration?: number | undefined;
/**
* Set to false to make links always fall back to your mobile site. Does not apply to Universal Links or Android App Links.
*/
$always_deeplink?: boolean | undefined;
/**
* Control the timeout that the client-side JS waits after trying to open up the app before redirecting to the App Store. Specified in milliseconds
*/
$ios_redirect_timeout?: number | undefined;
/**
* Control the timeout that the client side JS waits after trying to open up the app before redirecting to the Play Store. Specified in milliseconds
*/
$android_redirect_timeout?: number | undefined;
/**
* Text for SMS link sent for desktop clicks to this link. Must contain {{ link }} Value of Text me the app page in Settings
*/
$custom_sms_text?: string | undefined;
/**
* Set the marketing title for the deep link.
*/
$marketing_title?: string | undefined;
/**
* Set to true for the links to only support deep linking without any attribution for that link.
*/
$deeplink_no_attribution?: boolean | undefined;
/**
* When a user returns to the browser after going to the app, take them to this URL. iOS only; Android coming soon
*/
$after_click_url?: string | undefined;
// Content
/**
* Keywords for which this content should be discovered by. Just assign an array of strings with the keywords you'd like to use
*/
"~keyword"?: string[] | undefined;
/**
* This is the unique identifier for content that will help Branch dedupe across many instances of the same thing.
* Suitable options: a website with pathing, or a database with identifiers for entities
*/
$canonical_identifier?: string | undefined;
/**
* This is a label for the type of content present.
*/
$content_type?: string | undefined;
/**
* This will prevent click tracking and storage of link analytics. Deep link data will still flow into the app from link click to app open.
*/
$do_not_process?: boolean | undefined;
// Deepview
/**
* The name of the deepview template to use for iOS
*/
$ios_deepview?: string | undefined;
/**
* The name of the deepview template to use for Android
*/
$android_deepview?: string | undefined;
/**
* The name of the deepview template to use for the Desktop
*/
$desktop_deepview?: string | undefined;
/**
* The name of the template to use for iOS.
*/
$ios_passive_deepview?: string | undefined;
/**
* The name of the template to use for Android.
*/
$android_passive_deepview?: string | undefined;
// Link appearance
/**
* Specify a link alias to replace of the standard encoded short URL (e.g. https://example.app.link/aQXXDHaxKF -> https://example.app.link/october-campaign).
* Link aliases must be unique per app (a 409 error will occur if you create an alias already taken)
*/
alias?: string | undefined;
// Open Graph
/**
* Set the title of the link as it will be seen in social media displays
*/
$og_title?: string | undefined;
/**
* Set the description of the link as it will be seen in social media displays
*/
$og_description?: string | undefined;
/**
* Set the image of the link as it will be seen in social media displays
*/
$og_image_url?: string | undefined;
/**
* Set the image's width in pixels for social media displays
*/
$og_image_width?: number | undefined;
/**
* Set the image's height in pixels for social media displays
*/
$og_image_height?: number | undefined;
/**
* Set a video as it will be seen in social media displays
*/
$og_video?: string | undefined;
/**
* Set the base URL of the link as it will be seen in social media displays
*/
$og_url?: string | undefined;
/**
* Set the type of custom card format link as it will be seen in social media displays. Don't set this property when sharing deep links on Facebook
*/
$og_type?: string | undefined;
/**
* (Advanced, not recommended) Set a custom URL that we redirect the social media robots to in order to retrieve all the appropriate tags
*/
$og_redirect?: string | undefined;
/**
* (Rarely used) Sets the app id tag
*/
$og_app_id?: string | undefined;
// Twitter
/**
* Set the Twitter card type of the link (e.g. player) (you must whitelist your deep link with the Twitter Card Validator)
*/
$twitter_card?: string | undefined;
/**
* Set the title of the Twitter card
*/
$twitter_title?: string | undefined;
/**
* Set the description of the Twitter card
*/
$twitter_description?: string | undefined;
/**
* Set the image URL for the Twitter card
*/
twitter_image_url?: string | undefined;
/**
* Set the site for Twitter
*/
$twitter_site?: string | undefined;
/**
* Set the app country for the app card
*/
$twitter_app_country?: string | undefined;
/**
* Set the video player's URL. Defaults to the value of $og_video.
*/
$twitter_player?: string | undefined;
/**
* Set the player's width in pixels
*/
$twitter_player_width?: number | undefined;
/**
* Set the player's height in pixels
*/
$twitter_player_height?: number | undefined;
// Custom Tags
/**
* Valid stringified JSON dictionary of the tags’ keys and values
*/
$custom_meta_tags?: string | undefined;
} | undefined;
}
export interface DeepViewOptions {
make_new_link?: boolean | undefined;
open_app?: boolean | undefined;
}
export interface CreditHistoryOptions {
bucket?: string | undefined;
begin_after_id?: string | undefined;
length?: number | undefined;
}
export interface CreditHistoryTransaction {
transaction: {
date: string;
id: string;
bucket: string;
type: number;
amount: number;
};
referrer: string;
referree: string;
}
export type CreditHistoryCallbackResponse = readonly CreditHistoryTransaction[] | null;
export interface AutoAppIndexData {
androidPackageName?: string | undefined;
androidURL?: string | undefined;
iosAppId?: string | undefined;
iosURL?: string | undefined;
data?: { [custom_key: string]: CustomLinkData } | undefined;
}
export enum JourneyEvent {
willShowJourney = "willShowJourney",
didShowJourney = "didShowJourney",
willNotShowJourney = "willNotShowJourney",
didClickJourneyCTA = "didClickJourneyCTA",
didClickJourneyClose = "didClickJourneyClose",
willCloseJourney = "willCloseJourney",
didCloseJourney = "didCloseJourney",
didCallJourneyClose = "didCallJourneyClose",
}
/**
* `Branch.init` must be called prior to calling any other Branch functions.
*
* @param branch_key Your Branch live key, or (deprecated) your app id.
* @param [options]
* @param [callback] callback to read the session data.
*/
export function init(
branch_key: string,
options?: InitOptions,
callback?: (err: BranchError, data: SessionData | null) => void,
): void;
/**
* Returns the same session information and any referring data, as
* `Branch.init`, but does not require the `app_id`. This is meant to be called
* after `Branch.init` has been called if you need the session information at a
* later point.
* If the Branch session has already been initialized, the callback will return
* immediately, otherwise, it will return once Branch has been initialized.
*
* @param [callback]
*/
export function data(callback?: (err: BranchError, data: SessionData | null) => void): void;
/**
* Returns the same session information and any referring data, as
* `Branch.init` did when the app was first installed. This is meant to be called
* after `Branch.init` has been called if you need the first session information at a
* later point.
* If the Branch session has already been initialized, the callback will return
* immediately, otherwise, it will return once Branch has been initialized.
*
* @param [callback]
*/
export function first(callback?: (err: BranchError, data: SessionData | null) => void): void;
/**
* Sets the identity of a user and returns the data. To use this function, pass
* a unique string that identifies the user - this could be an email address,
* UUID, Facebook ID, etc.
*
* @param identity a string uniquely identifying the user - often a user ID or email address.
* @param [callback] callback that returns the user's Branch identity id and unique link.
*/
export function setIdentity(
identity: string,
callback?: (err: BranchError, data: IdentityCallbackData | null) => void,
): void;
/**
* Logs out the current session, replaces session IDs and identity IDs.
*
* @param [callback]
*/
export function logout(callback?: (err: BranchError) => void): void;
/**
* Returns the current user's browser-fingerprint-id. If tracking is disabled then `null` is returned.
*
* @param callback callback to read a user's browser-fingerprint-id
*/
export function getBrowserFingerprintId(
callback: (err: BranchError, browser_fingerprint: FingerprintResponse) => void,
): void;
/**
* Returns CPIDs for current user.
*
* @param callback callback to read CPIDs
*/
export function crossPlatformIds(callback: (err: BranchError, data: any) => void): void;
/**
* Returns last attributed touch data for current user. Last attributed touch data has the information associated with that user's last viewed impression or clicked link.
*
* @param attribution_window the number of days to look up attribution data for
* @param [callback] callback to read last attributed touch data
*/
export function lastAttributedTouchData(
attribution_window: number,
callback?: (err: BranchError, data: any) => void,
): void;
/**
* This function allows you to track any event with supporting metadata.
* The `metadata` parameter is a formatted JSON object that can contain
* any data and has limitless hierarchy
*
* @param event name of the event to be tracked
* @param [metadata] object of event metadata
* @param [callback]
*/
export function track(event: string, metadata?: {}, callback?: (err: BranchError) => void): void;
/**
* Register commerce events, content events, user lifecycle events and custom events via `logEvent()`
*
* @param event
* @param [event_data_and_custom_data]
* @param [content_items]
* @param [customer_event_alias]
* @param [callback]
*/
export function logEvent(
event: string,
event_data_and_custom_data?: {},
content_items?: Array<{}>,
customer_event_alias?: string,
callback?: (err: BranchError) => void,
): void;
/**
* Creates and returns a deep linking URL. The `data` parameter can include an
* object with optional data you would like to store, including Facebook Open Graph data.
*
* @param link_data link data and metadata.
* @param callback returns a string of the Branch deep linking URL.
*/
export function link(link_data: DeepLinkData, callback: (err: BranchError, link: string | null) => void): void;
/**
* A robust function to give your users the ability to share links via SMS. If
* the user navigated to this page via a Branch link, `sendSMS` will send that
* same link. Otherwise, it will create a new link with the data provided in
* the `params` argument. `sendSMS` also registers a click event with the
* `channel` pre-filled with `'sms'` before sending an sms to the provided
* `phone` parameter. This way the entire link click event is recorded starting
* with the user sending an sms.
*
* @param phone phone number to send SMS to
* @param link_data object of link data
* @param [options] options: `make_new_link`, which forces the creation of a new link even if one already exists
* @param [callback] Returns an error if unsuccessful
*/
export function sendSMS(
phone: string,
link_data: DeepLinkData,
options?: { make_new_link?: boolean | undefined },
callback?: (err: BranchError) => void,
): void;
/**
* Turns the current page into a "deepview" – a preview of app content. This gives the page two
* special behaviors: (1) when the page is viewed on a mobile browser, if the user has the app
* installed on their phone, we will try to open the app automaticaly and deeplink them to this
* content (this can be toggled off by turning open_app to false, but this is not recommended),
* and (2) provides a callback to open the app directly, accessible as `branch.deepviewCta();`
* you'll want to have a button on your web page that says something like "View in app", which
* calls this function.
*
* @param deepview_data object of all link data, same as branch.link().
* @param [options] make_new_link: whether to create a new link even if one already exists.
* open_app, whether to try to open the app passively (as opposed to opening it upon user clicking); defaults to true
* @param [callback] returns an error if the API call is unsuccessful
*/
export function deepview(
deepview_data: DeepLinkData,
options?: DeepViewOptions,
callback?: (err: BranchError) => void,
): void;
/**
* Perform the branch deepview CTA (call to action) on mobile after `branch.deepview()` call is
* finished. If the `branch.deepview()` call is finished with no error, when `branch.deepviewCta()` is called,
* an attempt is made to open the app and deeplink the end user into it; if the end user does not
* have the app installed, they will be redirected to the platform-appropriate app stores. If on the
* other hand, `branch.deepview()` returns with an error, `branch.deepviewCta()` will fall back to
* redirect the user using
* Branch dynamic links.
*
* If `branch.deepview()` has not been called, an error will arise with a reminder to call
* `branch.deepview()` first.
*/
export function deepviewCta(): void;
/**
* This call will retrieve the entire history of credits and redemptions from the individual user.
*
* @param callback returns an object with credit data.
*/
export function credits(callback: (err: BranchError, data: Record<string, number>) => void): void;
/**
* This call will retrieve the entire history of credits and redemptions from the individual user.
*
* @param options options controlling the returned history
* @param callback returns an array with credit history
*/
export function creditHistory(
options: CreditHistoryOptions,
callback: (err: BranchError, data: CreditHistoryCallbackResponse) => void,
): void;
/**
* Credits are stored in `buckets`, which you can define as points, currency, whatever makes sense
* for your app. When you want to redeem credits, call this method with the number of points to be
* redeemed, and the bucket to redeem them from.
*
* @param amount an `amount` (int) of number of credits to redeem
* @param bucket the name of the `bucket` (string) of which bucket to redeem the credits from
* @param [callback]
*/
export function redeem(amount: number, bucket: string, callback?: (err: BranchError) => void): void;
/**
* The Branch Web SDK includes a simple event listener, that currently only publishes events for Journeys events.
*
* @param event Specify which events you would like to listen for. If not defined, the observer will recieve all events.
* @param listener Listening function that will recieves an event as a string and optional data as an object.
*/
export function addListener(event: JourneyEvent | undefined, listener: (event: JourneyEvent, data: {}) => void): void;
/**
* Remove the listener from observations, if it is present. Not that this function must be
* passed a referrence to the same function that was passed to `branch.addListener()`, not
* just an identical clone of the function.
*
* @param listener Reference to the listening function you
* would like to remove. note: this must be the same reference that was passed to
* `branch.addListener()`, not an identical clone of the function.
*/
export function removeListener(listener: (event: JourneyEvent, data: {}) => void): void;
/**
* This function lets you set the deep link data dynamically for a given mobile web Journey. For
* example, if you desgin a full page interstitial, and want the deep link data to be custom for each
* page, you'd need to use this function to dynamically set the deep link params on page load. Then,
* any Journey loaded on that page will inherit these deep link params.
*
* @param view_data object of all link data, same as Branch.link()
*/
export function setBranchViewData(view_data: DeepLinkData): void;
/**
* Journeys include a close button the user can click, but you may want to close the
* Journey with a timeout, or via some other user interaction with your web app. In this case,
* closing the Journey is very simple by calling `Branch.closeJourney()`.
*
* @param [callback]
*/
export function closeJourney(callback?: (err: BranchError) => void): void;
/**
* This function generates and inserts Firebase App Indexing tags between the `<head></head>` section of your webpage.
* Once inserted, these tags will help Google index and surface content from your App in Google Search.
*
* Note: If optional parameters above are not specified, Branch will try to build Firebase App Indexing tags using your page's App Links tags.
*
* @param data Information on how to build your App Indexing tags for your webpage
* @param [callback] Returns an error string if unsuccessful
*/
export function autoAppIndex(data: AutoAppIndexData, callback?: (err: BranchError) => void): void;
/**
* Sends a user commerce event to the server
*
* Use commerce events to track when a user purchases an item in your online store,
* makes an in-app purchase, or buys a subscription. The commerce events are tracked in
* the Branch dashboard along with your other events so you can judge the effectiveness of
* campaigns and other analytics.
*
* @param event Name of the commerce event to be tracked. We currently support 'purchase' events
* @param commerce_data Data that describes the commerce event
* @param [metadata] metadata you may want add to the event
* @param [callback] Returns an error if unsuccessful
*/
export function trackCommerceEvent(
event: "purchase",
commerce_data: {},
metadata?: {},
callback?: (err: BranchError) => void,
): void;
/**
* Allows User to Remain Private
*
* This will prevent any Branch requests from being sent across the network, except for the case of deep linking.
* If someone clicks a Branch link, but has expressed not to be tracked, we will return deep linking data back to the
* client but without tracking information.
*
* In do-not-track mode, you will still be able to create links and display Journeys however, they will not have identifiable
* information associated to them. You can change this behavior at any time, by calling the aforementioned function.
* The do-not-track mode state is persistent: it is saved for the user across browser sessions for the web site.
*
* @param [disable] true disables tracking and false re-enables tracking.
*/
export function disableTracking(disable?: boolean): void;