9 principios para crear aplicaciones iOS de calidad

Los principios se basan en la conocida metodolog铆a de heroku , adaptada a las realidades del desarrollo de ayios (falta de contenedores que tardan varios d铆as en completarse y ralentizar la implementaci贸n, Xcode solo funciona en una amapola).


Este art铆culo es una breve introducci贸n, la serie completa se puede encontrar en el factor iOS , la traducci贸n al ruso tambi茅n est谩 disponible. El proyecto de c贸digo abierto del factor iOS en github se refina constantemente y da la bienvenida a nuevas ideas. Tambi茅n particip茅 en su desarrollo. El proyecto fue fundado por Felix, quien es el creador de Fastlane .


TL; DR


  • Dependencias : debe especificarse expl铆cita y espec铆ficamente (versi贸n de Xcode, CocoaPods, versi贸n de dependencias en podfile). Esto hace posible que un nuevo desarrollador juegue la compilaci贸n en cualquier Mac. Repita tambi茅n el ensamblaje que se utiliz贸 hace 6 meses.
  • Configuraci贸n : no hay configuraci贸n en el c贸digo, viene con la aplicaci贸n y la capacidad de actualizar por aire
  • Desarrollo de aplicaciones / paridad de trabajo : mantenga los entornos de desarrollo, preparaci贸n y producci贸n lo m谩s similares posible
  • Implementaci贸n : automatice la implementaci贸n para que pueda liberarla desde cualquier m谩quina.
  • Local versus Beck : mantenga su aplicaci贸n iOS universal para que pueda trabajar sin backend siempre que sea posible
  • API compatibles con versiones anteriores : no piense que cada usuario est谩 actualizando a la 煤ltima versi贸n
  • Control de versiones de la aplicaci贸n : automatice la versi贸n y cree actualizaciones
  • Rollback : montaje de Rollback que causa problemas
  • Almacenamiento de datos : siga las recomendaciones de Apple para el almacenamiento de datos



Dependencias


La aplicaci贸n declara todas sus dependencias de forma completa y precisa utilizando el manifiesto de declaraci贸n de dependencia.
Esto incluye una versi贸n espec铆fica de Swift, Xcode, CocoaPods, Carthgae y Fastlane. Adem谩s, todas las dependencias en podfile y cartfile deben especificar una versi贸n espec铆fica.


Una de las ventajas de declarar expl铆citamente dependencias es que facilita la configuraci贸n de aplicaciones para nuevos desarrolladores.


Con la ayuda de especificar dependencias espec铆ficas, puede reproducir la compilaci贸n que se us贸 hace 6 meses, sabiendo que se compilar谩 porque la compilaci贸n usar谩 la misma versi贸n de Xcode, CocoaPods y Swift.


Limitaci贸n: dado que el desarrollo de iOS no puede estar contenido en un contenedor, ya que ya se usa para el desarrollo web, estamos limitados a herramientas de terceros que intentan cumplir este requisito hasta que Apple proporcione una soluci贸n oficial. Existe una soluci贸n comercial (cerrada) de terceros llamada Veertu que le permite crear entornos virtuales de MacOS en el hardware de Apple.




Configuracion


El c贸digo no depende del entorno, pero la configuraci贸n depende. Por lo tanto, el c贸digo debe almacenarse en el repositorio y la configuraci贸n en el entorno. Verificar si la configuraci贸n y el c贸digo de la aplicaci贸n est谩n separados correctamente es el hecho de que la base del c贸digo de la aplicaci贸n puede ser accesible libremente en cualquier momento sin comprometer ning煤n dato privado.


Hay muchas formas de ingresar valores de configuraci贸n en el momento de la compilaci贸n.


  • Archivos de configuraci贸n (archivos JSON o YAML)
  • cocoapods-keys para ocultar las claves y aplicarlas a su aplicaci贸n iOS durante la compilaci贸n
  • Soluci贸n personalizada (por ejemplo, usando la fase de construcci贸n)

