16 min read
Benutzerdefinierte Registerkarten und JS Bridge
Ein häufiges Problem beim Hinzufügen einer benutzerdefinierten Registerkarte – einer eingebetteten Webseite mit einer einzigen festgelegten URL, die in der Android- oder iOS-App verfügbar ist – mit externen Inhalten besteht darin, dass diese Inhalte auf einer separaten Webseite gehostet werden und nicht direkt mit der Android- oder iOS-App kommunizieren können, da die App die benutzerdefinierte Registerkarte als „Black Box“ betrachtet, deren Grenzen nicht überschritten werden können. Um dieses Problem zu beheben, können Sie das JavaScript-SDK namens „JS Bridge“ verwenden , mit dem Sie auf der Client-Seite programmgesteuert über JavaScript-Aufrufe mit der nativen App und der eingebetteten Webseite kommunizieren können.
Vorteile der Implementierung von JS Bridge:
- Gemeinsame Anmeldung – Nutzer melden sich nur einmal an, egal ob über die native App oder über die eingebettete Webseite;
- Integrierte Zugriffsverweigerungsmeldungen – es wird die app-eigene Meldung angezeigt, wenn ein Nutzer keinen Zugriff auf Premium-Inhalte (abonnementgebundene Inhalte) hat, anstatt dass Sie eine eigene erstellen müssen;
- Gemeinsame Einwilligung – Die Einwilligungsentscheidungen der Nutzer werden zwischen der nativen App und Ihrer Webseite synchronisiert;
- In-App-Audio – Audioinhalte auf Ihrer Webseite können über den integrierten Audio-Player der nativen App abgespielt werden;
- Startseitenintegration – Ihre Seiteninhalte können als Elemente auf der Startseite der nativen App als Inhalt für eine Startseitenkomponente angezeigt werden;
- Verwaltung von Push-Benachrichtigungsthemen – Nutzer können einstellen, welche Ihrer Push-Benachrichtigungsthemen sie abonnieren möchten;
Wo fange ich an?
Wenn Sie JS Bridge zum ersten Mal einrichten, gehen Sie wie folgt vor:
- Benachrichtigen Sie den Prenly-Helpdesk, damit die Integration auf Seiten von Prenly aktiviert werden kann.
- Installieren Sie das JS-Bridge-SDK auf der eingebetteten Webseite, die Sie über den Prenly Workspace als benutzerdefinierten Reiter zu Ihrer E-Paper-Anwendung hinzufügen werden oder bereits hinzugefügt haben.
- Initialisieren Sie das SDK auf der Webseite und rufen Sie die benötigten API-Funktionen auf.
- Überprüfen Sie, ob JS Bridge aktiv ist.
- Testen Sie Ihre Implementierung, bevor Sie live gehen.
Im weiteren Verlauf dieses Leitfadens werden alle diese Schritte ausführlich erläutert. Sollten Sie bei einem Fachbegriff nicht weiterkommen, finden Sie weitere Informationen in der technischen Referenz am Ende des Artikels.
Wie wird dies implementiert?
1. Benachrichtigen Sie den Prenly-Helpdesk, um die Funktion zu aktivieren
Sobald die JS-Bridge zu Ihrer Seite hinzugefügt wurde, benachrichtigen Sie den Prenly-Helpdesk unter hello@prenly.com. Die JS-Bridge ist eine kostenlos nutzbare Zusatzfunktion, die für Ihre Anwendung möglicherweise aktiviert werden muss. Solange die Funktion nicht aktiviert ist, gibt die API bei einem Aufruf den Wert „undefined“ zurück (siehe „Wie stelle ich fest, ob die JS-Bridge aktiv ist?“).
2. In einem benutzerdefinierten Tab in PWS aktivieren…
Die JS-Bridge ist standardmäßig für die eingebettete Webseite nicht aktiviert. Sie können sie im Menü-Builder im Anwendungsmanager in Prenly Workspace aktivieren.
3. Installieren Sie die JS-Bridge-Bibliothek
Sie können die JS-Bridge-SDK-JavaScript-Bibliothek entweder als npm-Paket installieren oder vom Client direkt von GitHub abrufen lassen.
npm
Besuchen Sie npm, um Installationsanweisungen zu finden, oder führen Sie einfach folgenden Befehl aus:
npm i prenly-js-bridge
GitHub
Sie müssen npm nicht verwenden. Sie können das SDK auch direkt von GitHub importieren, wenn Sie dies bevorzugen.
Besuche GitHub. Importiere das SDK über das Beispiel in deine Webseite
import PrenlyAppSDK from "https://raw.githubusercontent.com/Textalk/prenly-js-bridge/refs/heads/main/dist/prenly-app-sdk.es.js";
In dieser Anleitung wird davon ausgegangen, dass Sie das SDK über npm installieren.
4. Initialisieren Sie das SDK auf der Webseite
Importieren Sie die Bibliothek und erstellen Sie eine Instanz davon. Dadurch erhalten Sie das `api` -Objekt, das Sie für alle im Handbuch beschriebenen JS-Bridge-Funktionen verwenden werden. Behalten Sie die Referenz auf `api` bei und übergeben Sie sie, um die gewünschten Funktionen aufzurufen.
import PrenlyAppSDK from "prenly-js-bridge";
const { api } = new PrenlyAppSDK();
5. Verwenden Sie die JS-Bridge-Funktionen
Sobald das SDK installiert und aktiviert ist, können Sie die von der JS-Bridge bereitgestellten JavaScript-Funktionen nutzen, um mit der nativen App zu interagieren. Jede Funktion wird durch eine oder mehrere API-Funktionen unterstützt, die optional aufgerufen werden können:
| Prenly-Funktion | Funktionsweise | Funktionen, die Sie verwenden werden |
|---|---|---|
| Gemeinsame Anmeldung | Benutzer melden sich einmalig an, entweder über die native App oder über Ihre Webseite | api.login(), api.logout(), api.getUserJwt() |
| Warnmeldung bei fehlendem Zugriff | Zeigt die in der nativen App integrierte Warnmeldung an, wenn ein Nutzer keinen Zugriff auf Premium-Inhalte hat | api.showNoAccessAlert() |
| Synchronisierung der Einwilligungen | Die Einwilligungsentscheidungen des Nutzers werden zwischen der nativen App und Ihrer Webseite synchronisiert | api.getUserConsent(), api.showUserConsentDialog() |
| In-App-Audio-Player | Audio auf Ihrer Seite wird über den nativen Player der App wiedergegeben | api.playPauseAudio(), api.queueDequeueAudio(), api.getAudioStatus() |
| Web-Inhaltskomponente auf der Startseite | Ihre Inhalte werden als Elemente auf der Startseite der App angezeigt | api.setComponentData() |
| Themen für Push-Benachrichtigungen | Benutzer legen fest, welche Ihrer Push-Themen sie abonnieren (JS Bridge versendet selbst keine Push-Benachrichtigungen – siehe Hinweis unten) | api.getPushTopics(), api.subscribePushTopics(), api.unsubscribePushTopics() |
Eine vollständige Liste der verfügbaren Funktionen, Ereignisse und Schemata finden Sie auf der GitHub-Seite des Prenly App SDK – JS Bridge. Betrachten Sie dieses Handbuch als „Einführung“ und nutzen Sie die README-Datei (auf GitHub) als vollständige Referenz.
Bitte beachten Sie, dass die JS-Bridge es Nutzern lediglich ermöglicht, ihre Abonnements für Push-Themen zu verwalten – sie kann selbst keine Push-Benachrichtigungen versenden. Das Versenden einer Push-Benachrichtigung oder das Erstellen eines neuen Push-Benachrichtigungsthemas erfolgt innerhalb des Prenly-Workspaces.
Jede API-Funktion gibt ein Promise zurück; verwenden Sie daher „await“ oder „.then()“, um das Ergebnis abzurufen. Da jede Funktion die Anfrage ablehnen kann, wird dringend empfohlen, Funktionsaufrufe stets in„try/catch“ zu verpacken und „error.code“ zu überprüfen (siehe Fehlercodes für Anfragen):
try {
const userJwt = await api.getUserJwt();
} catch (error) {
if (api.isRequestError(error) && error.code === "rejected") {
// Der Nutzer oder die App hat die Anfrage abgelehnt.
}
}
Neben diesen Funktionen löst die JS-Bridge auch benutzerdefinierte Ereignisse aus, auf die Ihr Code reagieren kann. Sie können beispielsweise das Ereignis „userLogin“ abhören, um zu erfahren, wann sich ein Benutzer in der nativen App anmeldet:
api.on("userLogin", (userData) => {
// Wird automatisch ausgeführt, sobald sich der Benutzer anmeldet.
});
Jede Funktion hat zudem eine erwartete Reihenfolge, in der die Funktionen aufgerufen werden sollen. Die folgenden Abschnitte führen Sie durch die erwartete Reihenfolge der Funktionsaufrufe.
Anmelde- und Abmeldeablauf
Prüfen Sie immer, ob der Benutzer bereits angemeldet ist, bevor Sie entscheiden, was angezeigt oder ausgeführt werden soll. Vermeiden Sie den Aufruf von `api.login()` bei einem Benutzer, der bereits angemeldet ist.
- Rufen Sie
`api.getUserJwt()`auf und überprüfen und dekodieren Sie das`jwt`-Feld der Antwort, um den Claim `is_logged_in` auszulesen. - Wenn
„is_logged_in“falschist, ist der Benutzer derzeit nicht authentifiziert (angemeldet); zeigen Sie eine Option „Anmelden“ an, die`api.login()`aufruft. - Ist
„is_logged_in“wahr, ist der Benutzer authentifiziert; zeige stattdessen eine Option „Abmelden“ an, die`api.logout()`aufruft, damit sich der Benutzer abmelden kann.
Wenn Sie den Anmelde- oder Abmeldeablauf nicht selbst steuern möchten, können Sie, anstatt sich auf `api.login()` und `api.logout` zu verlassen, die Ereignisse `userLogin` und `userLogout` abhören, damit Ihre Benutzeroberfläche korrekt bleibt, falls sich der Benutzer an einer anderen Stelle in der App an- oder abmeldet, während die benutzerdefinierte Registerkarte mit Ihrer Webseite geöffnet ist.
Wenn der Nutzer angemeldet ist, kannst du den dekodierten JWT-Claim „prenly_package_slugs“ auf die Prenly bekannten Abonnements des Nutzers überprüfen. Falls das zum Lesen deiner Inhalte erforderliche Abonnement fehlt, rufe api.showNoAccessAlert() auf, anstatt eine eigene „Kein Zugriff“-Meldung zu schreiben. Dadurch bleiben die Benachrichtigungen im Einklang mit dem Rest der App.
Einwilligungsablauf
- Rufen Sie zunächst
`api.getUserConsent()`auf, um die bestehende Auswahl des Nutzers abzurufen (`null`, wenn kein CMP verwendet wird). Das Ergebnis besteht aus zwei Teilen:„prenly_purpose_grants“, einer festen Reihe von Zwecken (funktional,analytisch,Marketing), und„cmp_purpose_grants“, das die von Ihrem spezifischen CMP definierten Zwecknamen verwendet. - Bevor Sie irgendetwas tun, das von einem Einwilligungszweck abhängt, überprüfen Sie das entsprechende Feld. Laden Sie beispielsweise ein Analyseskript nur dann, wenn
„prenly_purpose_grants.analytical“wahrist. - Wenn ein erforderlicher Zweck vom Nutzer nicht gewährt wurde, rufen Sie
`api.showUserConsentDialog()`auf, damit der Nutzer die Einwilligung erteilen kann, und überprüfen Sie anschließend erneut mit`api.getUserConsent()` (oder warten Sie auf das unten genannte Ereignis), bevor Sie fortfahren.
const consent = await api.getUserConsent();
if (consent?.prenly_purpose_grants?.analytical) {
// Laden Sie Ihr Analyseskript.
} else {
// Laden Sie es nicht – oder rufen Sie zunächst api.showUserConsentDialog() auf, um den Nutzer zu fragen.
}
Sie können auf das benutzerdefinierte Ereignis `userConsentChange ` abhören, um auf eine Änderung der Einwilligung des Benutzers innerhalb der nativen App zu reagieren.
Ablauf der Audiowiedergabe
-
Rufen Sie zunächst
`api.getAudioStatus(AudioId)` auf (oder verfolgen Sie den Status über das Ereignis`audioStatusChange`), damit Ihre Benutzeroberfläche den korrekten Status „Wiedergabe“ oder „Pause“ anzeigt, bevor der Nutzer etwas unternimmt.Hinweis: Du kannst die native App nicht nach verfügbaren Audio-IDs abfragen; daher kannst du das benutzerdefinierte Ereignis
`audioStatusChange`abhören, um das aktuell abgespielte Audio zu ermitteln. - Rufen Sie `
api.playPauseAudio(AudioData)` auf, um die Wiedergabe zu starten, oder halten Sie die Wiedergabe an, falls sie bereits läuft. - Überprüfe den aktuellen Audiostatus und füge das Audio dann der Warteschlange hinzu, falls es noch nicht in der Warteschlange steht, oder entferne es aus der Warteschlange, indem du
`api.queueDequeueAudio(AudioData)` aufrufst.
Achte auf „audioStatusChange“, um synchron zu bleiben, insbesondere da sich die Audiowiedergabe außerhalb deiner Webseite ändern kann und die App möglicherweise Audio wiedergibt, das auf deiner Website nicht verfügbar ist.
Ablauf bei Push-Benachrichtigungen
-
Rufen Sie immer zuerst
`api.getPushTopics()` auf, um die Liste der gültigen Themen-IDs und den aktuellen Abonnementstatus der einzelnen Themen abzurufen.Verwenden Sie keine fest codierten oder erratenen IDs für Push-Benachrichtigungsthemen
- Verwenden Sie die IDs aus dieser Antwort, wenn Sie
`api.subscribePushTopics()`oder`api.unsubscribePushTopics()` aufrufen.
Keine der Push-Themen-Funktionen verfügt über einen eigenen Fehlercode; wenn eine Funktion fehlschlägt, erhalten Sie einen der allgemeinen Anfragefehlercodes (rejected, not_supported oder feature_disabled) anstelle von beispielsweise get_push_topics_failed.
const { topics } = await api.getPushTopics();
const newsTopic = topics.find((t) => t.name === "News");
if (newsTopic.subscribed) {
await api.unsubscribePushTopics({ ids: [newsTopic.id] });
} else {
await api.subscribePushTopics({ ids: [newsTopic.id] });
}
5. Wenn die Web-Content-Komponente verwendet werden soll
Wenn Sie möchten, dass ein Artikel oder ein anderer Inhalt, der auf Ihrer Webseite aufgeführt ist, auch auf der Startseite der App als Startseitenkomponente angezeigt wird, dann…:
-
Erstellen Sie in Prenly Workspace eine neue Startseitenkomponente „Web-Inhalt “.
Kopieren Sie die von der Startseitenkomponente generierte eindeutige Kennung.
- Konfigurieren Sie die Quelle in den Komponenteneinstellungen und wählen Sie die benutzerdefinierte Registerkarte aus, auf der Ihre Webseite angezeigt wird.
- Nehmen Sie weitere Konfigurationen für Ihre Komponente vor, speichern Sie diese und veröffentlichen Sie die Komponente, damit sie auf der Startseite Ihrer App verfügbar ist.
- Rufen Sie in Ihrer JS-Bridge-Implementierung `
api.setComponentData()`mit dieser Kennung und den Elementen auf, die angezeigt werden sollen, zum Beispiel:
await api.setComponentData({
id: "<die eindeutige Kennung der Komponente>",
items: [
{
id: "article-1",
header: "Hier kommt die Überschrift",
subheader: "Kurzer Teaser-Text",
deeplink_url: "https://example.com/article-1",
image_url: "https://example.com/images/article-1.jpg",
},
],
});
Jedes Element, das Sie übergeben, wird zu einer anklickbaren Kachel auf der Startseite, die zurück zu Ihrem benutzerdefinierten Tab-Inhalt führt.
Bitte beachten Sie: Verwechseln Sie die Startseitenkomponente „Web Content“ nicht mit einer Web-API-Webkomponente.
Wie kann ich feststellen, ob die JS-Bridge aktiv ist?
Überprüfen Sie nach der Instanziierung des SDK, ob „api“ definiert ist:
const { api } = new PrenlyAppSDK();
if (api) {
// JS Bridge ist aktiv – Sie können API-Funktionen aufrufen.
} else {
// Noch nicht aktiv. Entweder wurde die Bibliothek nicht korrekt geladen,
// oder sie wurde für den benutzerdefinierten Tab im Prenly Workspace noch nicht aktiviert.
}
Wenn „api“ undefiniert ist, vergewissern Sie sich, dass Sie Schritt 1 (Benachrichtigung des Prenly-Helpdesks) abgeschlossen haben und dass Sie die in Ihre App eingebettete Webseite aufrufen und nicht in einem normalen Webbrowser-Tab.
Wie kann ich die JS-Bridge testen?
Es gibt keine spezielle Testumgebung für die JS Bridge. Wie das Testen aussieht, hängt davon ab, was Ihnen zur Verfügung steht:
-
Wenn Sie über eine Sandbox-App verfügen, nutzen Sie diese, um Ihre Implementierung zu testen, bevor sie live geht.
Wenn du dir unsicher bist, überprüfe deine verfügbaren Anwendungen im Prenly Workspace oder wende dich an den Prenly-Helpdesk, um eine anzufordern.
-
Wenn Sie keine Sandbox-App haben, erfolgt das Testen live: Sobald die JS Bridge für Ihren benutzerdefinierten Tab eingerichtet und aktiviert ist (siehe die oben genannten Schritte), testen Sie direkt in der Produktions-App.
Hinweis: Eine Produktions-App kann nicht in einen Debug-Modus versetzt werden, der es Ihnen ermöglicht, den benutzerdefinierten Tab Ihrer iOS-App mit Safari oder den benutzerdefinierten Tab Ihrer Android-App mit Google Chrome zu überprüfen.
- Überprüfen Sie die Aktivierung mithilfe des
API-Checks, der unter „Wie kann ich feststellen, ob die JS Bridge aktiv ist?“ beschrieben ist. Dies ist der schnellste Weg, um einen Einrichtungsfehler zu erkennen, bevor Sie einzelne Funktionen testen. - Beobachten Sie das sichtbare Ergebnis jeder Funktion. Rufen Sie beispielsweise
`api.login()` auf und überprüfen Sie, ob sich der Anmeldestatus der App ändert.
api.on("userLogin", (userData) => {
// Das Auslösen dieses Callbacks (und die Aktualisierung der Benutzeroberfläche der App) bestätigt, dass der Anmeldeablauf funktioniert hat.
});
Wenn eine Anfrage immer wieder fehlschlägt oder sich nichts ändert, ist die Funktion möglicherweise für Ihr Konto noch nicht aktiviert – wenden Sie sich an den Prenly-Helpdesk unter hello@prenly.com, damit man Ihnen bei der Aktivierung der JS Bridge helfen kann.
Debug-Modus (Konsolenzugriff)
Um Konsolenprotokolle auszulesen oder „error.code“-Werte direkt zu überprüfen, muss der Debug-Modus für Ihre benutzerdefinierte Registerkarte aktiviert sein. Dies können Sie nicht selbst aktivieren – es erfordert eine spezielle App-Variante, die nur der Prenly-Helpdesk sowohl für Android als auch für iOS freischalten kann. Wenn du diesen Zugriff während der Entwicklung benötigst, fordere ihn beim Prenly-Helpdesk unter hello@prenly.com an; gehe nicht davon aus, dass er bereits verfügbar ist.
Technische Referenz
Die folgenden Begriffe tauchen in diesem Leitfaden immer wieder auf. Sie sind hier aufgeführt, damit Sie die Seite nicht verlassen müssen, um sie nachzuschlagen.
Was ist ein SDK?
Ein SDK ( Software Development Kit) ist eine Sammlung von Software-Entwicklungstools, die als einziges Paket verfügbar sind und die Integration in das Zielsystem ermöglichen.
Was ist npm?
npm ist der Standard-Paketmanager für JavaScript. „Ein Paket installieren“ bedeutet, einen Code (in diesem Fall die JS-Bridge-Bibliothek ) herunterzuladen und zu Ihrem Projekt hinzuzufügen, in der Regel durch Ausführen eines Befehls wie „npm i prenly-js-bridge“ im Terminal Ihres Projekts. Das Paket steht dann zum Import in Ihren Code zur Verfügung.
Was ist ein Promise?
Ein „Promise“ stellt einen Wert dar, der noch nicht verfügbar ist, aber zu einem späteren Zeitpunkt verfügbar sein wird. Zum Beispiel das Ergebnis einer Anfrage an die App, den Benutzer anzumelden. In der Regel wird dies mit „await“ innerhalb einer asynchronen Funktion oder mit „.then()“/.catch()“ gehandhabt:
// Verwendung von `await` (innerhalb einer `async`-Funktion):
const result = await api.getUserJwt();
// Verwendung von `.then()`/.catch():
api
.getUserJwt()
.then((result) => {
/* ... */
})
.catch((error) => {
/* ... */
});
Wird das Promise abgelehnt (es ist ein Fehler aufgetreten), wird der Code in deinem `catch` -Block ausgeführt und du erhältst den Fehler, den du überprüfen kannst – siehe die unten aufgeführten Request-Fehlercodes.
Was ist `fetch()`?
`fetch()` ist die Standardmethode, um eine HTTP(S)-Anfrage aus JavaScript heraus zu stellen – zum Beispiel, um Daten von Ihrer Seite an Ihren eigenen HTTP-Server zu senden. Die Funktion gibt ein Promise zurück und wird daher genauso wie die API-Funktionen mit`await`/.`then()` verwendet:
await fetch("https://your-backend.example.com/session", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ jwt: userJwt.jwt }),
});
Dies hat nichts mit der JS Bridge selbst zu tun; es handelt sich um die übliche Art und Weise, wie eine Webseite mit einem Server kommuniziert. Sie wird hier verwendet, da die JS Bridge ausschließlich clientseitig arbeitet und von sich aus keine Daten an Ihren HTTP-Server sendet.
Was ist ein Ereignis-Listener?
Funktionen wie `api.getUserJwt()` sind Anfragen, die Sie stellen. Ereignisse sind das Gegenteil: Es handelt sich um benutzerdefinierte Benachrichtigungen, die die JS Bridge automatisch auslöst, sobald aufgrund der Interaktion des Benutzers mit der App etwas passiert, und auf die Ihre Webseite „reagieren“ könnte. Zum Beispiel, wenn sich der Benutzer an- oder abmeldet.
Du abonnierst das Ereignis mit `api.on(eventType, handler)`, wobei ` handler` eine Funktion ist, die jedes Mal ausgeführt wird, wenn dieses Ereignis ausgelöst wird:
api.on("userLogin", (userData) => {
// Wird automatisch ausgeführt, sobald sich der Nutzer anmeldet.
});
Beenden Sie das Abhören mit `api.off(eventType, handler)` (oder `api.off(eventType)`, um alle Handler für dieses Ereignis zu entfernen). Die vollständige Liste der verfügbaren Ereignisse finden Sie in der README-Datei auf GitHub.
Was ist ein JWT?
Ein JWT (JSON Web Token) ist eine kompakte, signierte Zeichenfolge, die zur Darstellung der Identität eines Nutzers und der mit ihm verbundenen Angaben dient. api.getUserJwt() sowie die Anmelde- und Abmeldefunktionen geben ein solches zurück. Sie müssen es mithilfe des Prenly-Zertifikats verifizieren und dekodieren, bevor Sie dessen Inhalt auslesen – betrachten Sie die Rohzeichenfolge nicht als an sich lesbar. Nach der Dekodierung enthält die Nutzlast zusätzlich zu Standardangaben wie „given_name“ und „email“ auch Prenly-spezifische Angaben:
{
"given_name": "Jane",
"family_name": "Doe",
"email": "jane@example.com",
"customer_number": "12345",
"prenly_package_slugs": ["premium"],
"is_logged_in": true
}
Weitere Informationen zu JWTs im Allgemeinen (nicht spezifisch für Prenly) finden Sie in der Einführung auf jwt.io. Während der Entwicklung können Sie ein JWT auch in den JWT-Debugger auf jwt.io einfügen, um dessen Header und Payload zu überprüfen (vermeiden Sie es, dort das JWT eines echten Nutzers einzufügen, da die Payload dessen persönliche Daten (Name, E-Mail-Adresse usw.) enthält; verwenden Sie stattdessen Testdaten).
Hinweis: Die verfügbaren Claims hängen vom Anmeldesystem ab, das die App verwendet. Der einzige garantierte Claim ist „is_logged_in“.
Wenn Ihr HTTP-Server ebenfalls Informationen über den angemeldeten Benutzer benötigt (beispielsweise, um eine Sitzung zu erstellen), senden Sie ihm die entsprechenden Informationen selbst, z. B. mit einer `fetch()` -Anfrage an Ihren eigenen Endpunkt:
await fetch("https://your-backend.example.com/session", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ jwt: userJwt.jwt }),
});
Wie Ihr HTTP-Server diese Anfrage verarbeitet – ob er sie erneut überprüft, eine Sitzung erstellt oder etwas anderes tut – ist Teil Ihrer eigenen Implementierung und geht über den Rahmen dieses Handbuchs hinaus.
Dieses Zertifikat wird von Prenly generiert und bereitgestellt – du kannst kein eigenes erstellen oder bereitstellen. Prenly stellt es dir zur Verfügung, falls deine Konfiguration eines benötigt, oder du kannst es beim Prenly-Helpdesk unter hello@prenly.com anfordern. Eine Konfiguration mit einem anderen Zertifikat funktioniert nicht.
Was ist eine CMP und was bedeutet „Einwilligung“ in diesem Zusammenhang?
Eine CMP (Consent Management Platform) ist das System, das Nutzer um ihre Einwilligung zum Datenschutz bittet (z. B. für Analyse- oder Marketing-Cookies) und ihre Entscheidung speichert. Mit `api.getUserConsent()` kann Ihr benutzerdefinierter Tab die Einwilligung auslesen, die der Nutzer bereits in der Prenly-App erteilt hat, sodass Sie ihn nicht separat erneut danach fragen müssen.
Fehlercodes abfragen
Wenn ein Promise einer API-Funktion abgelehnt wird, enthält das Fehlerobjekt einen Code, den Sie überprüfen können. Einige Codes sind allgemein und können von jeder Funktion stammen; andere sind spezifisch für einen bestimmten Ablauf. Eine Funktion ohne eigenen Fehlercode (z. B. getPushTopics(), getUserConsent()) gibt immer nur einen allgemeinen Code zurück:
| Code | Gilt für | Bedeutung |
|---|---|---|
abgelehnt |
Beliebige Funktion | Die Anfrage wurde vom Benutzer oder von der App abgelehnt. |
nicht_unterstützt |
Beliebige Funktion | Die angeforderte Funktion wird von der App nicht unterstützt (z. B. bei einer veralteten App-Version). |
feature_disabled |
Beliebige Funktion | Die Funktion wurde für Ihr Konto nicht aktiviert – siehe Schritt 3. |
login_failed |
api.login() |
Der Anmeldevorgang ist fehlgeschlagen. |
logout_failed |
api.logout() |
Der Abmeldevorgang ist fehlgeschlagen. |
play_pause_audio_failed |
api.playPauseAudio() |
Das Abspielen oder Anhalten von Audio ist fehlgeschlagen. |
queue_dequeue_audio_failed |
api.queueDequeueAudio() |
Das Einreihen oder Entnehmen von Audio ist fehlgeschlagen. |
set_component_data_failed |
api.setComponentData() |
Das Senden von Daten an die Startseitenkomponente ist fehlgeschlagen. |
Eine vollständige und stets aktuelle Liste der Funktionen, Ereignisse und Datenmodelle finden Sie in der README-Datei auf GitHub.