Push-Nachrichten und Offline
Push-Nachrichten aus einem Flow
ApptiveTeams empfängt Push-Nachrichten, die ein ApptiveGrid-Flow verschickt. Der Versand läuft über den Dienst OneSignal: Der Flow ruft dessen Schnittstelle mit einem HTTP-Schritt auf, die App hat das Gerät dort registriert. Ein Tipp auf die Nachricht öffnet wahlweise ein Formular in der App oder eine Webseite.
Flow (HTTP-Schritt) → OneSignal → Gerät der PersonVoraussetzungen
- Eine OneSignal-App mit dem REST API Key. Der Key gehört als Secret in den Flow und nie in ein Grid oder eine Nachricht: Er berechtigt zum Versand an alle Geräte.
- Die App ID von OneSignal. Sie ist in ApptiveTeams hinterlegt; für eigene Builds erfahren Sie sie von Ihrem Ansprechpartner.
- Die Person hat in der App Push-Benachrichtigungen zugelassen. Die App fragt dazu nach dem ersten Öffnen eines Teams; wer „Später“ wählt, wird nach sieben Tagen erneut gefragt. Der Schalter in den Einstellungen zeigt den Zustand. → Einstellungs-Bildschirm
Wen eine Nachricht erreicht
| Ziel | Adressierung im Request |
|---|---|
| Eine Person | include_aliases.external_id mit dem SHA-256 der ApptiveGrid-Benutzer-ID |
| Alle, die gerade dieses Team in der App geöffnet haben | filters mit dem Tag space_<Space-ID> |
Benutzer-ID ist die ID der Person, wie sie auch im Feld Erstellt von steht. Sie wird nicht im Klartext übertragen, sondern als SHA-256. In ApptiveScript liefert userId.sha256() genau den Wert, den die App registriert. → sha256()
Space-ID ist das letzte Segment der Adresse des Space, in dem der Flow läuft. Die App meldet nur das aktive Team: Wer in mehreren Teams ist und wechselt, bekommt die Nachrichten des gerade geöffneten Teams.
Der Request
POST https://api.onesignal.com/notifications
Authorization: Key <REST API Key>
Content-Type: application/jsonAn eine Person, mit Formular zum Öffnen:
{
"app_id": "<App ID>",
"target_channel": "push",
"include_aliases": { "external_id": ["<sha256 der Benutzer-ID>"] },
"headings": { "en": "Neue Aufgabe", "de": "Neue Aufgabe" },
"contents": { "en": "Bitte das Formular ausfüllen", "de": "Bitte das Formular ausfüllen" },
"data": {
"uri": "https://app.apptivegrid.de/api/r/<…>/<…>/<Formular>",
"type": "form",
"title": "Schadensmeldung"
}
}An alle im Team:
{
"app_id": "<App ID>",
"filters": [{ "field": "tag", "key": "space_<Space-ID>", "relation": "exists" }],
"headings": { "en": "Teaminfo", "de": "Teaminfo" },
"contents": { "en": "…", "de": "…" }
}Regeln:
headingsundcontentsbrauchen immer den Schlüsselen, auch wenn Sie nur Deutsch verschicken.- Pro Request genau eine Zielart: entweder
include_aliasesoderfilters. Mehrere Personen stehen als Liste inexternal_id. - Alles unter
dataist optional. Ohneuriöffnet ein Tipp nur die App.
data-Feld | Bedeutung |
|---|---|
uri | Adresse, die beim Antippen geöffnet wird |
type | form (Standard): uri als Formular in der App. link: uri im Browser |
title | Titel des geöffneten Formulars; fehlt er, gilt der Titel der Nachricht |
Kein Login-Zwang für Formulare aus Nachrichten
Das Formular öffnet sich auch, wenn die Person die App gerade nicht in einem Team geöffnet hat. Teilen Sie Formulare, die nur Mitglieder sehen sollen, entsprechend eingeschränkt. → Zugriff auf geteilte Inhalte
Was die App ohne Verbindung kann
Die App speichert geladene Inhalte auf dem Gerät und arbeitet damit weiter, wenn die Verbindung fehlt.
| Situation | Verhalten |
|---|---|
| Erster Start ohne Verbindung | Anmeldung und erstes Laden brauchen Internet. Danach stehen geladene Inhalte auch offline bereit |
| Tabs, Kacheln, Karten, Formulare | Werden beim Öffnen und im Hintergrund vorgeladen, auch native Formulare samt der Grids ihrer Verknüpfungen |
| Verbindung fehlt | Ein Banner zeigt „Offline · Stand von 08:15“ mit dem Zeitpunkt der letzten erfolgreichen Ladung |
| Formular abschicken ohne Verbindung | Die Abgabe wartet auf dem Gerät. Ein Zähler auf dem Startbildschirm zeigt, wie viele Formulare noch offen sind; sobald Verbindung besteht, werden sie gesendet |
| Zeiterfassung | Lesen aus dem Cache, Kommen, Pause und Gehen brauchen eine Verbindung |
| Adressbuch | Eigene Offline-Kopie pro Team, Suche und Filter funktionieren ohne Verbindung |
Was nicht offline geht
WebView-Tabs und externe Links brauchen immer eine Verbindung. Inhalte, die noch nie geladen wurden, erscheinen mit dem Hinweis „Diese Inhalte sind noch nicht auf dem Gerät gespeichert“.