Meldingstriggers-API

Gepubliceerd: 24 oktober 2019

Wat zijn notificatietriggers?

Webontwikkelaars kunnen notificaties weergeven met behulp van de Web Notifications API . Deze functie wordt vaak gebruikt in combinatie met de Push API om de gebruiker te informeren over tijdgevoelige informatie, zoals breaking news of ontvangen berichten. Notificaties worden weergegeven door JavaScript uit te voeren op het apparaat van de gebruiker.

Het probleem met de Push API is dat deze niet betrouwbaar is voor het activeren van meldingen die moeten worden weergegeven wanneer aan een bepaalde voorwaarde, zoals tijd of locatie, is voldaan. Een voorbeeld van een tijdsgebonden voorwaarde is een agenda-melding die je herinnert aan een belangrijke vergadering met je baas om 14:00 uur. Een voorbeeld van een locatiegebonden voorwaarde is een melding die je eraan herinnert om melk te kopen wanneer je in de buurt van je supermarkt komt. Netwerkverbindingsproblemen of batterijbesparende functies zoals de slaapstand kunnen de levering van pushmeldingen vertragen.

Met notificatietriggers kunt u dit probleem oplossen door notificaties met hun activeringsvoorwaarde vooraf in te plannen. Zo zorgt het besturingssysteem ervoor dat de notificatie op het juiste moment wordt verzonden, zelfs als er geen netwerkverbinding is of het apparaat in de energiebesparende modus staat.

Gebruiksvoorbeelden

Agenda-apps kunnen tijdsgebonden meldingen gebruiken om gebruikers te herinneren aan aankomende vergaderingen. Het standaard meldingsschema voor een agenda-app zou bijvoorbeeld kunnen zijn om een ​​eerste waarschuwing een uur voor een vergadering weer te geven en vervolgens een tweede, dringendere melding vijf minuten van tevoren.

Een tv-zender kan gebruikers eraan herinneren dat hun favoriete tv-programma op het punt staat te beginnen of dat een livestream van een conferentie van start gaat.

Websites die tijdzones omrekenen, kunnen tijdsgebonden notificatietriggers gebruiken om gebruikers alarmen te laten instellen voor telefonische vergaderingen of videogesprekken.

Huidige status

Stap Status
1. Maak een uitleg Compleet
2. Stel een eerste concept van de specificatie op. Nog niet begonnen
3. Verzamel feedback en pas het ontwerp aan. In behandeling
4. Oorsprongsproef Compleet
5. Lancering Nog niet begonnen

Gebruik meldingstriggers

Om lokaal te experimenteren met de Notification Triggers API, zonder een origin trial token, schakel je de vlag #enable-experimental-web-platform-features in about://flags .

Kenmerkdetectie

Je kunt controleren of de browser notificatietriggers ondersteunt door te kijken of de eigenschap showTrigger bestaat:

if ('showTrigger' in Notification.prototype) {
  /* Notification Triggers supported */
}

Plan een melding in

Het inplannen van een notificatie is vergelijkbaar met het weergeven van een gewone pushnotificatie, met als enige verschil dat u een showTrigger -voorwaarde met een ` TimestampTrigger -object als waarde moet doorgeven aan het `notification options -object.

const createScheduledNotification = async (tag, title, timestamp) => {
  const registration = await navigator.serviceWorker.getRegistration();
  registration.showNotification(title, {
    tag: tag,
    body: 'This notification was scheduled 30 seconds ago',
    showTrigger: new TimestampTrigger(timestamp + 30 * 1000),
  });
};

Een geplande melding annuleren

Om geplande meldingen te annuleren, moet u eerst een lijst opvragen van alle meldingen die overeenkomen met een bepaalde tag via ServiceWorkerRegistration.getNotifications() . Houd er rekening mee dat u de vlag includeTriggered moet doorgeven om geplande meldingen in de lijst op te nemen.

const cancelScheduledNotification = async (tag) => {
  const registration = await navigator.serviceWorker.getRegistration();
  const notifications = await registration.getNotifications({
    tag: tag,
    includeTriggered: true,
  });
  notifications.forEach((notification) => notification.close());
};

Foutopsporing

