Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. iOS SDK
Code

Cómo Usar el Apple CloudKit de Apple para Notificaciones Push

by
Difficulty:BeginnerLength:MediumLanguages:

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

Introducción

Apple presentó su framework CloudKit junto con iOS 8 en 2014. Cuando su propósito principal era actuar como una base de datos en línea para aplicaciones iOS, CloucKit también ofrece muchas otras características, incluyendo notificaciones push.

En este tutorial, te estaré mostrando cómo usar el framework CloudKit para implementar notificaciones push para tus aplicaciones iOS. Si quieres aprender más sobre las otras características que CloudKit tiene que ofrecer, puedes leer mi tutorial cubriendo los básicos del framework:

Este tutorial requiere que uses al menos Xcode 8 con Swift 3. También necesitarás tener un dispositivo iOS físico con el cual probar y una cuenta de desarrollador Apple para que puedas habilitar CloudKit para tu aplicación.

1. ¿Por Qué Usar Cloudkit?

Primero, veremos las ventajas (y desventajas) de usar CloudKit para las notificaciones push de tu app.

Como verás en este tutorial, para configurar notificaciones push con CloudKit, no necesitas preocuparte por crear certificados o proporcionar archivos com haces con otros servicios de la nube. Ya que todo es hecho por Apple, todo lo que tienes que hacer es habilita CloudKit para tu app, y el resto solo funciona.

Una de las mejores cosas sobre CloudKit para algunos desarrolladores cuanto obtienes gratuitamente. Muchas otras compañías Backend-as-a-Service (BaaS) existen y ofrecen notificaciones push para app iOS, pero la mayoría de estas tienen limites sobre cuántas notificaciones pueden ser enviadas de manera gratuita. Con CloudKit, no hay límite en el número de notificaciones push que puedes enviar a tus usuarios. Sin embargo, el nivel gratuito de CloudKit limita el almacenamiento de datos, transferencia de datos y el número de peticiones de usuario por segundo.

Otra ventaja de usar CloudKit en tus apps es que, siendo proporcionado por Apple, la estabilidad de red y mantenimiento serán algo de lo que nunca tendrás que preocuparte. Las interrupciones en el servicio Apple ocurren muy raramente y son reparadas rápidamente. Esto significa que puedes confiar en CloudKit para estar siempre trabajando apropiadamente para tus usuarios.

Sin embargo, una desventaja de la que debes estar consciente cuando usas CloudKit es que no está actualmente disponible para cualquier plataforma no Apple. Esto significa que si quieres crear una versión Android de tu app, CloudKit no funcionará. Para una solución multi plataforma, recomendaría otro BaaS como back4app (construido sobre Parse) como discuto en este tutorial:

2. Configurando CloudKit

Para comenzar, crea un nuevo proyecto en Xcode desde la plantilla iOS > Aplicación > Aplicación de Vista Simple.

Una vez que Xcode ha creado tu proyecto, ve al Navegador de proyecto y da clic en la pestaña Capacidades. En esta pantalla, da clic al interruptor para habilitar iCloud y después habilita la casilla CloudKit:

Enabling iCloud and CloudKit

Una vez que has habilitado CloudKit, puedes ir al Tablero CloudKit para tu aplicación.

Para enviar notificaciones push a los usuarios de nuestra app, vamos a crear un tipo de registro GlobalNotification el cuál notificará a todos los usuarios cuando un registro de este tipo sea creado. Si la sección Record Type del tablero CloudKit no está ya abierto por ti después de iniciar sesión, da clic en la barra lateral.

Para crear un nuevo tipo de registro, da clic en el botón + en la parte superior de la pantalla. Llena el menú como se muestra en la siguiente captura:

GlobalNotification Record Type

Para este tutorial, solo estamos agregando un campo sencillo content al tipo de registro, pero para tus propias aplicaciones, puedes agregar tantos como necesites.

Cuando terminas, da clic en el botón Guardar en la esquina inferior derecha.

3. Configurando la App

De vuelta en Xcode, abre tu archivo AppDelegate.swift y agrega las siguientes declaraciones de importación a tu código:

Este código solo importará los frameworks CloudKit y UserNotifications. Vamos a usar el UserNotifications para administrar tanto los permisos de notificación como las notificaciones entrantes. Si quieres aprender más sobre este framework, puedes leer mi tutorial cubriéndolo aquí:

