Un moyen quelconque pour envoyer des notifications / vibrations en arrière plan ?

Sur mobile. Sans possibilité, ça perd tout son intérêt...

a marqué ce sujet comme résolu.

Bonjour.

Dans le cadre d’un site web proposant, entre autres, un compteur temporel pour surveiller le temps d’exécution d’une action IRL, j’avais envie d’utiliser les plus-ou-moins-nouvelles API HTML5 pour contrôler les notifications et vibrations d’un appareil mobile. Le cas d’utilisation typique étant de lancer le compteur en touchant un bouton, d’éteindre son téléphone et de le laisser dans sa poche, et d’attendre de sentir la vibration pour savoir que c’est fini. Simple.

Problème, il semblerait qu’il n’y ait aucun moyen d’envoyer des notifications ou de faire vibrer un appareil quand le navigateur n’est pas au premier plan, ou l’appareil verrouillé. Ça perd tout de même un peu tout son intérêt, vu que les seuls cas restant étant ceux où l’utilisateur a le site sous les yeux. À part pour des effets (pour les vibrations), super utile !…
(Testé sur Firefox et Chrome sur Android — ce dernier ne supporte pas du tout les notifications d’ailleurs)

J’ai fouillé le web sans trouver grand chose pour contourner (si ce n’est « fait une application Android », lel nope). Mais à tout hasard, peut-être que j’ai raté une option obscure pour envoyer des notifications ou des vibrations lorsque le site n’est pas au premier plan. Peut-être, dans le cas des premières, via l’API Push ? Du moins s’il est possible de s’en servir 100% en local… ce qui serait un usage assez détourné.

Merci d’avance pour toute réponse :) .

Ce n’est pas directement utile, mais à titre indicatif, voilà ce que j’utilise pour envoyer les notifications / vibrations. C’est un usage tout basique et direct de l’API.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
// À la première interaction avec un compteur

if ("Notification" in window)
    Notification.requestPermission();


// Plus tard, au bon moment.
// Dans un setInterval en l'occurrence, mais on s'en moque en pratique.

if ("Notification" in window)
{
    var notification = new Notification(title, {
        lang: 'fr',
        body: notification_body,
        renotify: true
    });
}

if ("vibrate" in window.navigator)
{
    window.navigator.vibrate([200, 100, 200]);
}
+0 -0

Bonjour AmauryPi,

Je t’aurais fait une réponse plus détaillée si j’avais le temps la maintenant, mais en gros, ça existe, et ça s’appelle les ServiceWorkers. C’est workers partagés entre toutes les instances (= onglets/fenêtres) de ton app, et qui peuvent être réveillés en background à diverses occasions, dont via des notifications push.

L’un des premiers objectifs des ServiceWorkers, c’est de permettre à l’application de faire un contrôle très fin sur les requêtes réseau de l’appli, et via ça, permettre de mettre en cache l’application, pour qu’elle fonctionne offline.

Jake Archibald est un type de la dev team de Chrome qui fait beaucoup de présentations autour de ça. L’une d’entre elle, qui devrait parler du concept global des serviceworkers (elle date de 2014, donc elle est peut-être pas totalement à jour) se trouve sur la chaine YouTube de Google Developers. Je t’invite aussi à jeter un coup d’œil à son blog, ainsi qu’à ce dépôt, contenant un bon nombre d’exemple d’utilisations de ServiceWorkers.

(au passage, c’est une techno standardisée, dispo dans Chrome, Firefox et Opéra)

Si tu es complètement perdu avec ça, je peux te faire une réponse un peu plus détaillée d’ici demain :)

+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte