Cómo obtener twitts relevantes en una app de iOS con Heroku + NodeJS + Swift
Este artículo esta también disponible en mi blog personal
Siempre me pasó que quiero ahorrar tiempo. Y nada mejor que hacerlo automatizandolo de alguna forma.
Desde que empecé con el tema de escribir posts, siempre me imaginé la tarea de mantener una cuenta de twitter. Realmente no soy muy fan de estar en las redes sociales interactuando constantemente (aunque reconozco que los memes muchas veces me quitan bastante tiempo). Es por eso, que al abrir mi cuenta de Twitter me imaginé una forma de postear contenido relevante sin tener que estar buscando todo el día en la app.
Si bien la app de Twitter te provee de notificaciones, lo cierto es que yo queria la funcionalidad de notificar por hashtags relevantes, y la app solo provee contenido estrictamente relacionado con tu cuenta. Simplemente me propuse automatizar de alguna forma el proceso.
Por eso es que me propuse crear un sistema que básicamente me informe del contenido que me interesa, y me deje retuitearlo de la forma más sencilla y rápida posible.
Nota: seguramente en el mercado hay soluciones que te permiten hacer esto. Además de que seguro mi implementación no sea del todo eficiente. La idea es aprender y lograr el objetivo planteado de un principio en el proceso.
Mi idea es básicamente hacer mi propia solución, además de que voy aprendiendo a utilizar Heroku y NodeJS en el camino :)
Arquitectura utilizada
Lo llamé SimpleRTApp, y básicamente consiste en un backend en NodeJS y una app en iOS hecha en Swift. Como van a ver en los siguientes post, todo va a ser a código abierto.
El concepto en sí no es muy complicado. Voy a explicarlo en pasos:
- El usuario indica a la app en que hashtags está interesado retwittear. Digamos por ejemplo que yo quiero ver tweets que contengan los hasthags #ios #swift #programming nada más.
- La app hace una llamada a una API del backend que registra el deviceId y los hashtags asociados. El server va a estar hosteado en Heroku. Toda la data se guarda en una DB en MySQL.
- Hay un cron corriendo en el server que comprueba si hay que enviar alguna notificación. Si se necesita mandar, se consulta la API de Twitter para esos hashtags. Se selecciona el más relevante.
- Se envía la descripción y el link del tweet a APNS (Apple Push Notifications Server) con el deviceId correspondiente.
- APN envia la push notification al device del usuario.
- El usuario sin abrir la app, puede seleccionar si retuitear o ignorar el tweet
Conceptos abarcados
Para poder realizar todo esto necesitamos comprender los siguientes conceptos (además de tiempo, por supuesto :P):
- Twitter API para iOS (Necesitamos autenticar a los usuarios, para obtener los tweets en backend y hacer retweet) Link al artículo
- Twitter Search API para NodeJS
- Uso básico de NodeJS para API REST
- NodeJS + MySQL setup
- Consumo de API REST en iOS con Alamofire+Codable
- Uso de APN para enviar pushes desde NodeJS
- UserNotifications SDK para iOS, con el uso de custom actions desde la push
- Deployar nuestro backend en Heroku
- Utilización de crons en Heroku
Es por eso que dividí la explicación en 8 partes, para que sea más sencillo de entender.
Creo que la serie de posts abarca el contenido mínimo para armar un proyecto de punta a punta, y puede ser una buena base para programadores que sólo conocen frontend iOS. Todos en algún momento deberíamos tener alguna noción de cómo funciona una API por dentro.
No olviden comentar cualquier sugerencia o critica que tengan de la aplicación de estos conceptos.
¡Muchas gracias!
Si quieren contactarse conmigo pueden seguirme en Twitter o también mandarme un mail a fedejordan99@gmail.com