Batch pour les développeurs

Majoritairement utilisé par des directions marketing, Batch est néanmoins avant tout une plateforme pour développeurs, conçue et maintenue par des développeurs. Depuis 2009, notre équipe s’est confrontée à presque toutes les difficultés possibles, a rencontré et réglé un nombre de edge-cases conséquents, a géré elle-même les problèmes de scalabilité propres aux volumes très importants de données que l’environnement mobile est capable de générer.

En construisant Batch, nous avons donc pris une approche résolument différente de celle de nos concurrents et adopté votre point de vue : de la qualité du code de notre SDK, à son absence de dépendences externes; de nos applications de test permettant de rentrer directement les bonnes pratiques d’implémentation, à nos outils de débugging; de la gestion des tokens canonicals et des complexités d’APNS et GCM jusqu’à la scalabilité particulièrement importante de notre plateforme, notre transparence totale sur l’uptime, la clarté de notre documentation et notre garantie d’accompagnement personnalisé à toutes les étapes d’intégration : vous ne regretterez pas, comme des milliers d’autres développeurs dans le monde, d’avoir confié votre push à Batch.

Comme vous pouvez le voir également sur notre page tarifs, Batch est un service disposant d’un réel modèle économique. Nous ne sommes pas « Freemium » : cela signifie que nous ne sommes pas prêts de fermer du jour au lendemain, que vos données sont sécurisées et jamais accédées par des tiers, et que notre support technique est impeccable car votre investissement nous permet d’embaucher des experts, qui sont là pour vous répondre rapidement et précisément.

1 500 000 000
événements / mois
350 000 000
downloads du Batch SDK
2 000 000 000
notifications push / mois
8
nouveaux users / seconde

15 raisons de confier votre push à Batch

  1. Une scalabilité délirante avec plus de 35,000,000 d’events loggués chaque jour et > 99,9% d’uptime constaté
  2. Batch gère pour vous toute la complexité d’APNS, GCM et WNS
  3. Support des certificats universels & des API-plateformes les plus récentes
  4. Un service 100% basé sur des APIs pour maitriser votre intégration
  5. Des apps de test sur Github pour voir le code d’une intégration type
  6. Des outils de débugging directement dans l’interface
  7. Un SDK résilient conçu pour ne jamais perdre de données
  8. Pas de dépendances externes du SDK, ni de librairies tierces cachées
  9. Permissions demandées par le Batch SDK
  10. Poids du SDK
  11. Support et utilisation des push silencieux
  12. Support et utilisation du custom payload
  13. Support Maven/Cocoapod
  14. Une documentation mise à jour quotidiennement
  15. Une plateforme sécurisée
1

Une scalabilité délirante avec plus de 35,000,000 d’events loggués chaque jour et > 99,9% d’uptime constaté

Au coeur de notre réflexion figure la scalabilité d’une plateforme ouverte pensée pour accueillir des dizaines de milliers d’applications, envoyer des milliards de notifications push et enregistrer, de manière fiable et rapide, des dizaines de milliards d’événements chaque mois.

Cette réflexion se matérialise dans des choix techniques et dans un type d’architecture bien spécifique. Batch a notamment fait le choix de déployer en production Cassandra : la base de données NoSQL créée et open-sourcée par Facebook, utilisée par Apple, Netflix et Spotify, et dont certains de nos ingénieurs sont des experts français reconnus qui interviennent régulièrement à des conférences et workshops spécialisés.

Notre plateforme repose entièrement sur des microservices qui communiquent tous autour d’un outil central : Apache Kafka, un système unifié à latence faible pensé spécifiquement pour la manipulation de flux de données en temps réel. Chaque message qui entre dans notre système est ingéré et traité par une multitude de services pour être mis à jour, indexé, comptabilisé puis stocké dans Cassandra. Cette architecture, parfaitement temps-réel, a également l’avantage de pouvoir scaler horizontalement.

Enfin, du point de vue de la délivrabilité, Cassandra nous offre une possibilité de sélection plus rapide et scalable que la plupart des technologies de bases de données utilisées ailleurs, dont nous tirons parti grâce à de nombreuses technologies propriétaires qui permettent d’executer des requêtes complexes en temps réel, et d’obtenir les cadences de sortie les plus rapide sur plusieurs milliards de notifications routées chaque mois.

2

Batch gère pour vous toute la complexité d’APNS, GCM et WNS

Plusieurs plateformes : autant de mises à jours, de cas isolés, de comportements erratiques ou non-documentés, de différences de langages ou de complexités techniques, de tokens invalides à purger ou à ré-attribuer à de nouveaux devices dans le cas de Canonicals …

… très vite, maintenir ses tokens à jour devient un réel challenge.

