prenly-js-bridge
v1.0.0
Published
The Prenly App SDK is a JavaScript toolkit tailored for developers looking to integrate their web sites seamlessly with the Prenly native apps, focusing on user authentication and consent management. This repository contains the distribution files for the
Downloads
19
Readme
Prenly App SDK - JS Bridge
The Prenly App SDK is a JavaScript toolkit tailored for developers looking to integrate their web sites seamlessly with the Prenly native apps, focusing on user authentication and consent management. This repository contains the distribution files for the JavaScript SDK.
Instantiation
import PrenlyAppSDK from "prenly-js-bridge";
const { api } = new PrenlyAppSDK();
API
Functions
| Function | Signature | Description |
| ------------------------ | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Login | prenlyApp.login(): Promise<UserDataJwt \| RequestError>
| Trigger a login flow in the app. |
| Logout | prenlyApp.logout(): Promise<UserDataJwt \| RequestError>
| Trigger a logout flow in the app. |
| Show no access alert | prenlyApp.showNoAccessAlert(): Promise<void>
| Trigger a show no access alert flow in the app. |
| Get user JWT | prenlyApp.getUserJwt(): Promise<UserDataJwt \| RequestError>
| Retrieve information about the user as a Jwt. |
| Get user consent | prenlyApp.getUserConsent(): Promise<UserConsent \| null \| RequestError>
| Retrieve the current consent that the user granted, or null if no CMP is used. |
| Show user consent dialog | prenlyApp.showUserConsentDialog(): Promise<void \| RequestError>
| Trigger the display of the consent dialog. |
| Play or pause audio | prenlyApp.playPauseAudio(AudioData): Promise<void \| RequestError>
| Add audio and play it using the native app player, or pause when playing. |
| Queue or dequeue audio | prenlyApp.queueDequeueAudio(AudioData): Promise<void \| RequestError>
| Queue or dequeue audio using the native app player. |
| Get audio status | prenlyApp.getAudioStatus(AudioId): Promise<AudioStatus \| RequestError>
| Retrieve audio status. |
Example
const { api: prenlyApp } = new PrenlyAppSDK();
try {
const userJwt = await prenlyApp.getUserJwt();
// Do stuff with `userJwt`.
} catch (error) {
// If the promise was rejected, handle the error.
}
Event listeners
| Function | Signature |
| ------------------------------------- | ----------------------------------------------------------------------------- |
| Start listening | prenlyApp.on(EventType, (current: Object, previous?: Object) => void): void
|
| Stop listening (single listener) | prenlyApp.off(EventType, handler): void
|
| Stop listening (all events of a type) | prenlyApp.off(EventType): void
|
Events
Types
| Type | Data | Description | | ----------------- | ----------- | -------------------------------------------------------------------- | | userConsentChange | UserConsent | Triggers when the user consent changes. | | userLogin | UserDataJwt | Triggers when the user logs in. | | userLogout | UserDataJwt | Triggers when the user logs out. | | audioStatusChange | AudioStatus | Triggers when the status of audio initialized by the SDK is changed. |
Callback Parameters
| Parameter | Description | | ----------- | ---------------------------------------------------------------------------------------- | | Parameter 1 | The response object of the current event. | | Parameter 2 | The response object of the previous event, or undefined when no previous event exists. |
Example
prenlyApp.on("userConsentChange", (data: UserConsent) => {
// ...
});
Data models
UserDataJwt
{
jwt: string;
}
UserConsent
{
cmp: string;
prenly_purpose_grants?: {
functional: boolean;
analytical: boolean;
marketing: boolean;
};
tc_string?: string;
cmp_purpose_grants?: { [purpose: string]: boolean };
cmp_vendor_grants?: { [vendor: string]: boolean };
}
AudioId
{
id: string;
}
AudioData
{
id: string;
audio_url: string;
image_url?: string;
title: string;
description: string;
duration: number; // in seconds
}
AudioStatus
{
id: string;
status: "playing" | "paused" | "loading";
queued: boolean;
}
RequestError
{
code:
| 'rejected'
| 'feature_disabled'
| 'login_failed'
| 'logout_failed'
| 'play_pause_audio_failed'
| 'queue_dequeue_audio_failed';
message?: string;
}