{"id":4043,"date":"2017-05-17T11:54:43","date_gmt":"2017-05-17T16:54:43","guid":{"rendered":"https:\/\/itsoftware.com.co\/content\/?p=4043"},"modified":"2023-03-16T15:25:12","modified_gmt":"2023-03-16T20:25:12","slug":"desarrollo-de-aplicaciones-moviles-ios","status":"publish","type":"post","link":"https:\/\/itsoftware.com.co\/content\/desarrollo-de-aplicaciones-moviles-ios\/","title":{"rendered":"Desarrollo de Aplicaciones M\u00f3viles iOS: Aspectos importantes"},"content":{"rendered":"<figure id=\"attachment_4664\" aria-describedby=\"caption-attachment-4664\" style=\"width: 429px\" class=\"wp-caption aligncenter\"><img fetchpriority=\"high\" decoding=\"async\" class=\" wp-image-4664\" src=\"https:\/\/itsoftware.com.co\/content\/wp-content\/uploads\/2017\/05\/aplicaciones-moviles-ios-300x156.jpg\" alt=\"Aplicaciones m\u00f3viles iOS\" width=\"429\" height=\"223\" \/><figcaption id=\"caption-attachment-4664\" class=\"wp-caption-text\">Aplicaciones m\u00f3viles iOS<\/figcaption><\/figure>\n<p>Las aplicaciones m\u00f3viles iOS para dispositivos iPhone, \u00a0iPad, requieren especial atenci\u00f3n gracias a la gran porci\u00f3n del mercado de dispositivos m\u00f3viles que aun posee Apple.<!--more--><\/p>\n<p>Las Apps iOS se desarrollan bajo el IDE (Ambiente Integrado de Desarrollo)conocido como Xcode, que debe ser instalado en el sistema operativo MacOS.<\/p>\n<p>Para el desarrollo de aplicaciones m\u00f3viles iOS se requiere tener conocimientos de programaci\u00f3n en el lenguaje Swift de Apple, que ahora es c\u00f3digo abierto, bajo licencia de Apache. Swift se usa para crear aplicaciones para Mac, iOS, Apple TV o Apple Watch. Garantizando la integraci\u00f3n con c\u00f3digo en lenguaje Objective C.<\/p>\n<figure id=\"attachment_4665\" aria-describedby=\"caption-attachment-4665\" style=\"width: 229px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-4665\" src=\"https:\/\/itsoftware.com.co\/content\/wp-content\/uploads\/2017\/05\/swift-ios-300x300.png\" alt=\"Swift iOS\" width=\"229\" height=\"229\" \/><figcaption id=\"caption-attachment-4665\" class=\"wp-caption-text\">Swift iOS<\/figcaption><\/figure>\n<p>Apple recomienda una serie de lineamientos, para construir aplicaciones m\u00f3viles iOS que le entreguen una buena experiencia de usuario con su dise\u00f1o, que respondan r\u00e1pido a los comandos, que se adapten a diferentes tama\u00f1os de pantalla, y que consuman lo menos posible la bater\u00eda de los dispositivos f\u00edsicos.<\/p>\n<blockquote><p><strong><em>Te puede interesar leer <a href=\"https:\/\/itsoftware.com.co\/content\/cuanto-cuesta-desarrollar-una-app\/\" target=\"_blank\" rel=\"noopener noreferrer\">\u00bfCu\u00e1nto cuesta desarrollar una App o aplicaci\u00f3n m\u00f3vil?<\/a><\/em><\/strong><\/p><\/blockquote>\n<h2>A) Comportamiento esperado de las Aplicaciones M\u00f3viles iOS<\/h2>\n<p>Cuando vamos a publicar una aplicaci\u00f3n m\u00f3vil iOS en el AppStore, se requiere que la app contenga los siguientes datos adicionales:<\/p>\n<ul>\n<li>Un archivo Info.plist que contiene informaci\u00f3n conocida como metadata de la aplicaci\u00f3n. Creada autom\u00e1ticamente por Xcode.<\/li>\n<\/ul>\n<ul>\n<li>Se deben declarar los requerimientos de hardware o caracter\u00edsticas que la aplicaci\u00f3n m\u00f3vil iOS necesita para correr.<\/li>\n<\/ul>\n<ul>\n<li>Se debe tener uno o m\u00e1s iconos para presentarlo en la ventana de aplicaciones del usuario.<\/li>\n<\/ul>\n<ul>\n<li>Tambi\u00e9n debe poseer una im\u00e1gen de inicio de la app, que es la imagen que se nos muestra cuando la aplicaci\u00f3n es apenas lanzada y se est\u00e1 apenas cargando.<\/li>\n<\/ul>\n<h2>B) Estados de ejecuci\u00f3n bien definidos<\/h2>\n<p>Las aplicaciones pasan por varios estados de ejecuci\u00f3n desde que se inicia hasta que se cierra finalmente. De este modo la aplicaci\u00f3n sigue una serie de estados de ejecuci\u00f3n, cuando se ejecuta en primer plano, o cuando est\u00e1 en segundo plano, y luego es retomada.<\/p>\n<p>Las aplicaciones m\u00f3viles iOS deben entonces manejar muy bien estos estados, con el prop\u00f3sito de tener el comportamiento esperado en cada uno de ellos, como por ejemplo hacer el menor uso posible de bater\u00eda mienstra se encuentra en segudo plano.<\/p>\n<h2>C) Ejecuci\u00f3n eficiente en la multitarea de iOS<\/h2>\n<p>La multitarea de iOS permite mantener una app en background, reduciendo su uso de bater\u00eda, pero con la capacidad de regresar r\u00e1pidamente a su estado previo, cuando el usuario regresa a la App. Es por eso que se necesita que la aplicaci\u00f3n m\u00f3vil haga un uso eficiente de los aspectos de multitarea de iOS, para resguardar un activo muy valioso para los usuarios, que es la carga de su bater\u00eda.<\/p>\n<h2>D) Comunicaci\u00f3n est\u00e1ndar entre Aplicaciones m\u00f3viles iOS<\/h2>\n<p>iOS y Mac han desarrollado una tecnolog\u00eda de control de acceso conocida como Sandbox, que le permite a las apps tener una interacci\u00f3n limitada entre si. As\u00ed que si se requiere una comunicaci\u00f3n entre apps, se deben manejar las interfaces especificadas por Sandbox.<\/p>\n<h2>E) Afinamiento del desempe\u00f1o de las Aplicaciones m\u00f3viles iOS<\/h2>\n<p>Apple recomienda realizar una serie de afinamientos a la App, con el fin de que haga un uso eficiente de los diferentes recursos de hardware.<\/p>\n<p>Entre los tips que recomienda afinar para mejorar el desempe\u00f1o tenemos:<\/p>\n<h2>1. Uso eficiente de la carga de la bater\u00eda<\/h2>\n<p><strong>Reducir el consumo de energ\u00eda<\/strong><\/p>\n<ul>\n<li>Evitar hacerle polling a la CPU (requerimientos continuos a la CPU para que no se vaya a reposo).<\/li>\n<\/ul>\n<ul>\n<li>Dejar que el sistema apague autom\u00e1ticamente la pantalla, sin forzarlo a que la mantenga encendida en alguna operaci\u00f3n inatendida.<\/li>\n<\/ul>\n<ul>\n<li>Evitar accesar muy frecuentemente al disco.<\/li>\n<\/ul>\n<ul>\n<li>No dibujar muy r\u00e1pido en la pantalla, lo que consume mucha energ\u00eda.<\/li>\n<\/ul>\n<ul>\n<li>Reunir tareas para ejecutarlas al mismo tiempo.<\/li>\n<\/ul>\n<ul>\n<li>Hacer un uso efeciente del aceler\u00f3metro, s\u00f3lo cuando es necesario.<\/li>\n<\/ul>\n<ul>\n<li>Conectarse lo menos posible a servidores externos, s\u00f3lo cuando sea necesario, y mucho menos estarles haciendo polling.<\/li>\n<\/ul>\n<ul>\n<li>Se deben transmitir r\u00e1fagas grandes de datos en periodos cortos de tiempo, as\u00ed se minimiza la radiaci\u00f3n WiFi o M\u00f3vil 3G\/4G, que consume mucha bater\u00eda.<\/li>\n<\/ul>\n<ul>\n<li>Se debe minimizar el uso de las funciones centrales de localizaci\u00f3n, para que usen lo menos posible el GPS, la red celular y el WiFi.<\/li>\n<\/ul>\n<ul>\n<li>Encolar tareas juntas, para que el sistema se encargue de evacuarlas autom\u00e1ticamente.<\/li>\n<\/ul>\n<ul>\n<li>Conectarse en lo posible a redes WiFi, las conexiones a la red celular consumen m\u00e1s energ\u00eda.<\/li>\n<\/ul>\n<blockquote><p>Tambi\u00e9n puedes leer\u00a0<a href=\"https:\/\/itsoftware.com.co\/content\/desarrollo-de-aplicaciones-moviles-bogota-colombia\/\" rel=\"bookmark\">Desarrollo de APLICACIONES MOVILES en BOGOTA y COLOMBIA<\/a><\/p><\/blockquote>\n<p><strong>Uso eficiente de memoria<\/strong><\/p>\n<p>Se recomienda que las Apps usen la menor cantidad posible de memoria. De este modo el sistema tendr\u00e1 m\u00e1s memoria disponible para las aplicaciones que est\u00e1n en primer plano, haciendo m\u00e1s r\u00e1pida la respuesta de iOS a las tareas de las aplicaciones m\u00f3viles que se est\u00e1n ejecutando.<\/p>\n<p>Para este caso se recomienda:<\/p>\n<ul>\n<li>Manejar las advertencias de baja memoria, con el fin de liberar memoria innecesaria.<\/li>\n<\/ul>\n<ul>\n<li>Reducir las huellas de memoria de la app.<\/li>\n<\/ul>\n<ul>\n<li>Imponer unos l\u00edmites de memoria a los recursos, incluso a la carga parcial de recursos en memoria si es posible.<\/li>\n<\/ul>\n<ul>\n<li>Evitar la resoluci\u00f3n de problemas que requieran tama\u00f1os de memoria desconocidos, que en alg\u00fan momento pueden desbordar la capacidad dada a la app.<\/li>\n<\/ul>\n<p><strong>Ajustar el c\u00f3digo para Networking<\/strong><\/p>\n<p>Las aplicaciones m\u00f3viles iOS usan muchas funciones para crear conexiones de red, para enviar y recibir datos. \u00a0Apple hace las siguientes recomendaciones al respecto:<\/p>\n<ul>\n<li>Definir en los posible los formatos de datos de los protocolos usados.<\/li>\n<\/ul>\n<ul>\n<li>Transmitir los paquetes en r\u00e1fagas si es posible.<\/li>\n<\/ul>\n<ul>\n<li>Evitar protocolos que usen excesiva interacci\u00f3n.<\/li>\n<\/ul>\n<p><strong>Alertas del modo avi\u00f3n<\/strong><\/p>\n<p>La aplicaci\u00f3n tambi\u00e9n debe considerar mostrar una alerta de conexi\u00f3n a la red WiFi, cuando el dispositivo se encuentra en modo avi\u00f3n.<\/p>\n<p><strong>Uso de WiFi<\/strong><\/p>\n<p>Si la app usa la red WiFi para conectarse, debe usar las claves de iOS para indicarle al sistema que muestre la ventana de selecci\u00f3n de redes wifi disponibles, si no hay conexi\u00f3n a WiFi, y tambi\u00e9n se le debe indicar al sistema si puede o no apagar el hardware WiFi, mientra la App est\u00e9 ejecut\u00e1ndose.<\/p>\n<h2>2. Mejorar la gesti\u00f3n de los archivos<\/h2>\n<p>Se recomienda minimizar la cantidad de escritura al disco. \u00a0Por esto se recomienda:<\/p>\n<ul>\n<li>Agrupar contenido modificado, para minimizar el n\u00famero de bloques de escritura a disco.<\/li>\n<\/ul>\n<ul>\n<li>Escribir en disco s\u00f3lo la porci\u00f3n del archivo que cambia.<\/li>\n<\/ul>\n<ul>\n<li>Si los datos son estructurados, es mejor usar una base de datos interna, como Core Data o SQLite.<\/li>\n<\/ul>\n<ul>\n<li>Tambi\u00e9n se recomienda evitar escribir archivos de cach\u00e9 al disco.<\/li>\n<\/ul>\n<blockquote><p>Tambi\u00e9n te puede interesar\u00a0<a href=\"https:\/\/itsoftware.com.co\/content\/desarrollo-de-aplicaciones-moviles-android-colombia\/\" rel=\"bookmark\">Desarrollo de Aplicaciones MOVILES Android : Una necesidad creciente para las empresas en Colombia<\/a><\/p><\/blockquote>\n<h2>3. Ejecuci\u00f3n de copias de respaldo<\/h2>\n<p>Se recomienda hacer de manera eficiente las copias de respaldo, con el fin de que grandes operaciones de backup sean muy demoradas, que incluso no se realicen con la frecuencia esperada. Por eso se recomienda alojar los archivos de acuerdo a sus caracter\u00edsticas, en los directorios donde se almacena la app:<\/p>\n<ul>\n<li>En el directorio<em> &lt;Aplication_Data&gt;\/Documents,<\/em> \u00a0se deben guardar los datos cr\u00edticos, que son aquellos que no pueden ser recreados por la app misma, como por ejemplo datos de usuario.<\/li>\n<\/ul>\n<ul>\n<li>En el directorio <em> &lt;Aplication_Data&gt;\/Library\/Application Support,\u00a0<\/em>se guardan los archivos que descarga la app, que la aplicaci\u00f3n puede recrear por s\u00ed misma.<\/li>\n<\/ul>\n<ul>\n<li>En el directorio<em> &lt;Aplication_Data&gt;\/Library\/Caches, <\/em>se deben guardar los archivos de cach\u00e9<em>.<\/em><\/li>\n<\/ul>\n<ul>\n<li>En el directorio<em> &lt;Aplication_Data&gt;\/tmp, <\/em>se deben guardar archivos temporales<em>.<\/em><\/li>\n<\/ul>\n<p>De este modo, cuando una app es sincronizada autom\u00e1ticamente a iCloud o por medio de iTunes, se tienen en cuenta los datos necesarios para que la aplicaci\u00f3n m\u00f3vil iOS pueda ser restaurada satisfactoriamente, sin necesidad de ocupar tanto espacio.<\/p>\n<h2>4. No llevar tareas complejas al flujo principal de ejecuci\u00f3n<\/h2>\n<p>Cuando se realizan tareas largas que pueden tomar mucho tiempo, se debe garantizar que el usuario puede continuar trabajando, haciendo que las tareas se ejecuten en segudo plano o background.<\/p>\n<p>Si el sistema detecta una aplicac\u00edon que est\u00e1 bloqueando el flujo principal por mucho tiempo, detiene forzadamente la app, para evitar que ponga en riesgo la estabilidad del dispositivo.<\/p>\n<p>Estas son una serie de recomendaciones que hace Apple para crear una aplicaci\u00f3n que siga unos lineamientos que permitan ser \u00e1gil, responsiva y que use los recursos de memoria, CPU y bater\u00eda de la mejor manera posible, para darle la mejor experiencia al usuario.<\/p>\n<p>En posteriores art\u00edculos trataremos el tema del lineamiento de dise\u00f1o para aplicaciones m\u00f3viles iOS.<\/p>\n<p>Este art\u00edculo hace parte del sistema de divulgaci\u00f3n de conocimiento de <a href=\"http:\/\/itsoftware.com.co\">ITSoftware SAS<\/a>.<\/p>\n<h3>Si te gust\u00f3, por favor no olvides compartirlo en las redes sociales. \ud83d\ude09<\/h3>\n","protected":false},"excerpt":{"rendered":"<p>Las aplicaciones m\u00f3viles iOS para dispositivos iPhone, \u00a0iPad, requieren especial atenci\u00f3n gracias a la gran porci\u00f3n del mercado de dispositivos m\u00f3viles que aun posee Apple.<\/p>\n","protected":false},"author":1,"featured_media":8575,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1299],"tags":[1321,1322,1320,1319,1317,1318],"class_list":["post-4043","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aplicaciones-moviles","tag-app-apple-tv","tag-apps-apple","tag-apps-apple-watch","tag-apps-ios","tag-desarrollo-de-aplicaciones-moviles-ios","tag-desarrollo-de-apps-ios"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/itsoftware.com.co\/content\/wp-content\/uploads\/2017\/05\/aplicaciones-moviles-ios-840x560-1.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/posts\/4043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/comments?post=4043"}],"version-history":[{"count":0,"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/posts\/4043\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/media\/8575"}],"wp:attachment":[{"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/media?parent=4043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/categories?post=4043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/tags?post=4043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}