Dado que las implementaciones en la plataforma iOS son significativamente m谩s lentas que en los servidores, es posible que necesite una forma de actualizar la configuraci贸n inal谩mbrica (OTA) para responder r谩pidamente a los problemas.


Las actualizaciones de configuraci贸n de OTA le permiten al instante:


  • Ejecute pruebas A / B para habilitar ciertas funciones o cambios en la interfaz de usuario solo para una parte de los usuarios activos.
  • Cambiar claves de API
  • Actualice los servidores web u otras URL que hayan cambiado
  • Desactivar de forma remota funciones u ocultar botones

Algunos enfoques potenciales al implementar actualizaciones de OTA son:





Desarrollo de aplicaciones / paridad laboral


Hist贸ricamente, existen diferencias significativas entre el desarrollo (el desarrollador realiza cambios en vivo en la implementaci贸n local de la aplicaci贸n) y la operaci贸n de la aplicaci贸n (implementaci贸n de la aplicaci贸n en la App Store con acceso a ella por parte de los usuarios finales).
Estas diferencias aparecen en tres 谩reas:


  • Diferencia horaria
  • Diferencia personal
  • Brecha de herramienta:

Soluci贸n:


  • Reduzca la diferencia horaria: el desarrollador puede escribir el c贸digo y se implementar谩 en unas pocas horas o incluso minutos.
  • Haga peque帽as las diferencias de personal: el desarrollador que escribi贸 el c贸digo participa activamente en su implementaci贸n y monitorea su comportamiento mientras se ejecuta la aplicaci贸n.
  • Reduzca las diferencias de herramientas: mantenga el entorno de trabajo y desarrollo de su aplicaci贸n lo m谩s similar posible.



Despliegue


Como se describe en el principio de dependencias , el repositorio de c贸digo debe incluir todas las dependencias necesarias para crear, probar e implementar la aplicaci贸n iOS.


Desafortunadamente, debido al hecho de que Xcode deber铆a funcionar en MacOS, no podemos usar contenedores como en la web. Ejecutar macOS en un entorno virtual est谩 lleno de problemas t茅cnicos y legales.


En este momento, el mejor enfoque que podemos usar los desarrolladores de iOS es:



Muchas compa帽铆as usan el concepto de trenes de lanzamiento: un cronograma que lanza una nueva versi贸n de su aplicaci贸n. Todo el c贸digo que se fusion贸 con su sucursal principal (maestra o versi贸n) en el momento en que el tren de lanzamiento "se va" se enviar谩 a la App Store. Este enfoque es implementado por la mayor铆a de las grandes aplicaciones de iOS.




Local versus Beck


En los 煤ltimos a帽os, algunos equipos de desarrollo han comenzado a utilizar enfoques que requieren menos esfuerzo de desarrollo al reducir la calidad de la experiencia del usuario, trasladar m谩s l贸gica al backend y hacer que la aplicaci贸n iOS sea un cliente ligero que muestre los resultados del servidor.


Una aplicaci贸n debe hacer la mayor cantidad posible de l贸gica y computaci贸n de negocios en el dispositivo por varias razones:


  • Confidencialidad: evite enviar datos a un servidor remoto
  • Velocidad: enviar datos al servidor y esperar una respuesta lleva tiempo y puede provocar un bloqueo (por ejemplo, WiFi deficiente)
  • Uso de datos: los usuarios a menudo tienen l铆mites de datos mensuales
  • Escalado: si su aplicaci贸n se vuelve popular, usted es responsable de ampliar los servicios de back-end.
  • Duraci贸n de la bater铆a: el m贸vil es caro
  • Fiabilidad: las conexiones LTE / 3G siguen siendo pobres en algunos pa铆ses

Si su aplicaci贸n requiere una conexi贸n a Internet para todas las funciones (por ejemplo, una aplicaci贸n de red social o una aplicaci贸n para compartir viajes), deber铆a funcionar (en modo de solo lectura) sin una conexi贸n a Internet para acceder a datos hist贸ricos (por ejemplo, recientes viajes, comunicaciones directas recientes).




API compatibles con versiones anteriores


