Projet

Général

Profil

Development #79052

Fonctionnement des notifications sur IOS

Ajouté par Olivier Renard il y a 10 mois. Mis à jour il y a 2 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
26 juin 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Suite à #76250, le demande est de faire fonctionner les notifications sur IOS.


Demandes liées

Lié à Combo - Development #70987: pwa: utiliser correctement pywebpushFermé04 novembre 2022

Actions
Lié à Combo - Development #70988: pwa: utiliser un ttl différent de 0Fermé04 novembre 2022

Actions
Lié à Combo - Development #85458: pwa: l'état des souscriptions aux notifications webpush peut-être désynchronisé entre combo et le navigateurFermé09 janvier 2024

Actions
Lié à Combo - Development #87413: pwa: utiliser le domaine du tenant pour le sub du jeton JWT/VAPIDFermé23 février 2024

Actions

Historique

#2

Mis à jour par Benjamin Dauvergne il y a 5 mois

#3

Mis à jour par Benjamin Dauvergne il y a 5 mois

#4

Mis à jour par Olivier Renard il y a 4 mois

Test fait ce jour sur ios 17.1.2.
Les notifications de la PWA sont bien activées, mais il n'y a pas de notification recue.
Cela confirme #76250-2

#5

Mis à jour par Benjamin Dauvergne il y a 4 mois

Les recommandations par Apple (https://developer.apple.com/documentation/usernotifications/sending_web_push_notifications_in_web_apps_and_browsers) correspondent en partie aux tickets que j'ai ouvert :

Send your notification request to the recipient’s endpoint

Prepare your push notification request according to the specification. Then send the notification request over HTTP/1.1 or HTTP/2 to the endpoint you stored from the recipient’s push registration.

The push notification service supports HTTP pipelining for HTTP/1.1. Don’t send more than 100 unacknowledged push requests over the connection. There’s a limit of concurrent streams for HTTP/2. Don’t make assumptions about the number of concurrent streams allowed; instead, don’t exceed the SETTINGS_MAX_CONCURRENT_STREAMS value in the HTTP/2 SETTINGS frame.

Include the standard headers with your push notification request:

TTL

    The number of seconds before your message expires. If the push service can’t deliver a notification immediately, it may store the notification for 30 days or fewer, depending on the value you specify. The push service attempts to deliver the notification the next time the device activates and is available online. If the push service can’t deliver the notification, the push service removes the notification from storage permanently. The number of notifications the push services stores while the device is offline is limited.

C'est #70988.

Authorization
    The VAPID JSON web token (JWT) and public key.The public key you include must match the public key you provided to PushManager.subscribe. Don’t refresh your JWT more frequently than once per hour.

C'est #70987.

Content-Encoding

    The name of the encryption method you used to encrypt the payload. If the payload is empty, you may omit this header

Ça c'est déjà géré par pywebpush, mais le fait d'utiliser le chiffrement aes128gcm qui est celui préconisé par la RFC est peut-être mieux.

Topic
    Optional identifier that the push service uses to coalesce notifications. Use a maximum of 32 characters from the URL or filename-safe Base64 characters sets.

On n'utilise pas. (PS: ça sert à remplacer un message déjà envoyé, https://autopush.readthedocs.io/en/latest/http.html#topic, ex.: "Demande xyz reçue." -> "Demande xyz en cours de traitement")

Urgency

    Indication of whether to send the notification immediately or prioritize the recipient’s device power considerations for delivery. Provide one of the following values: very-low, low, normal, or high. To attempt to deliver the notification immediately, specify high.

On n'utilise pas, mais à lire https://datatracker.ietf.org/doc/html/rfc8030#section-5.3 on devrait mettre "low" je pense.

#6

Mis à jour par Benjamin Dauvergne il y a 4 mois

Olivier Renard a écrit :

Test fait ce jour sur ios 17.1.2.
Les notifications de la PWA sont bien activées, mais il n'y a pas de notification recue.
Cela confirme #76250-2

Je ne trouve pas d'erreur lié à ton essai (https://sentry.entrouvert.org/entrouvert/publik/?query=is%3Aunresolved+webpush) est-ce que tu peux me dire sur quelle instance tu as fait ton test et avec quel compte ?

#7

Mis à jour par Benjamin Dauvergne il y a 4 mois

  • Statut changé de Nouveau à Information nécessaire
  • Assigné à mis à Olivier Renard
#8

Mis à jour par Olivier Renard il y a 4 mois

  • Assigné à changé de Olivier Renard à Benjamin Dauvergne

Test fait sur https://portail-orenard.test.entrouvert.org/notifications/, avec la démarche https://demarches-orenard.test.entrouvert.org/tests/test-fonction-pwa/
Je n'ai pas d'erreur, mais je n'ai pas de notification sur ma version d'ios.

J'ai fait le test avec le compte

#9

Mis à jour par Benjamin Dauvergne il y a 4 mois

Olivier Renard a écrit :

Test fait sur https://portail-orenard.test.entrouvert.org/notifications/, avec la démarche https://demarches-orenard.test.entrouvert.org/tests/test-fonction-pwa/
Je n'ai pas d'erreur, mais je n'ai pas de notification sur ma version d'ios.

Tu n'auras jamais d'erreur "visible" tout part dans les logs ou les notifications sont simplement abandonnées par le serveur de push (Apple ou Google), mais je veux voir au niveau des logs si jamais il y a des erreurs visibles.

#10

Mis à jour par Benjamin Dauvergne il y a 4 mois

Il n'y a aucune inscription WebPush sur portail-orenard vers un serveur d'Apple, uniquement pour Firefox. L'autorisation de webpush n'a pas du marcher.

In [6]: PushSubscription.objects.get().user
Out[6]: <User: Olivier Renard>

In [7]: PushSubscription.objects.get().subscription_info['endpoint']
Out[7]: 'https://updates.push.services.mozilla.com/wpush/v2/xxxxxxx'
#11

Mis à jour par Benjamin Dauvergne il y a 4 mois

  • Assigné à changé de Benjamin Dauvergne à Olivier Renard

Est tu bien en iOS 16.4 (PS: effectivement ça marche en PWA depuis 16.4 beta 1) ? PS: utilises-tu bien Safari ? As-tu bien ajouté la PWA à ton écran d'accueil ? As-tu donné l'autorisation webpush depuis l'application lancé depuis l'écran d'accueil (donc installer, sortir de safari, réouvrir le site depuis l'icône) ?

