
David Quinlan es un tipo normal, con trabajo de día y sólo un poco de codificación de la experiencia. Pero él y un amigo vivido el sueño y puesto hacia fuera una sencilla aplicación para el iPhone en un fin de semana. He aquí cómo lo hicieron:
"Tailandia, ensalada o ramen?" Es la hora del almuerzo en un típico jueves y nos parece que millones de personas en todo el mundo están considerando la misma pregunta. Esta pregunta es nuestra plataforma de lanzamiento, lo que nos convierte parte de las miles de personas que querían construir una aplicación para el iPhone de "eso".
Soy un chico de comercialización de productos y con algunos conocimientos de diseño y codificación.
Roy es un desarrollador con algún conocimiento de los negocios. Combinados, hacemos un gran equipo y se complementan entre sí y las habilidades, pero sólo empezó a trabajar con Objective-C el año pasado, como muchos otros que están tratando a cabo el desarrollo del iPhone. Ya hemos construido una aplicación o dos, así que estamos familiarizados con el lenguaje y los marcos. Sin embargo, como con todos los nuevos proyectos, por lo general tiene que hacer una pequeña investigación para saber cómo abordar los diferentes retos ... especialmente en un mundo definido por 320 × 480 píxeles.
Durante mucho tiempo, hemos jugado con la idea de crear una aplicación para la diversión. Después de descartar un par de buenas ideas (porque eran demasiado complicado o una búsqueda rápida en la App Store mostró que alguien más ya lo hace bien), tierras de la hora del almuerzo nos de una idea simple diversión, para ayudar a personas atrapadas entre las decisiones.
Pero mientras la mayoría de la gente quiere crear una gran aplicación para el iPhone, mi amigo y yo dar un paso más, haciendo un pacto para terminar el proyecto dentro de un fin de semana-o realista, nuestra aplicación nunca se completan.

En una hoja de papel, que garabatean a cabo dos-tres wireframes y elaboró un esbozo de algunas pantallas de base. Nosotros decidimos en una aplicación que ofrece hasta tres opciones múltiples. Usted puede escribir sus propias respuestas, por ejemplo, tailandés, ensalada o ramen y simplemente elige una opción al azar para ver la respuesta a su decisión. Decidimos utilizar las cartas como tema. Inmediatamente, el círculo "debe tener" características (prioritario), entonces el como "tener" características (última prioridad), y finalmente las características que necesitaba más investigación. Salimos de la comida del jueves con una poca preparación y un plan para reunirse el sábado.
Mi tarea incluye la determinación de la apariencia, sensación y la interacción en cada pantalla. Roy necesita investigar algunas de las características de Xcode no hemos tenido la oportunidad de jugar con el sin embargo, en nuestros empleos "reales", sobre todo las animaciones y la aleatorización.
En la mañana del sábado, nos reunimos en una cafetería local, que había Wi-Fi, la reclamación de una gran mesa para que podamos sentarnos lado a lado y tomar la primera de muchas tazas grandes de café. Luego creamos una carpeta compartida de Dropbox para este proyecto-una cuenta básica es gratuita y viene con 2 GB de almacenamiento. El Dropbox es importante porque nos permite realizar múltiples tareas en el mismo proyecto junto con alguno o todos los cambios de la sincronización en tiempo real. Para proyectos de mayor envergadura, es posible que quiera considerar GitHub.
Tiramos una descripción más detallada de lo que queremos lograr para nuestra aplicación, así como wireframes de base. Dado que sólo tenemos un fin de semana para completar esta aplicación, nos decidimos a centrarse únicamente en el "debe tener" características. Un desarrollador siempre puede emitir actualizaciones de funciones en una fecha posterior para incluir el bien "para tener" características.
Going screen-by-screen, we detail the elements on the page, style treatments, layout, timing, etc. We also discuss what Roy learned about animating the card's flip motion, since this was one of the core functionality of the app. We briefly review the Quartz 2D and Core Animation libraries, since we had not previously done any work with those. We even discuss using a UIWebView to render the animation within WebKit's CSS. Ultimately, we find a simple solution using standard UIViews and UIButtons. The UIView class has some animation class methods, and one of the built in transitions is a flip effect. As for the randomization, we knew most languages provide a random function, and Objective-C is no exception. For purposes of this app, all we wanted was a simple method to randomize an array. Roy found a couple of examples of this, but one that stood out was over at Dr. Touch's website. He describes an approach with which to implement a class extension method so you can easily shuffle any array.
We dive into our respective MacBook Pros with a Borg-like focus on our individual areas of expertise. I open up Photoshop and began building screens. The first screen is the default image. This is the very first screen people see when the app starts and begins loading. Apps can be built in either portrait or landscape view. If you choose to build your app in landscape view like ours, you still need to create a default image that displays in portrait view. Simply create your landscape view and rotate clockwise or counter-clockwise (depending on whether you want left or right landscape view). Now the default image loads in portrait view but since your images is rotated, the user will twist the iPhone to landscape view.
Luego pasar el próximo par de horas creando composiciones, imágenes de fondo, botones, tarjeta (anverso y reverso) y la página de información. También paso mucho tiempo centrándose en el icono de la aplicación. Esta es, obviamente, la "cara" de su aplicación, una insignia de honor, por lo que usted quiere poner una profunda reflexión en las imágenes de iconos. Recuerde, usted necesitará el icono, tanto en los 57 × 57 y 512 × 512 tamaños. Una vez terminado, me subirlo a Dropbox para que Roy puede empezar a utilizar los elementos creativos.

