¿Qué necesito saber para crear una aplicación de iOS como Slack?

Es una pregunta bastante cargada. Slack es una buena aplicación, pero no es principalmente una aplicación para iOS. Parte de la magia está en el backend. Entonces, incluso si puede implementar un lado asesino de iOS, el backend será más desafiante.

De todos modos, simplemente necesitas saber:
1. Marco Swift / ObjC y Foundation
2. Programación de red de bajo nivel para mantener conexiones persistentes.
3. Mecanismo de almacenamiento en caché y gestión de datos locales como CoreData
4. Buen conocimiento de los gráficos principales, animación central y uiKit.
5. Un buen marco de prueba de unidad como OCUnit.

A medida que la aplicación crezca, necesitará trabajar para una entrega continua y una configuración de integración con OS X Server / XCode Bots o Jenkins y formas de hacer pruebas automatizadas de IU.

También hay mucho trabajo por hacer en el dominio UI / UX. La gestión de proyectos también será complicada, pero depende si tiene clientes corporativos / existentes que tienen requisitos que debe gestionar.

El chat es la funcionalidad y que es relativamente simple de ejecutar, creo que el verdadero servicio en holgura son sus características de alquiler múltiple. La capacidad de un usuario de estar en uno o más inquilinos (dominios) sin dejar de usar la misma dirección de correo electrónico y tener la capacidad de rastrear todas las propiedades del usuario (ser administrador en un inquilino y usuario normal en otro).

Conozca bien la arquitectura de múltiples inquilinos, le ayudará a comprender qué sucede en su aplicación SaaS a medida que la construye. Mira los enlaces a continuación …

ASP.NET Boilerplate Multitenancy en ASP MVC

Una aplicación multiempresa (SaaS) con ASP.NET MVC, Angularjs, EntityFramework y ASP.NET Boilerplate Una aplicación SaaS multiempresa simple.

Hola,
feliz de responder esta pregunta
Comience por leer tutoriales útiles sobre la creación de aplicaciones de mensajería.

Por ejemplo esto:
Crea una aplicación para iOS con Parse | Tutorial de aplicaciones de iOS | Sinch

También para este tipo de aplicaciones necesita un buen back-end, con un gran servidor y base de datos.

¡Buena suerte!:)

Tu equipo Roll’n’Code.

Echa un vistazo a este repositorio de GitHub. Es una aplicación de chat con todas las funciones que hace uso de la increíble plataforma Parse.

código relacionado / NotificationChat

Para ser claros, un servicio como Slack no es lo mismo que un servicio de redes sociales como Twitter o Instagram. Los problemas de escala en función del número de usuarios serán mucho menos y más simples en comparación con Twitter / Instagram. Esto se debe a que Slack divide a los usuarios en equipos (¿con un máximo de cientos o miles de usuarios normalmente?) Sin embargo, el servicio debe ser de múltiples inquilinos (para equipos).

Con eso fuera del camino, Slack es un servicio, no solo una aplicación. Por lo tanto, debe haber un back-end (que se compone de al menos un par de servicios más pequeños) y varias aplicaciones: web, OS X, etc.

Asi que,

  • Construir cliente web
  • Construir aplicación nativa. Slack parece estar usando envoltorios alrededor de un cliente web. Entonces eso también es posible. Necesita 1 para cada plataforma que desea admitir.
  • El servicio principal para admitir el envío de chats. Tiene que ser alguna forma de servicio basado en HTTP y se comunica (directamente) a un almacén de datos.
  • Algún tipo de almacenamiento en caché. Esto es únicamente para el rendimiento. Sabrás cuando lo necesites. Memcached es común aquí.
  • Un sistema de colas y trabajo. Esto es comun. Ejecuta tareas que no necesitan mostrar un resultado de forma inmediata (sincrónicamente). P.ej. Enviar correos electrónicos de registro. O alertas a los usuarios.
  • Almacén de datos. Una base de datos primaria de algún tipo. Esto puede ser algo así como un servidor SQL. Muchos sistemas a menudo terminan con 1 almacén de datos adicional para datos auxiliares u otro uso. Por ejemplo, algo como Redis.
  • Sistema de monitoreo interno, estadísticas / análisis, etc.