Batch permet d’abstraire la complexité avec ou sans l’utilisation de notre CustomID, dans le cas de campagnes push, ou de pushs transactionnels : notre plateforme supporte les changements de token dans la plupart des situations de reset (Le concept de tokens canonicals vous fait transpirer ? Batch le gère pour vous.) quand l’utilisateur déinstalle+réinstalle votre application (cas très courant en pratique), ou quand Apple ou Google décident de rafraichir les tokens au moment des mises à jour d’OS (c’est toujours sans prévenir). Enfin, quand par exemple un backup client est réinstallé sur un nouveau téléphone ...

Surtout, notre CustomID, véritable abstraction au niveau de l’utilisateur et qui gère le multi-device device et s’interface avec de nombreuses briques d’identification comme le Facebook Login, Twitter Login ou encore le login email, et vous permet de ne plus vous préoccuper du tout de cette couche de complexité.

3

Support des certificats universels & des API-plateformes les plus récentes

Batch dispose par ailleurs de relations avec les API-plateformes et les équipes qui les maintiennent, c’est ainsi que nous avons pu beta-tester la nouvelle API HTTP/2 d’Apple dès juin 2015 et l’avions implémentée dès décembre 2015 tout en maintenant l’API legacy.

Nos processus de set-ups suivent également chaque avancée de chaque plateforme, nous avons par exemple récemment introduit la possibilité d’authentifier ses clefs de push grâce aux nouveaux certificats P12 proposés par Apple qui permettent de gérer les environnement de développement et de production grâce à un certificat unique.

4

Un service 100% basé sur des APIs pour maitriser votre intégration

Besoin d’intégrer des fonctionnalités de Batch dans une console existante ?
De redescendre des statistiques de performance ou la liste de vos campagnes ?
De pusher à partir de votre back-end ?
De commander plusieurs app à la fois ?

Batch propose des d’API REST “Campaigns” (1-to-many) et “Transactional” (1-to-1) largement documentées et répondant à tous les besoins d’accès programmatique à vos actions et données push. Elles intègrent également des options malines comme des IDs de débug qui permettent de remonter les problèmes rencontrés auprès de notre équipe support.

Pour en savoir plus, rendez vous sur https://batch.com/doc/api/prerequisites.html.

5

Des apps de test sur Github pour voir le code d’une intégration type

Ah, les lundis matins…

… pas une grosse envie de vous prendre la tête avec notre sublime (mais néanmoins dense) documentation pour commencer votre intégration ?

Nous hébergons sur Github (@BatchLabs) plusieurs projets de test (un pour chaque OS) qui permettent de rentrer directement dans le code d’une bonne intégration de Batch : en téléchargeant ces apps, vous visualisez immédiatement les bonnes pratiques et les bons appels à faire aux bons endroits.

Créez dès maintenant votre compte gratuit sur Batch, téléchargez nos apps de test sur Github et réalisez une intégration de test capable d’envoyer des pushs sur votre clef de DEV en quelques minutes... un peu comme Kévin :

6

Des outils de débugging directement dans l’interface

Fruit d’innombrables feedbacks et de discussions continues avec nos clients pour intégrer des solutions à leurs besoins, notre dashboard web embarque de plus en plus d’outils dédiés aux phases de débugging (ou “recettage” en français ou encore “débarbouillettage du code” en québécois).

Allez sur Dashboard > Settings (⚙) > Debug, pour accéder à notre interface de troubleshooting. Vous pouvez notamment rechercher vos utilisateurs par CustomID ou InstallationID et accéder directement à leurs caractéristiques et attributs tels que Batch les stocke

7

Un SDK résilient conçu pour ne jamais perdre de données

Notre SDK a été pensé dès le début de sa conception pour parer aux pertes de connectivité et latences et crashs, propres aux environnements mobiles.

Que l’on parle d’évènements, de tags ou d’autres attributs utilisateur, le SDK de Batch stocke toutes les données que vous lui donnez sur le disque (via sqlite) avant de les envoyer: il ne perd jamais de données, même si le téléphone, lui, perd la connectivité, si l’app plante ou si l’OS termine l’app avant l’envoi. Dès que possible, la synchronisation des données se fait. Ce qui fait que coté serveur, vous disposez toujours des donnnées les plus à jour possible.

8

Pas de dépendances externes du SDK, ni de librairies tierces cachées

À l’exception des bases sur Android, comme GCM que Google rend obligatoire ou encore l’inévitable support-v4, notre SDK n’embarque ou ne dépend d'aucune bibliothèque tierce susceptible de poser des problèmes de sécurité, de poids, de conflits avec le code de votre app ou même de performances. Pas de risque non plus coté permissions supplémentaires : les seules qui sont demandées sont détaillées au point suivant, et ne changent jamais.

9

Permissions demandées par le Batch SDK