Aunque la mayor铆a de sus usuarios se actualizar谩n a la 煤ltima versi贸n en unas pocas semanas, siempre habr谩 usuarios que no lo har谩n. Esto puede tener varias razones. A menudo, esto se debe a la versi贸n de iOS utilizada, que no siempre pueden actualizarse debido a la antig眉edad del dispositivo.


El concepto b谩sico es que no est谩 actualizando la API existente, sino que est谩 agregando una nueva y permiti茅ndoles trabajar en paralelo


https://your-api.com/1.0/drivers.json https://your-api.com/1.1/drivers.json 



Versiones de aplicaciones


La versi贸n y el n煤mero de compilaci贸n se usan juntos para identificar una aplicaci贸n espec铆fica en la aplicaci贸n.


  • N煤mero de versi贸n (CFBundleShortVersionString) : se (CFBundleShortVersionString) como versi贸n en Xcode
  • N煤mero de compilaci贸n (CFBundleVersion) : se (CFBundleVersion) como Compilar en Xcode

En el desarrollo actual de iOS, no hay ninguna raz贸n por la que deba cambiar manualmente estos n煤meros. En cambio, necesita un sistema confiable y automatizado para mantener las versiones actualizadas.


Xcode tiene una herramienta incorporada llamada agvtool .




Contragolpes


La App Store inicialmente no permite retrocesos, por lo que esta secci贸n describe c贸mo lograr resultados similares utilizando los m茅todos disponibles.


Lanzamientos de hitos: al usar lanzamientos de hitos, puede implementar lentamente el ensamblado en el producto, comenzando con un peque帽o n煤mero de usuarios activos


Sin embargo, incluso en el caso de las versiones por fases, es imposible recuperar por completo el ensamblaje: despu茅s de instalar el ensamblaje en el dispositivo del usuario, la 煤nica forma de cambiar este ensamblaje es distribuir una nueva versi贸n con un n煤mero de versi贸n / compilaci贸n actualizado.


Al igual que con los lanzamientos por fases, los ensamblados de App Store y TestFlight solo pueden actualizarse siguiendo estos pasos:


  1. Regrese a su sistema de control de versiones al estado al que desea volver
  2. Aumente la versi贸n y / o el n煤mero de compilaci贸n de su proyecto
  3. Crea y firma tu solicitud
  4. Distribuya su aplicaci贸n a trav茅s del servicio beta o App Store
  5. El usuario debe actualizar la aplicaci贸n en su tel茅fono.

Los pasos anteriores se pueden realizar manualmente, sin embargo, se recomienda que el proceso est茅 completamente automatizado para poder responder r谩pidamente.


Alternativa: volver a firmar la compilaci贸n anterior


  1. Acceda al ensamblaje anterior (archivo .ipa) antes de introducir la regresi贸n
  2. Actualice el n煤mero de versi贸n / compilaci贸n en el archivo Info.plist
  3. Construcci贸n antigua "Firmar de nuevo"
  4. Distribuirlo como una nueva compilaci贸n

Sin embargo, la "firma" de aplicaciones de iOS a menudo crea m谩s problemas, especialmente porque las herramientas de l铆nea de comandos de Xcode no ofrecen una buena manera de hacerlo.




Almacenamiento de datos


Almacenar datos y configuraciones de acuerdo con las recomendaciones de Apple es fundamental para el ciclo de vida de su aplicaci贸n, en particular cuando se trata de la sincronizaci贸n de iCloud, la actualizaci贸n a un nuevo tel茅fono y la restauraci贸n de su tel茅fono desde la copia de seguridad.


Aseg煤rese de seguir las Pautas oficiales de almacenamiento de datos de Apple iOS :


  • Documents : use este directorio para contenido personalizado, se archivar谩
  • Caches : use este directorio para los datos que se pueden recuperar.
  • tmp : use este directorio para archivos temporales
  • Utilice la propiedad de do not back up para archivos

Nunca almacene informaci贸n confidencial del usuario (como contrase帽as o sesiones) en estos directorios. Utilice la API de llavero en su lugar.

Source: https://habr.com/ru/post/461317/


All Articles