Intrudução
O Mobile Mind Push Server oferece um serviço para envio de notificações push para as seguintes plataformas:
- Android FCM
- IOS
O sistema encapsula toda a complexidade que envolve envio de mensagens para cada uma dessas plataformas através de uma unica API.
Nesse artigo veremos como:
- Recuperar todos os usuários
- Enviar notificações
**** Todas as chamadas requerem autenticação basic
Recupernado os usuários da minha aplicação
Ao acessar um aplicativo devidamenta configurado, um token é gerado e enviado para o servidor Push Server juntamente com informações sobre o usuário. Para recuperar esses usuários usamos a API da seguinte forma:
GET http://push.mobilemind.com.br/apps/myapp-channel
exemplo de retorno
{
"fulano@email.com": [
{
"subscriber_id": "ERyVTeIuyP",
"name": "Fulano de tal",
"email": "fulano@email.com",
"production": true,
"ios": false,
"android": true
},
{
"subscriber_id": "PoiiHgFFt",
"name": "Fulano de tal",
"email": "fulano@email.com",
"production": true,
"ios": true,
"android": false
}
], "sicrano@email.com": [
{
"subscriber_id": "UHdsuUYuY",
"name": "Sicrano e tal",
"email": "sicrano@email.com",
"production": true,
"ios": false,
"android": true
}
]}
Para cada email retornará uma lista de dispositivos registrador, cada qual com seu identificador (subscrible_id)
Enviando notificações:
POST http://push.mobilemind.com.br/event/myapp
conteúdo da mensagem
data = {
'msg': "Mensagem da notificação",
'title': 'Título da notificação',
'data.user_id': subscriber_id
}
conteúdo da mensagem
data = {
'msg': "Mensagem da notificação",
'title': 'Título da notificação',
'data.user_id': subscriber_id
}
Código exemplo
python
# -*- coding: utf-8 -*-
import requests
import json
from requests.auth import HTTPBasicAuth
class NotificationService(object):
def __init__(self):
self.push_server = 'http://push.mobilemind.com.br'
self.basic_auth = HTTPBasicAuth('user-name', 'user-password')
self.channel = "app-channer"
def list_users(self):
action = 'apps/%s' % self.channel
r = requests.get("%s/%s" % (self.push_server, action), auth=self.basic_auth)
return r.json()
def do_notify_user(self, notification, username):
notification_users = self.list_users()
user_push = None
for username in notification_users:
if username != username:
continue
user_push = notification_users[username]
break
if not user_push:
raise Exception("user %s not found" % username)
for it in user_push:
self.do_notify(notification, it['subscrible_id'])
def do_notify(self, note, subscrible_id):
action = 'event/%s' % self.channel
nt = {
'msg': note.message,
'title': note.title,
'data.user_id': subscrible_id
}
requests.post("%s/%s" % (self.push_server, action), data=nt, auth=self.basic_auth)