Zum Hauptinhalt springen

Push-Benachrichtigungen

Die client.push-API verwaltet Web-Push-Abonnements. Sie folgt dem Web Push Protocol und ermöglicht es der Anwendung, Benachrichtigungen im Hintergrund zu empfangen.

Abonnieren

Ein neues Web-Push-Abonnement durch Angabe des Push-Endpunkts und der VAPID-Keys erstellen:

final subscription = await client.push.create(
MastodonPushSubscriptionRequest(
endpoint: 'https://push.example.com/subscription/abc123',
p256dh: '<Base64url-encoded P-256 ECDH public key>',
auth: '<Base64url-encoded authentication secret>',
standard: true,
alerts: MastodonPushAlertSettings(
mention: true,
follow: true,
reblog: true,
favourite: true,
poll: true,
),
policy: 'followed', // all | followed | follower | none
),
);

print(subscription.id);
print(subscription.serverKey); // use to verify incoming pushes

Alert-Typen

MastodonPushAlertSettings akzeptiert jede Kombination der folgenden Felder. Auf null gesetzte Felder werden aus der Anfrage weggelassen und bleiben unverändert.

FeldBeschreibung
mentionIn einem Status erwähnt
quoteStatus wurde zitiert
statusNeuer Beitrag eines gefolgten Benutzers
reblogStatus wurde geboostet
followNeuer Follower
followRequestNeue Follower-Anfrage
favouriteStatus wurde favorisiert
pollEine Umfrage, an der abgestimmt oder die erstellt wurde, ist beendet
updateEin Status, mit dem interagiert wurde, wurde bearbeitet
quotedUpdateEin zitierter Status wurde bearbeitet
adminSignUpNeue Benutzerregistrierung (nur Admin)
adminReportNeue Meldung (nur Admin)

Richtlinienwerte

WertBeschreibung
allBenachrichtigungen von allen Benutzern empfangen
followedNur Benachrichtigungen von gefolgten Benutzern empfangen
followerNur Benachrichtigungen von eigenen Followern empfangen
noneAlle Push-Benachrichtigungen deaktivieren

Aktuelles Abonnement abrufen

final subscription = await client.push.fetch();
print(subscription.endpoint);
print(subscription.alerts.mention);
print(subscription.policy);

Alert-Einstellungen aktualisieren

Mit update können Alert-Einstellungen oder die Richtlinie geändert werden, ohne das Abonnement neu zu erstellen. Nur der data-Teil (Alerts und Richtlinie) kann geändert werden.

final updated = await client.push.update(
MastodonPushSubscriptionUpdateRequest(
alerts: MastodonPushAlertSettings(
mention: true,
follow: false,
),
policy: 'all',
),
);

Abonnement beenden

await client.push.delete();

Löscht das aktuelle Web-Push-Abonnement. Anschließende Aufrufe von fetch werfen eine MastodonNotFoundException.

Das MastodonWebPushSubscription-Modell

FeldTypBeschreibung
idStringAbonnement-ID
endpointStringPush-Endpunkt-URL
serverKeyStringÖffentlicher Serverschlüssel zur Verifizierung von Push-Nachrichten
alertsMastodonPushAlertsAktive Alert-Einstellungen
policyStringBenachrichtigungsrichtlinie
standardbool?Ob das Abonnement der standardisierten Web-Push-Spezifikation entspricht (Mastodon 4.4+)