DEV Community

Cover image for Probando el API REST de Push Kit
HuaweiDevsLATAM
HuaweiDevsLATAM

Posted on

Probando el API REST de Push Kit

Al interactuar con nuestra comunidad, los sistemas de notificaciones suelen ser bastante útliles para compartir eventos con nuesrtr audiencia. Mediante Push podemos atraer usuarios a abrir la app o traer de vuelta a usuarios inactivos. Sin embargo, hay ocasiones en las que no tenemos oportunidad de generar manualmente un set entero de notificaciones en la consola de AGC para manejar los diferentes temas, usuarios y eventos.

Es imporante mencionar que el proceso de creación de notificaciones es repetitivo, repetitivo, y como todas las tareas repetitivas, este proceso puede automatizarse. Este es el propósito del API REST de Push Kit.
En este artículo daremos nuestros primeros pasos con el API y probaremos la funcionalidad básica como un inicio para continuar haciendo crecer nuestra app.

Este artículo es una traducción del artículo Push Kit Server API Usage Testing publicado originalmente por nprezbucio en el Huawei Developer Forum

Requerimientos

Para estas pruebas debemos contar con el SDK de push kit integrado previamente en nuestra app, además de que usaremos Postman como una herramienta de pruebas para enviar las peticiones al servidor. También tendremos que autenticarnos con la plaaforma OAUTH de Huawei para obtener las credenciales necesarias para interactuar con el API REST de Push Kit.

Desarrollo

Lo primero que debemos hacer es obtener el App Id y App Secret de nuestra app para poder autenticarnos contra el servicio OAUTH y obtener un token de acceso al API de Push.

Usaremos estos datos para enviar una petición HTTP POST al siguiente Host

https://oauth-login.cloud.huawei.com/oauth2/v3/token
Enter fullscreen mode Exit fullscreen mode

A continuación se muestran los detalles de la petición

POST /oauth2/v3/token HTTP/1.1
Host: oauth-login.cloud.huawei.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&
client_id=<Client ID>&
client_secret=<Client secret>
Enter fullscreen mode Exit fullscreen mode

En este ejemplo usaremos una herramienta que nos simplificará el proceso. Usando la App de Postman seremos capaces de generar la solicitud con las especificaciones previas. Ajustaremos el tipo de solicitud en POST y el body en "x-www-form-urlencoded", aquí agregaremos nuestros 3 parámetros.

Alt Text

Esto nos devolverá una respuesta similar a la siguiente:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
  "access_token": "<Returned access token>",
  "expires_in": 3600,
  "token_type": "Bearer"
}
Enter fullscreen mode Exit fullscreen mode

El dato más importante es en access_token, este valor nos brindará acceso al API de Push. Este token tiene un periodo de expiración, si esto sucede, debemos realizar una nueva solicitud para refrescarlo.

El siguiente paso es invocar directamente el API de Push Notifications, el Host es el siguiente (reemplaza el campo [appid] por tu propio appId):

https://push-api.cloud.huawei.com/v1/[appid]/messages:send
Enter fullscreen mode Exit fullscreen mode

Una vez obengamos el Access Token, debemos agregarlo en la pestaña "Authorization" como Bearer Token.

Alt Text

El siguiente paso es construir el request body en formato JSON configurando los detalles de nuestra notificación, las opciones son muy variadas y puedes encontrar los detalles de la definición del API aquí.

Cambiaremos a la pestaña "Body" y marcaremos el radio button en raw, desde aquí editaremos el cuerpo de nuestra solicitud con los detalles de nuestra notificación como se muestra a continuación.

{
    "validate_only": false,
    "message": {
        "notification": {
            "title": "11",
            "body": "11",
            "notify_icon": "https://res.vmallres.com/pimages//common/config/logo/SXppnESYv4K11DBxDFc2.png"
        },
        "android": {
            "collapse_key": -1,
            "urgency": "NORMAL",
            "category": "PLAY_VOICE",
            "ttl": "1448s",
            "bi_tag": "Trump",
            "fast_app_target": 1,
            "notification": {
                "image": "https://res.vmallres.com/pimages//common/config/logo/SXppnESYv4K11DBxDFc2.png",
                "icon": "/raw/ic_launcher2",
                "color": "#AACCDD",
                "sound": "/raw/shake",
                "default_sound": false,
                "importance": "NORMAL",
                "click_action": {
                    "type": 1,
                    "intent": "pushscheme://com.huawei.hms.hmsdemo/deeplink?#Intent;i.isFeed=1;S.feedDocId=0LauP4X6;end",
                    "url": "https://www.vmall.com"
                },
                "body_loc_key": "demo_title_new2",
                "body_loc_args": [
                    "Boy",
                    "Dog",
                    "ff"
                ],
                "title_loc_key": "demo_title_new2",
                "title_loc_args": [
                    "Girl",
                    "Cat",
                    "tiger"
                ],
                "channel_id": "HMSTestDemo",
                "auto_clear": 300000,
                "notify_summary": "Some Summary",
                "style": 0,
                "big_title": "the big title",
                "big_body": "the big body",
                "notify_id": 486,
                "group": "Espace",
                "badge": {
                    "add_num": 1,
                    "class": "com.huawei.demo.push.HuaweiPushApiExample"
                },
                "foreground_show": false,
                "ticker": "I am a ticker",
                "auto_cancel": true,
                "when": "2014-10-02T15:01:23.045123456Z",
                "local_only": false,
                "use_default_vibrate": false,
                "use_default_light": false,
                "visibility": "PUBLIC",
                "vibrate_config": [
                    "1",
                    "3"
                ],
                "light_settings": {
                    "color": {
                        "alpha": 0,
                        "red": 0,
                        "green": 1,
                        "blue": 0.1
                    },
                    "light_on_duration": "3.5",
                    "light_off_duration": "5S"
                }
            }
        },
        "token": [
            "token1"
        ]
    }
}
Enter fullscreen mode Exit fullscreen mode

Por último sólo nos queda enviar la petición y esperar a que la notificación llegue a nuestro dispositivo.

Top comments (0)