Compare commits

..
Author SHA1 Message Date
Daniel Sogl 9639a447cf feat(branch-io): sync wrapper with branch-cordova-sdk v6.6.1 API
Add missing methods (enableTestMode, setLogging, getStandardEvents,
crossPlatformIds, lastAttributedTouchData, getBranchQRCode,
setDMAParamsForEEA, setConsumerProtectionAttributionLevel,
setSDKWaitTimeForThirdPartyAPIs, setAnonID, setODMInfo), fix
setRequestMetadata's signature (now requires key/val), and mark
methods removed upstream (setDebug, userCompletedAction, loadRewards,
redeemRewards, creditHistory, initSessionWithCallback) as
@deprecated.
2026-07-27 22:19:11 +02:00
2 changed files with 199 additions and 197 deletions
@@ -36,6 +36,40 @@ export interface BranchIoProperties {
[x: string]: any;
}
export interface BranchIoQRCodeSettings {
codeColor?: string;
backgroundColor?: string;
centerLogo?: string;
width?: number;
margin?: number;
imageFormat?: 'PNG' | 'JPEG';
[x: string]: any;
}
export interface BranchIoStandardEvents {
STANDARD_EVENT_ADD_TO_CART: string;
STANDARD_EVENT_ADD_TO_WISHLIST: string;
STANDARD_EVENT_VIEW_CART: string;
STANDARD_EVENT_INITIATE_PURCHASE: string;
STANDARD_EVENT_ADD_PAYMENT_INFO: string;
STANDARD_EVENT_PURCHASE: string;
STANDARD_EVENT_SEARCH: string;
STANDARD_EVENT_VIEW_ITEM: string;
STANDARD_EVENT_VIEW_ITEMS: string;
STANDARD_EVENT_RATE: string;
STANDARD_EVENT_SHARE: string;
STANDARD_EVENT_INITIATE_STREAM: string;
STANDARD_EVENT_COMPLETE_STREAM: string;
STANDARD_EVENT_COMPLETE_REGISTRATION: string;
STANDARD_EVENT_COMPLETE_TUTORIAL: string;
STANDARD_EVENT_ACHIEVE_LEVEL: string;
STANDARD_EVENT_UNLOCK_ACHIEVEMENT: string;
STANDARD_EVENT_INVITE: string;
STANDARD_EVENT_LOGIN: string;
STANDARD_EVENT_SUBSCRIBE: string;
STANDARD_EVENT_START_TRIAL: string;
}
export interface BranchUniversalObject {
generateShortUrl(analytics: BranchIoAnalytics, properties: BranchIoProperties): Promise<any>;
registerView(): Promise<any>;
@@ -63,6 +97,8 @@ export interface BranchUniversalObject {
* BranchIoPromise
* BranchIoAnalytics
* BranchIoProperties
* BranchIoQRCodeSettings
* BranchIoStandardEvents
* BranchUniversalObject
*/
@Plugin({
@@ -77,6 +113,7 @@ export class BranchIo extends AwesomeCordovaNativePlugin {
/**
* for development and debugging only
*
* @deprecated since branch-cordova-sdk v6.1.0. Use setLogging instead.
* @param {boolean} enable Enable debug
* @returns {Promise<any>}
*/
@@ -85,6 +122,27 @@ export class BranchIo extends AwesomeCordovaNativePlugin {
return;
}
/**
* Enables debug logging in the native layer. Must be called before initSession.
*
* @param {boolean} enable Enable logging
* @returns {Promise<any>}
*/
@Cordova({ otherPromise: true })
setLogging(enable: boolean): Promise<any> {
return;
}
/**
* Enables test mode. Must be called before initSession.
*
* @returns {Promise<any>}
*/
@Cordova({ otherPromise: true })
enableTestMode(): Promise<any> {
return;
}
/**
* Disable tracking
*
@@ -109,6 +167,7 @@ export class BranchIo extends AwesomeCordovaNativePlugin {
/**
* Initializes Branch with callback
*
* @deprecated not present in branch-cordova-sdk (absent since at least v3.4.0, still absent in v6.6.1). Use initSession instead.
* @returns {Observable<any>}
*/
@Cordova({ observable: true })
@@ -119,10 +178,12 @@ export class BranchIo extends AwesomeCordovaNativePlugin {
/**
* Set Request Metadata
*
* @param {string} key
* @param {string} val
* @returns {Promise<any>}
*/
@Cordova({ otherPromise: true })
setRequestMetadata(): Promise<any> {
setRequestMetadata(key: string, val: string): Promise<any> {
return;
}
@@ -157,6 +218,26 @@ export class BranchIo extends AwesomeCordovaNativePlugin {
return;
}
/**
* Get the cross platform and developer identity data most recently set
*
* @returns {Promise<any>}
*/
@Cordova({ otherPromise: true })
crossPlatformIds(): Promise<any> {
return;
}
/**
* Get the last attributed touch data
*
* @returns {Promise<any>}
*/
@Cordova({ otherPromise: true })
lastAttributedTouchData(): Promise<any> {
return;
}
/**
* Set identy of user
*
@@ -181,6 +262,7 @@ export class BranchIo extends AwesomeCordovaNativePlugin {
/**
* Registers a custom event
*
* @deprecated since branch-cordova-sdk v5.0.0. Use sendBranchEvent instead.
* @param {string} eventName
* @param {any} metaData
* @returns {Promise<any>}
@@ -215,6 +297,16 @@ export class BranchIo extends AwesomeCordovaNativePlugin {
return;
}
/**
* Get the map of Branch standard event names
*
* @returns {Promise<BranchIoStandardEvents>}
*/
@Cordova({ otherPromise: true })
getStandardEvents(): Promise<BranchIoStandardEvents> {
return;
}
/**
* create a branchUniversalObj variable to reference with other Branch methods
*
@@ -226,9 +318,29 @@ export class BranchIo extends AwesomeCordovaNativePlugin {
return;
}
/**
* Generate a Branch QR code as a base64 encoded image
*
* @param {BranchIoQRCodeSettings} qrCodeSettings
* @param {BranchUniversalObject} branchUniversalObject
* @param {BranchIoAnalytics} analytics
* @param {BranchIoProperties} properties
* @returns {Promise<string>}
*/
@Cordova({ otherPromise: true })
getBranchQRCode(
qrCodeSettings: BranchIoQRCodeSettings,
branchUniversalObject: BranchUniversalObject,
analytics: BranchIoAnalytics,
properties: BranchIoProperties
): Promise<string> {
return;
}
/**
* Load credits
*
* @deprecated since branch-cordova-sdk v5.0.0. Branch's Rewards/Credits feature was removed upstream.
* @param {any} bucket
* @returns {Promise<any>}
*/
@@ -240,6 +352,7 @@ export class BranchIo extends AwesomeCordovaNativePlugin {
/**
* Redeem Rewards
*
* @deprecated since branch-cordova-sdk v5.0.0. Branch's Rewards/Credits feature was removed upstream.
* @param {string} value
* @param {any} bucket
* @returns {Promise<any>}
@@ -252,10 +365,73 @@ export class BranchIo extends AwesomeCordovaNativePlugin {
/**
* Show credit history
*
* @deprecated since branch-cordova-sdk v5.0.0. Branch's Rewards/Credits feature was removed upstream.
* @returns {Promise<any>}
*/
@Cordova({ otherPromise: true })
creditHistory(): Promise<any> {
return;
}
/**
* Sets Digital Markets Act (DMA) consent parameters for users in the European Economic Area
*
* @param {boolean} eeaRegion whether the user is in the EEA
* @param {boolean} adPersonalizationConsent whether the user has consented to ad personalization
* @param {boolean} adUserDataUsageConsent whether the user has consented to ad user data usage
* @returns {Promise<any>}
*/
@Cordova({ otherPromise: true })
setDMAParamsForEEA(
eeaRegion: boolean,
adPersonalizationConsent: boolean,
adUserDataUsageConsent: boolean
): Promise<any> {
return;
}
/**
* Sets the Consumer Protection Attribution (CPP) level
*
* @param {string} level one of 'FULL', 'REDUCED', 'MINIMAL', 'NONE'
* @returns {Promise<any>}
*/
@Cordova({ otherPromise: true })
setConsumerProtectionAttributionLevel(level: string): Promise<any> {
return;
}
/**
* Sets the SDK wait time, in seconds, for third party API responses (Google On Device Measurement). iOS only.
*
* @param {number} waitTime
* @returns {Promise<any>}
*/
@Cordova({ otherPromise: true, platforms: ['iOS'] })
setSDKWaitTimeForThirdPartyAPIs(waitTime: number): Promise<any> {
return;
}
/**
* Sets a custom Meta anonymous ID for the current user. iOS only.
*
* @param {string} anonID
* @returns {Promise<any>}
*/
@Cordova({ otherPromise: true, platforms: ['iOS'] })
setAnonID(anonID: string): Promise<any> {
return;
}
/**
* Passes Google On Device Measurement (ODM) event data and the app's first-open timestamp. iOS only.
*
* @param {string} odmInfo
* @param {number} firstOpenTimeStamp
* @returns {Promise<any>}
*/
@Cordova({ otherPromise: true, platforms: ['iOS'] })
setODMInfo(odmInfo: string, firstOpenTimeStamp: number): Promise<any> {
return;
}
}
@@ -32,13 +32,6 @@ import { Cordova, CordovaProperty, AwesomeCordovaNativePlugin, Plugin } from '@a
*
* ```
*/
export interface DiagnosticLocalNetworkAuthorizationOptions {
/**
* Override the default fallback timeout (2000ms) before treating a slow response as indeterminate (`UNKNOWN`).
*/
timeoutMs?: number;
}
@Plugin({
pluginName: 'Diagnostic',
plugin: 'cordova.plugins.diagnostic',
@@ -53,7 +46,6 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
ACCESS_BACKGROUND_LOCATION: 'ACCESS_BACKGROUND_LOCATION',
ACCESS_COARSE_LOCATION: 'ACCESS_COARSE_LOCATION',
ACCESS_FINE_LOCATION: 'ACCESS_FINE_LOCATION',
ACCESS_LOCAL_NETWORK: 'ACCESS_LOCAL_NETWORK',
ACCESS_MEDIA_LOCATION: 'ACCESS_MEDIA_LOCATION',
ACTIVITY_RECOGNITION: 'ACTIVITY_RECOGNITION',
ADD_VOICEMAIL: 'ADD_VOICEMAIL',
@@ -69,7 +61,6 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
NEARBY_WIFI_DEVICES: 'NEARBY_WIFI_DEVICES',
POST_NOTIFICATIONS: 'POST_NOTIFICATIONS',
PROCESS_OUTGOING_CALLS: 'PROCESS_OUTGOING_CALLS',
RANGING: 'RANGING',
READ_CALENDAR: 'READ_CALENDAR',
READ_CALL_LOG: 'READ_CALL_LOG',
READ_CONTACTS: 'READ_CONTACTS',
@@ -77,7 +68,6 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
READ_MEDIA_AUDIO: 'READ_MEDIA_AUDIO',
READ_MEDIA_IMAGES: 'READ_MEDIA_IMAGES',
READ_MEDIA_VIDEO: 'READ_MEDIA_VIDEO',
READ_MEDIA_VISUAL_USER_SELECTED: 'READ_MEDIA_VISUAL_USER_SELECTED',
READ_PHONE_NUMBERS: 'READ_PHONE_NUMBERS',
READ_PHONE_STATE: 'READ_PHONE_STATE',
READ_SMS: 'READ_SMS',
@@ -109,11 +99,6 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
EPHEMERAL: string;
PROVISIONAL: string;
LIMITED: string;
/**
* Returned when the underlying OS has not yet provided a concrete status (for example, if an iOS
* Local Network probe timed out). Treat this as a transient state and retry before surfacing a denial to the user.
*/
UNKNOWN: string;
};
locationAuthorizationMode = {
@@ -125,22 +110,8 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
* Location accuracy authorization
*/
locationAccuracyAuthorization = {
/** Alias for BEST. On iOS, sets `kCLLocationAccuracyBest`. */
FULL: 'full',
/** On iOS, sets `kCLLocationAccuracyReduced` - approximate location, no GPS. */
REDUCED: 'reduced',
/** On iOS, sets `kCLLocationAccuracyBest`. May engage GPS hardware. */
BEST: 'best',
/** On iOS, sets `kCLLocationAccuracyBestForNavigation`. Highest accuracy using additional sensor data. */
BEST_FOR_NAVIGATION: 'bestForNavigation',
/** On iOS, sets `kCLLocationAccuracyNearestTenMeters`. */
NEAREST_TEN_METERS: 'nearestTenMeters',
/** On iOS, sets `kCLLocationAccuracyHundredMeters`. */
HUNDRED_METERS: 'hundredMeters',
/** On iOS, sets `kCLLocationAccuracyKilometer`. */
KILOMETER: 'kilometer',
/** On iOS, sets `kCLLocationAccuracyThreeKilometers`. */
THREE_KILOMETERS: 'threeKilometers',
};
permissionGroups = {
@@ -161,7 +132,7 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
SENSORS: ['BODY_SENSORS'],
SMS: ['SEND_SMS', 'RECEIVE_SMS', 'READ_SMS', 'RECEIVE_WAP_PUSH', 'RECEIVE_MMS'],
STORAGE: ['READ_EXTERNAL_STORAGE', 'WRITE_EXTERNAL_STORAGE'],
NEARBY_DEVICES: ['BLUETOOTH_ADVERTISE', 'BLUETOOTH_SCAN', 'BLUETOOTH_CONNECT'],
NEARBY_DEVICES: ["BLUETOOTH_ADVERTISE", "BLUETOOTH_SCAN", "BLUETOOTH_CONNECT"],
};
locationMode = {
@@ -193,21 +164,21 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
@CordovaProperty()
cpuArchitecture: {
MIPS: string;
MIPS_64: string;
UNKNOWN: string;
ARMv6: string;
ARMv7: string;
ARMv8: string;
X86: string;
X86_64: string;
MIPS: string;
MIPS_64: string;
UNKNOWN: string;
ARMv6: string;
ARMv7: string;
ARMv8: string;
X86: string;
X86_64: string;
};
@CordovaProperty()
remoteNotificationType: {
ALERT: string;
SOUND: string;
BADGE: string;
ALERT: string;
SOUND: string;
BADGE: string;
};
@CordovaProperty()
@@ -336,6 +307,7 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
return;
}
// ANDROID AND IOS ONLY
/**
@@ -388,6 +360,7 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
return;
}
/**
* Returns the location authorization status for the application.
* Note for Android: this is intended for Android 6 / API 23 and above. Calling on Android 5 / API 22 and below will always return GRANTED status as permissions are already granted at installation time.
@@ -605,7 +578,7 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
@Cordova({ platforms: ['Android', 'iOS'] })
getArchitecture(): Promise<any> {
return;
}
}
/**
* Returns the current battery level of the device as a percentage.
@@ -615,62 +588,7 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
@Cordova({ platforms: ['Android', 'iOS'] })
getCurrentBatteryLevel(): Promise<any> {
return;
}
/**
* Checks if low power mode is currently enabled on the device.
*
* @returns {Promise<boolean>}
*/
@Cordova({ platforms: ['Android', 'iOS'] })
isLowPowerModeEnabled(): Promise<boolean> {
return;
}
/**
* Registers a function to be called whenever the device low power mode status changes.
*
* @param {Function} handler
*/
@Cordova({ platforms: ['Android', 'iOS'], sync: true })
onLowPowerModeChange(handler: Function): void {}
/**
* Checks if currently running app build is a debug build.
*
* @returns {Promise<boolean>}
*/
@Cordova({ platforms: ['Android', 'iOS'] })
isDebugBuild(): Promise<boolean> {
return;
}
/**
* Checks if Accessibility Mode (Talkback on Android, VoiceOver on iOS) is currently enabled on the device.
*
* @returns {Promise<boolean>}
*/
@Cordova({ platforms: ['Android', 'iOS'] })
isAccessibilityModeEnabled(): Promise<boolean> {
return;
}
/**
* Checks if app is able to access device heading.
*
* @returns {Promise<boolean>}
*/
@Cordova({ platforms: ['Android', 'iOS'] })
isCompassAvailable(): Promise<boolean> {
return;
}
/**
* Opens notification settings for your app.
* On Android versions lower than O and on iOS versions lower than 15.4, this will open the same page as `switchToSettings()`.
*/
@Cordova({ platforms: ['Android', 'iOS'], sync: true })
switchToNotificationSettings(): void {}
}
// ANDROID ONLY
@@ -687,6 +605,7 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
return;
}
/**
* Checks if high-accuracy locations are available to the app from GPS hardware.
* Returns true if Location mode is enabled and is set to "Device only" or "High accuracy" AND if the app is authorized to use location.
@@ -745,7 +664,7 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
return;
}
/**
/**
* Checks if mobile data is enabled on device.
*
* @returns {Promise<any>}
@@ -755,37 +674,6 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
return;
}
/**
* Checks if the app is currently ignoring battery optimizations.
*
* @returns {Promise<boolean>}
*/
@Cordova({ platforms: ['Android'] })
isIgnoringBatteryOptimizations(): Promise<boolean> {
return;
}
/**
* Prompts the user to allow the app to ignore battery optimizations.
* Requires permission `<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />`
*
* @returns {Promise<any>}
*/
@Cordova({ platforms: ['Android'] })
requestIgnoreBatteryOptimizations(): Promise<any> {
return;
}
/**
* Checks if touch exploration (in accessibility mode) is currently enabled on the device.
*
* @returns {Promise<boolean>}
*/
@Cordova({ platforms: ['Android'] })
isTouchExplorationEnabled(): Promise<boolean> {
return;
}
/**
* Returns the current location mode setting for the device.
*
@@ -801,7 +689,7 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
*
* @returns {Promise<any>}
*/
@Cordova({ platforms: ['Android', 'iOS'] })
@Cordova({ platforms: ['Android'] })
getDeviceOSVersion(): Promise<any> {
return;
}
@@ -811,7 +699,7 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
*
* @returns {Promise<any>}
*/
@Cordova({ platforms: ['Android', 'iOS'] })
@Cordova({ platforms: ['Android'] })
getBuildOSVersion(): Promise<any> {
return;
}
@@ -938,7 +826,7 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
getBluetoothAuthorizationStatus(): Promise<any> {
return;
}
/**
* Returns the individual authorization status for each Bluetooth run-time permission on Android 12+ / API 31+
* On Android 11 / API 30 and below, all will be returned as GRANTED if the manifest has BLUETOOTH since they are implicitly granted at build-time.
@@ -950,19 +838,6 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
return;
}
/**
* Returns the individual camera authorization statuses for each of the relevant permissions.
* Note for Android: this is intended for Android 6 / API 23 and above. Calling on Android 5.1 / API 22 and below will always return GRANTED status as permissions are already granted at installation time.
*
* @param {boolean} [storage] Android only: If true, requests storage permissions in addition to CAMERA run-time permission.
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
* @returns {Promise<any>}
*/
@Cordova({ platforms: ['Android'], callbackOrder: 'reverse' })
getCameraAuthorizationStatuses(storage?: boolean): Promise<any> {
return;
}
/**
* Checks if the application is authorized to use external storage.
*
@@ -1156,7 +1031,7 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
return;
}
/**
/**
* Presents limited library picker UI on iOS 14+
*
* @returns {Promise<any>}
@@ -1362,53 +1237,4 @@ export class Diagnostic extends AwesomeCordovaNativePlugin {
*/
@Cordova({ platforms: ['iOS'], sync: true })
registerLocationAccuracyAuthorizationChangeHandler(handler: Function): void {}
/**
* Checks if mobile data is authorized for this app.
* Returns true if the per-app Mobile Data setting is set to enabled (regardless of whether the device is currently connected to a cellular network)
*
* @returns {Promise<boolean>}
*/
@Cordova({ platforms: ['iOS'] })
isMobileDataAuthorized(): Promise<boolean> {
return;
}
/**
* Checks if the app is authorised to access devices on the local network (iOS 14+).
* On iOS versions prior to 14 this will always return TRUE as no local network authorization is required.
*
* @param {DiagnosticLocalNetworkAuthorizationOptions} [options] Optional timeout control - provide `timeoutMs` to override the default 2000ms timeout.
* @returns {Promise<boolean>}
*/
@Cordova({ platforms: ['iOS'], callbackOrder: 'reverse' })
isLocalNetworkAuthorized(options?: DiagnosticLocalNetworkAuthorizationOptions): Promise<boolean> {
return;
}
/**
* Returns the app's Local Network authorization status (iOS 14+).
* On iOS 14+ this returns one of: NOT_REQUESTED, GRANTED, DENIED_ALWAYS, UNKNOWN (this.permissionStatus).
* `UNKNOWN` indicates that iOS did not return a definitive answer before the timeout elapsed, so the app can retry before warning the user.
* On iOS versions prior to 14 this will always return GRANTED as no authorization is required.
*
* @param {DiagnosticLocalNetworkAuthorizationOptions} [options] Optional timeout override (defaults to 2000ms).
* @returns {Promise<string>}
*/
@Cordova({ platforms: ['iOS'], callbackOrder: 'reverse' })
getLocalNetworkAuthorizationStatus(options?: DiagnosticLocalNetworkAuthorizationOptions): Promise<string> {
return;
}
/**
* Requests the user to authorise the app to access devices on the local network (iOS 14+).
* On iOS versions prior to 14 this does nothing and will return success as no authorization is required.
* May return UNKNOWN if iOS does not respond before the native APIs time out, allowing the app to retry.
*
* @returns {Promise<string>}
*/
@Cordova({ platforms: ['iOS'] })
requestLocalNetworkAuthorization(): Promise<string> {
return;
}
}