Después, edita tu definición de clase AppDelegate para hacerlo conforme al protocolo UNUserNotificationCenterDelegate:

Ahora necesitamos pedir permiso para mostrar notificaciones. Para hacerlo, reemplaza tu método application(_:didFinishLaunchingWithOptions:) con lo siguiente:

Con este código, pedimos al usuario permiso para mostrar notificaciones y si aceptan, registra la app para notificaciones push.

Ahora, necesitamos implementar el método application(_:didRegisterForRemoteNotificationsWithDeviceToken:). Agrega el siguiente código a tu clase AppDelegate:

Con este código, primero creamos un objeto CKQuerySubscription. Este objeto de suscripción es lo que le dice a CloudKit para que debería mandar notificaciones. Cuando inicializamos esta suscripción, incluímos lo siguiente:

  • El nombre del tipo de registro a monitor.
  • Un predicado que puede ser usado para limitar la suscripción a registros particulares de tu tipo especificado. En este tutorial, queremos suscribir a todos los registros GlobalNotification así que pasamos un predicado que siempre es verdadero.
  • Uno o más disparadores diciendo a CloudKit cuando una notificación debería ser enviada. En este ejemplo, solo queremos una notificación cuando un nuevo registro es creado. Otros disparadores válidos incluyen cuando un registro es actualizado o borrado.

Después creamos un objeto CKNotificationInfo, proporcionale algún contenido, y después asígnalo al objeto de suscripción. El objeto CKNotificationInfo  es como formateas la notificación push que es entregada a tus usuarios. En este ejemplo, estamos configurándola con las siguientes propiedades:

  • Un alertBody de "¡Una nueva notificación ha sido creada!"
  • Un valor shouldBadge de true. Esto causará que el icono de app en la pantalla de inicio incremente su número por cada notificación que llega.
  • Un soundname de "default". Esto solo usará el sonido por defecto de notificación iOS para tu app. Si quieres usar un sonido personalizado, entonces necesitarás usar el nombre de tu archivo de sonido.
  • Un arreglo desiredKeys con un solo valor. Para cada llave que incluyas en este arreglo, CloudKit cargará el valor correspondiente del registro que disparó la notificación y lo incluye en el diccionario de información de usuario de la notificación.

Más abajo, asignamos la información de notificación a la suscripción, que es guardada a la base de datos pública de CloudKit para tu app.

Para que puedas ver la notificación mientras tu app está corriendo, agrega el siguiente método a tu clase AppDelegate:

Este código usa el framework UserNotifications para mostrar tu notificación como si tu app no estuviera corriendo en absoluto.

Antes de ejecutar tu app, necesitarás revisar si tu dispositivo de prueba está registrado en una cuenta iCloud yendo a Ajustes. Si no, necesitarás hacerlo porque las APIs CloudKit requieren que el usuario actual esté registrado.

Construye y ejecuta tu app desde Xcode y acepta las peticiones de tu app para mostrar notificaciones. Una vez que has hecho eso, regresa al tablero de CloudKit para tu app y da clic sobre Tipos de Suscripción en la barra lateral izquierda. Deberías ver una nueva suscripción para registros  GlobalNotification con un disparador INSERT:

Subscription Type

4. Enviando una Notifiación

¡Ahora, todo lo que nos queda por hacer es enviar una notificación! Aún en el tablero CloudKit, da clic a Zona por Defecto bajo Datos Públicos en la barra lateral izquierda. Da clic ya sea en el botón + o sobre Nuevo Registro para crear un nuevo registro GlobalNotification. Llena el content con lo que sea que quieras y da clic en Guardar en la esquina inferior derecha.

Una vez que tu registro ha sido guardado, deberías ver aparecer la notificación en ese momento en tu dispositivo de prueba:

Notification

Conclusión

Como has visto, puedes implementar fácilmente notificaciones push para tu app iOS usando CloudKit. La configuración es muy simple, con solo un pequeño número de pasos, y la APIs proporcionadas permiten cualquier notificación push que pudieras necesitar para tus apps.

Como siempre, por favor asegúrate de dejar tus comentarios y retroalimentación en la sección de comentarios de abajo. ¡Y revisa algunos de nuestros otros cursos y tutoriales de iOS!.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.