En el momento en que mirar hacia atrás al equipo portátil de Roy, que ha creado un nuevo proyecto de Xcode y ya está jugando con el código para animar cajas verdes que tapa en un clic. Mientras que él está trabajando en el prototipo en el iPhone Simulator, cojo el archivo Info.plist y editar algunos de los ajustes - quitar la barra de estado, el nombre de la aplicación de visualización, quite brillo de icono, etc A continuación, decide que es hora de añadir algunos imágenes reales de nuestro prototipo. Ponemos en la imagen de fondo, el anverso y reverso de las tarjetas y los botones de navegación. El posicionamiento está apagado (por mucho) pero las cartas se ven bien y es mover de un tirón sin problemas. Hacemos un poco de matemática mal, pero al final obtener el espaciamiento exacto y la posición que queremos para cada tarjeta. Jugamos un poco con el calendario de la tapa, sistema de encendido / apagado para los estados en el botón de navegación y ahora se siente bastante bien.

Al ver las piezas se unen en la aplicación me muestra que hay un par de imágenes que necesita ser refinada. Puedo hacer cambios como Roy comienza a trabajar en la pantalla y la pantalla de personalización de información. La personalizar la pantalla es el lugar que permite que la gente escriba lo que desea mostrar en la cara de la tarjeta. Lo límite de 25 caracteres ... nada más que eso y lo escribe en / fuera de la tarjeta. Hablamos a través de esta pantalla un poco más en detalle. La interacción en cada campo, cómo actúa el teclado, y cómo guardar antes de regresar a las cartas. Pasamos un poco de tiempo en la interfaz de cableado Builder exactamente cómo queremos que esta página para mirar y actuar. La página de información es completamente opcional, pero nos gustaría tenerlo, ya que incluye otras formas de llegar a nosotros.
Wow, siete horas y de cuatro grandes cafés más tarde, tenemos mucho por hacer, pero todavía hay mucho más por recorrer. Lo que tenemos ahora es una aplicación que enciende; muestra una pantalla de carga por defecto, hace que la gente a una pantalla que muestra tres cartas (parte posterior de la exhibición de la tarjeta), ya que pueden seleccionar cualquiera o todas las tarjetas y las tarjetas de los tirones para mostrar la frente de la tarjeta, sino que puede hacer clic en un botón llamado "Try Again" para restablecer las tarjetas, ya que pueden hacer clic en un botón "Personalizar" que se abre una nueva pantalla, el "Personalizar" pantalla le permite introducir texto en 3 por separado campos con un máximo de 25 caracteres en cada campo, y se puede llegar a la pantalla de información. Pasamos la última hora del día juntos la limpieza de código y discutir lo que nos queda para llevar a cabo mañana.

El domingo, nos reunimos en otra tienda de café con conexión Wi-Fi. El café primero. Sentimos que estamos cerca del 80 por ciento de hacer antes de empezar a trabajar otra vez. El trabajo principal a la izquierda para empezar el día es salvar el texto personalizado, mostrando el texto personalizado en la cara de la tarjeta, y el texto al azar. Teníamos ideas funcionalidad adicional, pero nos mantiene honestos, y mantuvo el arrastramiento del alcance a un mínimo. One example of this was the method for storing/saving the custom text on each of the three cards. Roy could have created a sqlite database or used Core Data, but the easiest approach was to just use the built in standardUserDefaults object found in the NSUserDefaults class. Using this method stores the values to the app's settings just fine for our needs and saves us a lot of time.