#12

Mis à jour par Olivier Renard il y a 4 mois

  • Assigné à changé de Olivier Renard à Benjamin Dauvergne

ios 17.1.2
oui j'ai utilisé safari pour ajouter à l'écran d'accueil (sinon pas possible)
oui la pwa est bien ajoutée à l'écran d'accueil
oui, les notifications sont activées depuis l'écran d'accueil (mais je ne vois plus le bouton désactiver pour l'instant)
oui, l'envoi de notification est activé dans les reglages ios
oui, je reouvre bien le site depuis l'icone

Je vais tout refaire, et te tiens au courant (demain)
je cherche.

#13

Mis à jour par Benjamin Dauvergne il y a 4 mois

Olivier Renard a écrit :

oui, les notifications sont activées depuis l'écran d'accueil (mais je ne vois plus le bouton désactiver pour l'instant)

De ce coté on a peut-être un souci d'incohérence entre l'état du navigateur et celui de combo, possible que ce soit activé dans le navigateur mais que combo n'ait pas conservé l'enregistrement, si on trouve que les notifications sont activés, il faut tenter de repousser ça vers combo dès que possible ou au moins comparer avec l'état connu.

#14

Mis à jour par Benjamin Dauvergne il y a 4 mois

  • Lié à Development #85458: pwa: l'état des souscriptions aux notifications webpush peut-être désynchronisé entre combo et le navigateur ajouté
#15

Mis à jour par Olivier Renard il y a 4 mois

La séquence faite est la suivante sur ios:

La notification est recue sur firefox
Il n'y a pas de notification sur ios.

#16

Mis à jour par Benjamin Dauvergne il y a 4 mois

Là j'ai une belle erreur https://sentry.entrouvert.org/entrouvert/publik/issues/108494/?query=is%3Aunresolved

10:06:22
httplib    

POST https://web.push.apple.com/QDMo3psX2nJAP4SZnFxs-5cvoORCd7WMR1JxKpzesWDlKTYOwrD3txQlPXTrRc6dChv1rmsr2mItxnLrYEWJsFOxbW9o1OzmcHntLp15iYoR6-3M3EdV0h2YGRdJdzW7yJyMrr5cJkiv9iMOOcIx7jq1K05fDp0fUSWHA0ldlPs [403]

reason    Forbidden

On peut penser que ce sont les versions obsolète de pywebpush&etc qui posent problème.

#17

Mis à jour par Benjamin Dauvergne il y a 4 mois

  • Statut changé de Information nécessaire à En cours
#18

Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Statut changé de En cours à Solution déployée
  • Assigné à changé de Benjamin Dauvergne à Olivier Renard

À retester avec le code actuellement en recette.

#19

Mis à jour par Olivier Renard il y a 2 mois

  • Assigné à changé de Olivier Renard à Benjamin Dauvergne

Test ko, fait sur ios 17.2.1 sur https://demarches-orenard.test.entrouvert.org/tests/test-fonction-pwa/.
Je n'ai pas de notifications.
Je recois bien la notification sur Firefox.

Sur ios:
#20

Mis à jour par Benjamin Dauvergne il y a 2 mois

Ouaip c'est pas mieux : https://sentry.entrouvert.org/entrouvert/publik/issues/122574/

'403 Client Error: Forbidden for url: https://web.push.apple.com/QOMQ5KnQ293xnSnL6qJjgckvy1amJsZCXuiQOpdMa7sEi1HhUIkaycgJCWdcoYaXaalnXE1khhl45RFgoOfp6LljAHkAqUgpKn5JwY_A-T94qBn3W-LV8kIDxcyJQiy4vvXh_0rUQrhiK9R54uvlm_2kDSTdkv6kg13ZpFmcOIM'

PS: avec le contenu de la réponse

(Pdb) p response.content
b'{"reason":"BadJwtToken"}'

#21

Mis à jour par Benjamin Dauvergne il y a 2 mois

Ok c'est le mailto du JWT qui n'est pas bon:

b'{"aud":"https://web.push.apple.com","exp":1708776410,"sub":"mailto:\\"PublikOR\\" <noreply+publik.test.orenard@entrouvert.com>"}'

https://forums.developer.apple.com/forums/thread/725473

#22

Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Lié à Development #87413: pwa: utiliser le domaine du tenant pour le sub du jeton JWT/VAPID ajouté
#23

Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Statut changé de Solution déployée à En cours
#24

Mis à jour par Benjamin Dauvergne il y a 2 mois

Olivier Renard a écrit :

Test ko, fait sur ios 17.2.1 sur https://demarches-orenard.test.entrouvert.org/tests/test-fonction-pwa/.
Je n'ai pas de notifications.

Il manquait encore un détail, ça doit être corrigé maintenant.

#25

Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Statut changé de En cours à Solution proposée
  • Assigné à changé de Benjamin Dauvergne à Olivier Renard
#26

Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Statut changé de Solution proposée à Solution déployée
#27

Mis à jour par Olivier Renard il y a 2 mois

Je recois effectivement des notifications sur ios.
(Dans l'après midi ce n'était pas instantané, je ne sais pas pourquoi.)

A cette heure, les notifications sont instantanées, ca fonctionne, c'est top.
Les notifications ios fonctionnent à ce jour.

merci bon boulot!

#28

Mis à jour par Transition automatique il y a un jour

Automatic expiration

Formats disponibles : Atom PDF