Je kunt het paneel 'Meldingen' van Chrome DevTools gebruiken om meldingen te debuggen. Om te beginnen met debuggen, druk je op ' Start met het opnemen van gebeurtenissen'. Begin met het vastleggen van gebeurtenissen Of druk op Control + E ( Command + E op Mac). Chrome DevTools registreert alle notificatiegebeurtenissen, inclusief geplande, weergegeven en gesloten notificaties, gedurende drie dagen, zelfs wanneer DevTools gesloten is.

Een geplande notificatiegebeurtenis is vastgelegd in het deelvenster Notificaties van Chrome DevTools, dat zich in het paneel Toepassingen bevindt.
Een geplande melding.
Een weergegeven notificatiegebeurtenis is vastgelegd in het deelvenster Notificaties van Chrome DevTools.
Een weergegeven melding.

Demo

In een demo kon je notificatietriggers in actie zien, waarmee je notificaties kon plannen, een lijst met geplande notificaties kon bekijken en ze kon annuleren.

De demo-webapplicatie voor notificatietriggers.

Beveiliging en machtigingen

Het Chrome-team heeft de Notification Triggers API ontworpen en geïmplementeerd volgens de kernprincipes die zijn vastgelegd in Controlling Access to Powerful Web Platform Features , waaronder gebruikerscontrole, transparantie en ergonomie. Omdat deze API service workers vereist, is ook een beveiligde context nodig. Voor het gebruik van de API zijn dezelfde machtigingen vereist als voor reguliere pushmeldingen.

Gebruikersbesturing

Deze API is alleen beschikbaar in de context van een ServiceWorkerRegistration . Dit betekent dat alle benodigde gegevens in dezelfde context worden opgeslagen en automatisch worden verwijderd wanneer de service worker wordt verwijderd of wanneer de gebruiker alle sitegegevens voor de betreffende website verwijdert. Het blokkeren van cookies voorkomt ook dat service workers in Chrome worden geïnstalleerd en dus dat deze API kan worden gebruikt. Meldingen voor de website kunnen altijd door de gebruiker worden uitgeschakeld in de site-instellingen.

Transparantie

In tegenstelling tot de Push API is deze API niet afhankelijk van het netwerk. Dit betekent dat voor geplande meldingen alle benodigde gegevens vooraf beschikbaar moeten zijn, inclusief de afbeeldingsbronnen waarnaar wordt verwezen door de badge , icon en image . Hierdoor is het weergeven van een geplande melding niet zichtbaar voor de ontwikkelaar en hoeft de service worker pas te worden geactiveerd wanneer de gebruiker interactie heeft met de melding.

Op het moment van schrijven is er geen bekende manier waarop de ontwikkelaar informatie over de gebruiker zou kunnen verkrijgen via potentieel privacyschendende methoden zoals het opzoeken van geolocatiegegevens via IP-adressen. Dit ontwerp maakt het ook mogelijk dat de functie optioneel gebruikmaakt van planningsmechanismen van het besturingssysteem, zoals Android's AlarmManager , wat helpt om de batterij te sparen.

Feedback

Het Chrome-team wil graag meer horen over uw ervaringen met notificatietriggers.

Vertel ons iets over het API-ontwerp.

Werkt er iets aan de API niet zoals je had verwacht? Of ontbreken er methoden of eigenschappen die je nodig hebt om je idee te implementeren? Heb je een vraag of opmerking over het beveiligingsmodel? Dien een specificatieprobleem in op de GitHub-repository van Notification Triggers , of voeg je gedachten toe aan een bestaand probleem.

Probleem met de implementatie?

Heb je een bug gevonden in de implementatie van Chrome? Of wijkt de implementatie af van de specificatie? Meld een bug op new.crbug.com . Vermeld zoveel mogelijk details, instructies voor het reproduceren van de bug en stel Components in op UI>Notifications .

Ben je van plan de API te gebruiken?

Ben je van plan om notificatietriggers op je website te gebruiken? Jouw publieke steun helpt ons om prioriteit te geven aan nieuwe functies en laat andere browserleveranciers zien hoe belangrijk het is om ze te ondersteunen. Stuur een tweet naar @ChromiumDev met de hashtag #NotificationTriggers en laat ons weten waar en hoe je het gebruikt.

Handige links

Dankbetuigingen

Notification Triggers is geïmplementeerd door Richard Knoll en de toelichting is geschreven door Peter Beverloo , met bijdragen van Richard. De volgende personen hebben het artikel beoordeeld: Joe Medley , Pete LePage , en Richard en Peter.