While Roy is working on those items, it's a perfect opportunity for me to prepare some of the things we'll need later that day. When you submit an app to the App Store, it's not a simple upload of a file. Apple requires the following information for every app submission: Application Name, Application Description, Device Requirements, Primary and Secondary Category, Subcategories, Copyright, App Rating, Keywords, SKU Number, Application URL, Screen shots, Marketing Description, Support URL, Support Email Address, End User License Agreement, and Pricing / Availability.
So, I prep all the app submission information while Roy is busy coding away, first searching the App Store for similar apps and their names. We like “Stuck?” and luckily no one else is using it, so we go with that name. I create the app description, add some keywords, set the price and determine where we want to sell this app (just in the USA, certain countries or worldwide). Then I register a domain name (stuckapp.com) to be used for the application URL/support URL and linked it to a newly created Tumblr account. I also created the required support email address. The other items you'll want to prepare in advance are: screenshots (up to five), a large icon (512×512) and, if this is your first time submitting an app, any certificates/provisioning profiles.
Things tend to take longer than you expect, and even though we're basically finished with the app by early Sunday afternoon, we still spend a couple of more hours tweaking it and preparing everything for the App Store submission—cleaning code and fine tuning as we go along. We spend the majority of the day on one computer pushing pixels, formatting, and ensuring the timing and user interaction was exactly as we both wanted. After almost five hours of work on Sunday, we have the app that we both envisioned. We begin testing in the iPhone simulator and then on devices (both iPhone and iPod touch) for stability and functionality. Again, being a simple app, it was easy and quick to test.
After proving its stability, we decide to publish Stuck? to the App Store. My first attempt at publishing another app by myself took two days—attempt, fail, Google, attempt, fail, Google more, etc.—until it finally worked. But the second time around was much easier and faster. We copy/paste all the text prepared earlier and then added the screenshots and images. All in all, we have our app uploaded in about 15 minutes. At this point, we're excited, hungry and tired, but also quite proud that we completed a solid app over a weekend in a coffee shop.

We had our fingers crossed that the App Store would approve our app. And, as amazed as we were that we could finish an app over the weekend, the real surprise came after we submitted to the App Store. We submitted the app on Sunday evening. It changed status from Waiting for Review‚ to In Review, on Monday. On Tuesday, we received an email informing us that our app was Ready for Sale. Approved in two days! That has to be a record‚ especially before the holidays.
Especially after talking about building an app together for so long, like so many people reading this article, I must say, the fulfillment is immense. We finally did it.

TIPS FOR COMPLETING AN APP OVER A WEEKEND
1. You can't do it yourself. You can, but you wouldn't want to. Ideally, you want to partner with someone with a different, complementary set of skills. Partner with someone who knows and respects your area of expertise, but is even more confident and knowledgeable about their own skills. Good communication is implied in an effort such as this so you'll go through periods of rapid fire questions bouncing ideas off each other and then periods of silence as you work on separate tasks. There's a lot to get done and multitasking will be key.
2. Multitask. As suggested above, working with someone who complements your own skills allows you to multitask. ¿Qué quiero decir? For example, in the beginning, once you scratch out a wireframe of an idea, one person can begin coding - putting placeholder buttons and blocks into place. At the same time, the other person can create comps and then cut out each element to use when they get to the right stage. Also, at the tail end of the project, one person can wrap up the project and clean the code while the other prepares all the images and marketing copy for the App Store submission process.
3. Do at least one thing well. Unlike most desktop applications or web project, you have to remember that most good mobile apps fulfill a need that can come anywhere, any time. Your app idea doesn't have to be complicated, but good apps seem to do one or more of these things well:
- Solves a problem; - Is entertaining; - Serves a specific niche; - Engages the user; and/or - Takes advantage of the unique features of the iPhone.
4. Set goals and milestones. Whether your goal is speed to market, just to gain experience, or to build the best damn app that does (blank), clearly state your goals. Initially, it will help you focus on the areas that are important/critical for success. It will also help you later down the road as you face hard decisions about “must-have” features and “like-to-have” features. Remember, you can always issue feature updates so focus on the “must-have” items and do whatever is necessary to meet that goal.
5. Get a Dropbox account. For small- to medium-sized projects, you cannot beat Dropbox. It allows you to store, share and synchronize files with others. Stop sharing files back and forth on your USB memory stick. Get a Dropbox account and share files in real time. We abused the hell out of our free, shared Dropbox folder and it worked flawlessly. For larger projects, you might want to give GitHub a try.
6. Test. Test. Test. When you see the finish line, it's easy to gloss over the important step of testing your app. Test in your iPhone simulator, but also try to get your hands on an iPod touch and of course on an iPhone as well. Depending on the complexity of your app, you might want to create a test plan to make sure all the use cases and functional tasks are covered. The last thing you want is to have an app in the App Store that crashes or doesn't work as expected. You may never recover from all the ego-shattering feedback.
7. Understand the App Store submission process. Apple provides a PDF document detailing to submission process. But that document is only available for registered developers. If you've already registered, read that document thoroughly before you begin the upload process. It will give you a good idea of what's involved, but also what you'll need to prepare in advance. Apple also provides some good tips for app store submission and approval .
Fuente
gizmodo