qubit-sdk-react-native
Version:
React Native bridge for using native Qubit SDK libraries on iOS and Android
405 lines (309 loc) • 10.4 kB
Markdown
# Interaction schema
User
|
v
Qubit SDK ReactNative
|
v
Javascript ReactNative Bridge API
| |
v v
Android Bridge API iOS Bridge API
| |
v v
Qubit SDK Android Qubit SDK iOS
# Javascript ReactNative Bridge API
List of functions of Javascript module, which have to be implemented in
native modules for both platforms: Android and iOS.
- init
- sendEvent
- enableTracker
- getTrackingId
- getDeviceId
- getLookupData
- getExperiences
- experienceShown
- getPlacement
- placementImpression
- placementClickthrough
-------------------------------------------------------
## **init(trackingId, logLevel)**
### Description
Initialization of SDK. It should be called as early as possible after
application start, only once and before any other interaction with the API.
### Parameters
- trackingId
- Type: String
- Constraints: Not null, not empty
- Description: Tracking id (identifier of application/company etc.)
- logLevel
- Type: String
- Constraints: Not null.
One of values: SILENT, ERROR, WARN, INFO, DEBUG, VERBOSE.
Any other value causes setting default value, which is WARN.
- Level of logs produced by native SDK.
### Result
None
### Example
QubitSDK.init("miquido", "DEBUG");
-------------------------------------------------------
## **sendEvent(eventType, eventBody)**
### Description
Sends event to the server.
### Parameters
- eventType
- Type: String
- Constraints: Not null
- Description: Type of event. eg. ecView
- eventBody
- Type: Javascript map of any structure
- Type: Not null
- Description: Event body
### Result
None
### Exceptions
- Exception is thrown, when SDK is not initialized.
### Example
QubitSDK.sendEvent("ecView", { "type": "button", "value": "click" });
-------------------------------------------------------
## **enableTracker(enable)**
### Description
Enables or disables receiving events.
### Parameters
- enable
- Type: Boolean
- Constraints: Not null
- Description: true for enabling, false for disabling
### Result
None
### Exceptions
- Exception is thrown, when SDK is not initialized.
### Example
QubitSDK.enableTracker(false);
-------------------------------------------------------
## **getTrackingId()**
### Description
Returns trackingId. Debug purposes.
### Parameters
None
### Result
Promise with String trackingId.
### Exceptions
- Exception is thrown, when SDK is not initialized.
### Example
async function asyncFunction() {
var deviceId = await QubitSDK.getTrackingId();
...
}
-------------------------------------------------------
## **getDeviceId()**
### Description
Returns device id established by the SDK. Debug purposes.
### Parameters
None
### Result
Promise with String deviceId.
### Exceptions
- Exception is thrown, when SDK is not initialized.
### Example
async function asyncFunction() {
var deviceId = await QubitSDK.getDeviceId();
...
}
-------------------------------------------------------
## **getLookupData()**
### Description
Returns current Lookup Data. Debug purposes.
Although it returns Promise, it returns value only if SDK have these
information at the moment of the function call.
### Parameters
None
### Result
Promise with Javascript map:
{ viewNumber: 10,
sessionNumber: 4,
lastViewTs: 1863218003,
ipLocation:
{ regionCode: '36004',
region: 'unknown',
longitude: 19.9612,
latitude: 50.0495,
countryCode: 'PL',
country: 'poland',
cityCode: '1803',
city: 'krakow',
areaCode: 'unknown',
area: 'unknown' },
ipAddress: '93.180.179.112',
firstViewTs: 1696635454
}
### Exceptions
- Exception is thrown, when SDK is not initialized.
- Exception is thrown, when SDK hasn't fetched Lookup data from server yet.
### Example
async function asyncFunction() {
var lookupData = await QubitSDK.getLookupData();
...
}
-------------------------------------------------------
## **getExperiences**(experienceIds, isVariationSet, variation, isPreviewSet, preview, isIgnoreSegmentsSet, ignoreSegments)
### Description
Returns list of Experiences.
### Parameters
- experienceIds
- Type: Array of Integers
- Constraints: Not null.
- Description: List of experiences ids. When array is empty, returns all experiences.
- isVariationSet
- Type: Boolean
- Constraints: Not null.
- Description: Is `variation` parameter meaningful?
- variation
- Type: Integer
- Constraints: Not null.
- Description: Meaningful only when `isVariationSet` is true?
- isPreviewSet
- Type: Boolean
- Constraints: Not null.
- Description: Is `preview` parameter meaningful?
- preview
- Type: Boolean
- Constraints: Not null.
- Description: Meaningful only when `isPreviewSet` is true?
- isIgnoreSegmentsSet
- Type: Boolean
- Constraints: Not null.
- Description: Is `ignoreSegments` parameter meaningful?
- ignoreSegments
- Type: Boolean
- Constraints: Not null.
- Description: Meaningful only when `isIgnoreSegmentsSet` is true?
### Result
Promise with an array of Experiences objects. Example:
[
{ variation: 852190,
payload: {},
isControl: false,
id: 143640,
callback: 'https://sse.qubit.com/v1/callback?data=igKAeyJFeHBlcmllbmNlSWQiOjE0MzY0MCwiSXRlcmF0aW9uARUsMzc2MDY3LCJWYXJpFRUUODUyNzc0HRUUTWFzdGVyATAQODUyMTkBRXBzQ29udHJvbCI6ZmFsc2UsIlRyYWZmaWNBbGxvYwVKTCI6MC40NzUsIlByb2JhYmlsaXR5ARRQODI1NjI2MTk0NTgyNDQ5MSwiUGlkVhkAGFRlbXBsYXQFvwxudWxsBWZMY2tpbmdJZCI6Im1pcXVpZG8iLCIBjQhleHQFFkQ4MmFjYzNiY2FiYmNhYzM2In0='
},
{ variation: 855620,
payload: { show_share: false,
show_sale_banner: false,
sale_banner: 'https://dd6zx4ibq538k.cloudfront.net/static/images/5010/626263d0b3d3230f4062da1e0d1395ad_1300_554.jpeg',
free_shipping: 'Shipping is free for you!' },
isControl: false,
id: 144119,
callback: 'https://sse.qubit.com/v1/callback?data=jAKAeyJFeHBlcmllbmNlSWQiOjE0NDExOSwiSXRlcmF0aW9uARUsNDUyOTEwLCJWYXJpFRUYMTAxMDcyMh0WFE1hc3RlcgExmDg1NTYyMCwiSXNDb250cm9sIjpmYWxzZSwiVHJhZmZpY0FsbG9jYQFgSCI6MC4yNSwiUHJvYmFiaWxpdHkBE2A0ODAwMTM4OTg0MjEwNjM3MywiUGlkIjowThoAGFRlbXBsYXQFwQxudWxsBWdMY2tpbmdJZCI6Im1pcXVpZG8iLCIBjghleHQFFkQ4MmFjYzNiY2FiYmNhYzM2In0='
},
{ variation: 972984,
payload: {},
isControl: true,
id: 160862,
callback: 'https://sse.qubit.com/v1/callback?data=iQKAeyJFeHBlcmllbmNlSWQiOjE2MDg2MiwiSXRlcmF0aW9uARUsNDM0NjIzLCJWYXJpFRUUOTcyOTg0HRUUTWFzdGVyATARG3BJc0NvbnRyb2wiOnRydWUsIlRyYWZmaWNBbGxvYwVJRCI6MC41LCJQcm9iYWJpbGl0eQESVDAzNjQzMTAyMTQ3MTU5ODkyLCJQaWRaGgAYVGVtcGxhdAW-DG51bGwFZhBja2luZwGLKCJtaXF1aWRvIiwiAYwIZXh0BRZEODJhY2MzYmNhYmJjYWMzNiJ9'
}
]
### Exceptions
- Exception is thrown, when SDK is not initialized.
### Example
async function asyncFunction() {
var experiences = await QubitSDK.getExperiences([], false, 0, false, false, false, false);
...
}
-------------------------------------------------------
## **experienceShown**(callback)
### Description
Sends to server information, that experience was shown
### Parameters
- callback
- Type: String
- Constraints: Not null.
- Description: Value of callback property in the result of getExperiences function.
### Result
None
### Exceptions
- Exception is thrown, when SDK is not initialized.
### Example
QubitSDK.experienceShown("https://sse.qubit.com/v1/callback?data=igK....n0=");
-------------------------------------------------------
## **getPlacement**(placementId, mode, attributes, campaignId, experienceId, placementPromise)
### Description
Returns Placement for given parameters.
### Parameters
- placementId
- Type: String
- Constraints: Not null
- Description: Unique ID of the placement.
- mode
- Type: String
- Constraints: Can be one of LIVE/SAMPLE/PREVIEW.
- Description: The mode to fetch placements content with. Defaults to LIVE.
- attributes
- Type: String
- Constraints: Should be string description of JSON or null
- Description: JSON string containing custom attributes to be used to query for the placement. "visitor" attribute will be ignored as it is set by SDK.
- campaignId
- Type: String
- Constraints: Nullable
- Description: Campaign identifier
- experienceId
- Type: String
- Constraints: Nullable
- Description: Experience identifier
### Result
Promise with a map describing Placement object:
{
"content": { ... }
"impressionUrl": "https://api.qubit.com/placements/callback?data=ggW4eyJtZXRhIjp7ImlkIjo",
"clickthroughUrl": "https://api.qubit.com/placements/callback?data=mQW4eyJtZXRhIjp7Imlkx"
}
The structure of response content depends on the type of placement that is being called.
### Exceptions
- Exception is thrown, when SDK is not initialized.
### Example
async () => {
const placement = await QubitSDK.getPlacement(
"placement_id",
"LIVE",
"{ \"color\": \"blue\"}",
"campaign_id",
"experience_id"
);
...
}
-------------------------------------------------------
## placementImpression(callbackUrl)
### Description
Sends request to URL described by placement impression callback.
### Parameters
- callbackUrl
- Type: String
- Constraints: Not null
- Description: Impression callback URL.
### Result
None
### Example
async () => {
const placement = await QubitSDK.placementImpression(
"https://some.url.com"
);
...
}
-------------------------------------------------------
## placementClickthrough(callbackUrl)
### Description
Sends request to URL described by placement clickthrough callback.
### Parameters
- callbackUrl
- Type: String
- Constraints: Not null
- Description: Clickthrough callback URL.
### Result
None
### Example
async () => {
const placement = await QubitSDK.placementClickthrough(
"https://some.url.com"
);
...
}