Elles sont au nombre de trois, et Batch ne les intègrera pas dans votre dos: vous validerez manuellement leur ajout pendant la phase de développement, de manière à garder le contrôle total sur votre intégration :

  1. Accès internet
  2. Vibration
  3. WAKE_LOCK*

* Pourquoi WAKE_LOCK ? Comme l’avez peut-être remarqué, notre intégration SDK recommande d'ajouter la permission WAKE_LOCK pour une raison très simple : Google le recommande lui même pour l'implémentation de GCM. Pour être plus précis, Batch utilise seulement WakefulBroadcastReceiver pour empêcher le téléphone de se (re)mettre en veille pendant la génération de la notification. En effet, lorsqu'un utilisateur reçoit un push, du code est exécuté dans l'app pour parser le payload, charger l'image s'il y en a une, et générer le template dans le centre de notification. Et il est très possible que le téléphone (le processeur) "s'éteigne" pendant ce délai entre la réception et l'affichage (et donc que la notification soit reçue mais jamais affichée à l'écran car coupée dans son élan..). Batch fait évidemment extrêmement attention à n'utiliser cette permission que pendant ce temps là, l'impact sur la consommation batterie (liée au CPU) est donc inexistant ou marginal. À noter que cette permission additionnelle ne bloque pas la mise à jour automatique Google Play (contrairement à d'autres permissions plus strictes comme l'accès aux contacts, la localisation etc.).

10

Poids du SDK

Nous ne sommes pas particulièrement satisfaits de ce résultat, mais notre SDK iOS dans sa forme redistribuée pèse environ 13Mo : c’est qu’il n’en faut pas moins pour supporter toutes les versions d’iPhones et d’iPad désormais en circulation sur le marché, en plus des simulateurs ! À noter tout de même que utilisateur final, lui, ne téléchargera que la version qui lui correspond au moment de télécharger votre app.

Avantage de son inconvénient, le SDK est disponible pour toutes les architectures et intègre son bitcode.

Coté Android en revanche c’est, hyper-light : 400ko tout mouillé.

11

Support et utilisation des push silencieux

Batch supporte les push silencieux qui permettent de remonter des informations à distance pour réveiller l’application et la rafraichir sans déranger l’utilisateur (les push silencieux utilisent le payload pour désactiver les évenements visuels et sonores des push). Les utilisations sont multiples et pratiques : remontées d’informations à distance, mise à jour forcée de l’audience et de ses paramètres, pré-chargement de data sur des paquets lourds ou petites mises à jour ne nécessitant pas de resoumettre une app auprès d’Apple, Google ou Microsoft.

12

Support et utilisation du custom payload

Batch propose également de prendre la main sur le payload et ce, directement depuis notre dashboard au moment de la création des campagnes en suivant Dashboard > Push > New push campaign > Advanced settings.

Le champ supporte du code au format JSON (contactez le support pour qu’on vous donne des bouts de codes déjà écrits, en fonction des comportements que vous souhaitez obtenir) et vous pouvez tester les comportements en production directement sur votre téléphone grâce à la fonction “M’envoyer un push à moi-même” + votre token.

13

Support Maven/Cocoapod

Ce sont désormais des outils standards du marché et bien entendu Batch les supporte et vous permet de centraliser l’intégration des dépendances dans votre projet. Si vous n’êtes pas amateurs de ce genre de solution, on vous donne aussi les fichiers à intégrer manuellement.

14

Une documentation mise à jour quotidiennement

Ça parait bête, mais une documentation, c’est comme un frigo , c’est mieux quand c’est bien rangé et rempli de bonnes choses : on est content de l’ouvrir.

La documentation de Batch, à laquelle nous consacrons tant d’efforts, reçoit des éloges quotidiens. Et c’est pourquoi en retour, nous nous engageons à la mettre à jour quotidiennement aussi, pour refléter les évolutions de notre plateforme et les nouvelles features que nous shippons constamment. Enfin grâce à Algolia, une autre start-up française qui change la donne, vous pouvez désormais chercher directement dans son contenu, pour des recherches facilitées.

15

Une plateforme sécurisée

Finalement, last but not least, Batch traite et stocke ses données dans des datacenters basés en France et nous respectons donc les contraintes de data privacy de nos clients européens.

Nos serveurs, à l’exception des frontaux, sont dans des réseaux privés et ne sont donc pas exposés sur le web.

Les échanges SDK <> web-services de Batch sont opérés de façon sécurisée en HTTPS (TLS 1.2) et le payload des requêtes/réponses est chiffré en AES256 avec des clés dynamiques.

Créer votre compte
et activez votre essai gratuit

Créez votre compte

Vous permet d'explorer la plateforme par vous-même, d'accéder à un compte de test, de parcourir notre documentation.

ou
Organiser une démo

Contactez notre équipe commerciale pour organiser une démonstration de notre outil et de ses possibilités - online ou dans vos locaux.