iOS
Send Push Notifications
Notificaciones Push en iOS con Cloud Code y Objective-C
26 min
enviando notificaciones push usando código en la nube con objective c introducción esta sección explica cómo puedes enviar notificaciones push usando cloud code a través de back4app así es como se verá en cualquier momento, puedes acceder al proyecto completo construido con este tutorial en nuestro repositorio de github para completar este inicio rápido, necesitas xcode una aplicación creada en back4app sigue el tutorial de nueva aplicación parse para aprender cómo crear una aplicación parse en back4app una aplicación ios conectada a back4app nota sigue el tutorial de instalación del sdk parse (swift) para crear un proyecto de xcode conectado a back4app una aplicación ios configurada a través de tutorial de notificaciones push de back4app a través del dashboard un dispositivo ios, iphone o ipad, que ejecute ios 10 o superior una cuenta de desarrollador de apple paga 1 configura tu aplicación ios para recibir notificaciones push cada aplicación de parse instalada en un dispositivo registrado para notificaciones push tiene un asociado instalación instalación objeto el instalación instalación objeto es donde almacenas todos los datos necesarios para dirigir las notificaciones push por ejemplo, en tu aplicación, podrías almacenar en qué equipos está interesado uno de tus usuarios para enviar actualizaciones sobre su rendimiento guardar el instalación instalación objeto también es necesario para rastrear eventos de apertura de la aplicación relacionados con push la forma más sencilla de comenzar a enviar notificaciones es utilizando canales esto te permite usar un modelo de publicador suscriptor para enviar notificaciones push los dispositivos comienzan suscribiéndose a uno o más canales, y las notificaciones pueden enviarse posteriormente a estos suscriptores los canales a los que se suscribe una instalación instalación se almacenan en el canales canales campo del instalación instalación objeto después de eso, revisaremos el envío de notificaciones push dirigidas a un solo usuario o a un grupo de usuarios basado en una consulta en adelante, vamos a asumir que has completado todos los pasos del tutorial de notificaciones push de back4app a través del dashboard , incluso si usas el proyecto de ios construido con este tutorial que está disponible en nuestro repositorio de github deberías tener notificaciones push básicas funcionando y también ser capaz de enviar notificaciones a través de la consola de administración 2 suscribe tu dispositivo al canal de noticias primero, agregaremos un canal a tu objeto de instalación vamos a hacer esto alterando el método createinstallationonparse en nuestro archivo app delegate abre el archivo appdelegate m de tu proyecto y asegúrate de que tu versión de didregisterforremotenotificationswithdevicetoken sea la misma que el código a continuación estamos agregando una nueva línea de código ‘\[currentinstallation setobject @\[@”news1”] forkey @”channels”];’ que establecerá el array de canales del objeto de instalación para contener un canal llamado ‘noticias’ esto nos permitirá enviar un mensaje a todos los que se suscriban al canal llamado ‘noticias’ a través del código en la nube appdelegate m 2\ pruébalo ejecutando tu aplicación en un dispositivo físico no puedes ejecutar esto en el simulador necesitarás un token de push real para actualizar tu registro de instalación, así que un dispositivo físico es imprescindible después de que se ejecute con éxito, deberías ver esto en la sección de instalación de tu panel de control puedes verificar yendo a el sitio web de back4app y haz clic en el panel de control de tu aplicación y luego verifica la tabla de instalación en la columna de canales deberías ver ‘news’, mostrándote que ahora estás suscrito al canal de push de noticias 3 crea tu cloud code para saber más sobre cómo comenzar con cloud code mira el tutorial de cloud code para ios crea un js js archivo para poner tu código en la nube necesitas llamarlo main js main js para que back4app sepa que aquí es donde almacenas tu código en la nube define una función en la nube, usando parse cloud define parse cloud define , para llamar a la notificación push dentro de la función llamaremos a parse push send parse push send para enviar un push al canal ‘news’ es necesario usar la clave maestra en esta operación el siguiente código ejecuta estos pasos parse server 3 x // main js 1 parse cloud define("pushsample", (request) => { 2 3 return parse push send({ 4 channels \["news"], 5 data { 6 title "hello from the cloud code", 7 alert "back4app rocks!", 8 } 9 }, { usemasterkey true }); 10 }); parse server 2 x //main js 1 parse cloud define("pushsample", function (request, response) { 2 parse push send({ 3 channels \["news"], 4 data { 5 title "hello from the cloud code", 6 alert "back4app rocks!", 7 } 8 }, { 9 success function () { 10 // push was successful 11 response success("push sent"); 12 console log("success push sent"); 13 }, 14 error function (error) { 15 // push was unsucessful 16 response error("error with push " + error); 17 console log("error " + error); 18 }, 19 usemasterkey true 20 }); 21 }) 4 subir al código en la nube ve a tu aplicación en sitio web de back4app y haz clic en tablero tablero encuentra el código en la nube código en la nube y haz clic en funciones y alojamiento web funciones y alojamiento web se ve así 3\ sube o crea un nuevo archivo (también puedes editar el main js main js archivo directamente en el navegador) luego, haz clic en desplegar desplegar como se muestra aquí 5 llama al código en la nube desde tu aplicación ios a continuación, vamos a escribir algo de código para llamar a esta función en la nube desde tu aplicación necesitarás tanto el simulador como un dispositivo físico para completar esta tarea llamarás a la función en la nube desde tu aplicación que se ejecuta en el simulador y verás la notificación aparecer en tu dispositivo físico tu dispositivo físico debe estar cerrado con la pantalla de bloqueo activada para ver la notificación una notificación no aparecerá en la pantalla si estás dentro de la aplicación que la está enviando cuando recibes la notificación abre el archivo viewcontroller m de tu proyecto necesitamos incluir parse en el controlador de vista añadiendo el siguiente código ‘#import \<parse/parse h>’ en la parte superior del archivo viewcontroller 3\ a continuación, en el archivo viewcontroller m llamaremos a una función de alerta desde el método viewdidappear la alerta te permitirá activar el código en la nube que enviará una notificación a tu dispositivo asegúrate de incluir el siguiente bloque de código después de la función viewdidload viewcontroller m 4\ ejecuta tu aplicación en el simulador y cuando aparezca la alerta pidiendo enviar el push, presiona “ok” en tu dispositivo físico deberías ver el push aparecer en la pantalla de bloqueo 6 llamar al código en la nube desde la api rest la api rest proporciona una forma rápida y fácil de probar si tu función en la nube está funcionando simplemente usa el código a continuación en tu terminal o símbolo del sistema haz clic en para saber más sobre cómo comenzar con la línea de comandos en linux , macos o windows para probar las notificaciones push, simplemente usa el código rest mientras el dispositivo esté cerrado 7 enviar notificaciones push dirigidas usando un objeto de usuario en adelante, utilizaremos un proyecto de ios diferente que ya tiene características básicas de registro y inicio de sesión vamos a utilizar este proyecto de ios que podemos mostrarte cómo detectar si un usuario ha iniciado sesión, y si es así, guardar su instalación con un enlace a su id de objeto para consultas en el código en la nube puedes descargar el proyecto completo de ios construido con el tutorial de esta sección en nuestro repositorio de github , pero aún tendrás que hacer toda la configuración del tutorial anterior que explica cómo enviar notificaciones desde el panel de back4app obtén la nueva versión de la aplicación configurada y regístrate o inicia sesión en la aplicación primero asegúrate de descargar la plantilla funcional desde github en repositorio de github no vamos a repasar todos los pasos para construir esta aplicación, en su lugar, nos enfocaremos en configurar el código en la nube y por qué funciona una vez que abras esta nueva aplicación, asegúrate de poner las credenciales de tu propia aplicación en el archivo appdelegate m appdelegate m 2\ esta aplicación tiene algunas diferencias importantes con respecto a la aplicación anterior presenta 2 secciones, una para estar conectado a tu aplicación y una sección cuando no estás conectado a tu aplicación el siguiente gran cambio es la función ‘didregisterforremotenotificationswithdevicetoken’ del archivo appdelegate m hemos agregado 1 línea que almacena el id de objeto del usuario como parte del objeto de instalación de esa manera, podemos saber qué usuario está asociado con qué objeto de instalación y podemos dirigirnos a ellos individualmente para notificaciones appdelegate m 3\ dado que ahora estamos almacenando el id del objeto del usuario como parte del objeto de instalación, no queremos solicitar un nuevo token de push hasta que el usuario haya iniciado sesión no queremos solicitar un token directamente desde la función ‘application didfinishlaunchingwithoptions’ del archivo appdelegate m, en su lugar queremos llamarlo desde la función ‘viewdidappear’ del loggedinviewcontroller en ‘viewdidappear’ llamamos a una función en el appdelegate para solicitar acceso a un token de notificación push de apple dado que solo puedes ver esta sección una vez que has iniciado sesión, podemos asumir que el usuario ha iniciado sesión cuando creamos el objeto de instalación y recuperamos el id del objeto loggedinviewcontroller appdelegate m 4\ ok, ahora para registrarte o iniciar sesión en tu dispositivo físico (iphone o ipad) inicia la aplicación deberías ver la imagen de abajo deberías registrarte para crear un nuevo usuario o iniciar sesión si ya has creado un usuario en tu aplicación así es como se verá ahora deberías poder ver el loggedinviewcontroller debería verse así si intentas enviarte notificaciones a ti mismo, no funcionará aún porque no hemos agregado esos métodos al código en la nube así que eso es lo que haremos a continuación 8 agregar los métodos de push dirigidos al código en la nube abre tu archivo main js que creaste anteriormente y agrega las siguientes funciones para dirigir las instalaciones por id de usuario es necesario usar la clave maestra en esta operación el siguiente código ejecuta estos pasos parse server 3 x // main js 1 parse cloud define('sendpushtoyourself', (request) => { 2 let userid = request user id; 3 4 let query = new parse query(parse installation); 5 query equalto("userid", userid); 6 query descending("updatedat"); 7 return parse push send({ 8 where query, 9 data { 10 title "hello from the cloud code", 11 alert "back4app rocks! single message!", 12 } 13 }, { usemasterkey true }); 14 }); 15 16 parse cloud define('sendpushtoallusers', (request) => { 17 let currentuser = request user; 18 let userids = \[currentuser id]; 19 20 let query = new parse query(parse installation); 21 query containedin('userid', userids); 22 return parse push send({ 23 where query, 24 data { 25 title "hello from the cloud code", 26 alert "back4app rocks! group message!", 27 } 28 }, { usemasterkey true }); 29 }); parse server 2 x //main js 1 parse cloud define('sendpushtoyourself', function (request, response) { 2 var currentuser = request user; 3 var userid = currentuser id; 4 5 var query = new parse query("installation"); 6 query equalto("userid", userid); 7 query descending("updatedat"); 8 parse push send({ 9 where query, 10 data { 11 title "hello from the cloud code", 12 alert "back4app rocks! single message!", 13 } 14 }, { 15 usemasterkey true, 16 success function () { 17 response success("success sending a single push!"); 18 }, 19 error function (error) { 20 response error(error code + " " + error description); 21 } 22 }); 23 }); 24 25 parse cloud define('sendpushtoallusers', function (request, response) { 26 var currentuser = request user; 27 var userids = \[currentuser id]; 28 29 var query = new parse query(parse installation); 30 query containedin('userid', userids); 31 parse push send({ 32 where query, 33 data { 34 title "hello from the cloud code", 35 alert "back4app rocks! group message!", 36 } 37 }, { 38 usemasterkey true, 39 success function () { 40 response success('success sending a group push!'); 41 }, 42 error function (message) { 43 response error(error code + " " + error description); 44 } 45 }); 46 }); 9 subir a cloud code ve a tu aplicación en el sitio web de back4app y haz clic en tablero tablero encuentra el código en la nube código en la nube y haz clic en funciones y alojamiento web funciones y alojamiento web se ve así 3\ sube o crea un nuevo archivo (también puedes editar el main js main js archivo directamente en el navegador) luego, haz clic en desplegar desplegar como se muestra aquí 10 prueba que puedes enviar notificaciones push dirigidas a ti mismo abre tu aplicación desde el simulador mientras dejas tu dispositivo físico cerrado con la pantalla de bloqueo activada puedes probar que ambas funciones de push están funcionando presionando el botón ‘enviar push a ti mismo’ y el botón ‘enviar push a un grupo de personas’ deberías ver las notificaciones aparecer en la pantalla de bloqueo de tus dispositivos reflexiones finales esto concluye el tutorial deberías tener una comprensión firme de cómo enviar notificaciones push basadas en el canal de un usuario o el id de objeto de un usuario o cualquier otra consulta que implique obtener el id de objeto del usuario recuerda que para almacenar el id de objeto del usuario debes agregarlo a la instalación de push y solo solicitar un token de push cuando el usuario esté conectado al enviar notificaciones push a través de consultas, ten en cuenta que está limitado por defecto a 100 resultados y algunos usuarios pueden tener más de un objeto de instalación además, no se recomienda enviar notificaciones push a un array de objetos de instalación que sean mayores a 100 resultados podría resultar en que algunas notificaciones no se envíen si estás tratando con grandes grupos de personas, es mejor usar canales o enviar las notificaciones en solicitudes repetidas ¡está hecho! ¡en esta etapa, puedes enviar notificaciones push usando cloud code a través de back4app! ¡felicidades!