Je souhaite envoyer une notification push depuis un appareil iOS vers un autre appareil iOS sans utiliser le server principal. Est-il possible pour un appareil iOS d'agir comme un server et d'envoyer une notification push au server APN? Merci d'avance.
En théorie, vous pouvez envoyer des notifications push Apple à partir d'un périphérique directement à un autre périphérique. Tout ce dont vous avez besoin est le certificate push de l'application, le jeton de périphérique de l'appareil auquel vous envoyez la notification et le code qui établit une connection TLS sécurisée aux servers APNS.
Cependant, il existe plusieurs problèmes pratiques qui rendent l'utilisation d'un server presque obligatoire:
Vous avez besoin d'un seul endroit où tous les jetons d'appareils de tous les appareils qui ont installé votre application seront envoyés et conservés. Le meilleur endroit serait un server. Sans server, comment le périphérique A enverrait-il son jeton de périphérique à d'autres périphériques souhaitant envoyer des notifications push?
Apple exige que vous gardiez les connections avec le server APNS ouvertes le plus longtime possible et que vous utilisiez la même connection pour envoyer de nombreuses notifications. Si vous ouvrez une connection au server APNS sur votre appareil, elle sera probablement de courte durée (puisque les appareils commutent fréquemment les réseaux et ne restnt pas connectés à Internet en permanence). Par conséquent, si vous essayez d'envoyer fréquemment de nombreuses notifications et que vous utilisez à chaque fois une nouvelle connection à APNS, vous serez probablement banni (puisque Apple traiterait cela comme une attaque DDoS).
Si vous stockez le certificate push dans chaque périphérique qui installe votre application (pour lui permettre d'envoyer directement des notifications push à d'autres périphériques), outre le problème de security lié au stockage du certificate, vous devrez publier une nouvelle version de votre application chaque fois que le certificate push expirait (une fois par an), et les notifications push cessaient de fonctionner pour les users qui ne procédaient pas à la mise à niveau vers la nouvelle version.
Essayez NWPusher .
Il a un cadre iOS pour l'envoi de push et a une application de démonstration iOS qui envoie des notifications push d'iOS à iOS.
Vous devez également prendre en count les coûts du server (autres que le time de maintenance et de développement si vous codez votre propre server).
En envoyant le push directement depuis le périphérique de l'application:
– vous obtenez une bien meilleure évolutivité (puisque vous n'avez pas besoin de tout centraliser sur votre server)
– Vous n'avez pas à payer pour le coût du server ou d'autres coûts de service
Vous pouvez utiliser pour iOS: – https://github.com/noodlewerk/NWPusher Pusher
Et pour Android: – Envoyer une notification push GCM par java