Como canjear promoCodes de apple

Tomado de esta web:

http://www.mackinando.com/iphone/como-canjear-promocodes/

 Podemos encontrar las diferentes opciones de canjear un promocode para apliaciones gratuitas de iphone, ipad o ipod.

Aqui os pongo un codigo promocional de juego de tronos.

Abrirlo desde el iphone directamente!

https://phobos.apple.com/WebObjects/MZFinance.woa/wa/freeProductCodeWizard?code=7NXAEMX7K7TP

Un saludo!!!

Nueva aplicación sobre la serie TRUE BLOOD

Guia de la serie de television TRUE BLOOD (Sangre Fresca), donde podras encontrar informacion sobre toda la serie, asi como sus personajes, historia, y sucesos ocurridos desde la primera hasta la ultima temporada.

Tambien encontraras diferentes imagenes de la serie, y un resumen de todas las temporadas

Ponte al dia sobre los sucesos, o recuerda lo sucedido antes de ver la nueva temporada de TRUE BLOOD

La aplicacion se ira actualizando conforme se vayan emitiendo los diferentes capitulos de las temporadas.

Aplicacion solo en Español

Esta es la dirección:
Espero que os guste!! Un saludo

Nueva aplicacion para iphone sobre el universo de ALIENS

Ya esta terminada y publicada la nueva aplicacion en la que he estado trabajando sobre el Universo de la Saga Aliens. Podeis encontrar toda la información sobre las películas, videojuegos, y proximamente Comics!

Descripción

Aplicacion con una recopilacion de informacion sobre el Universo Aliens, donde podras encontrar:

Argumentos de las peliculas de la saga
Referencia sobre los videojuegos de la saga
Informacion sobre el xenomorfo
Imagenes de la serie
Sonidos del xenomorfo
(30 sonidos originales del xenomorfo!!)

Proximamente… mas contenido del Universo aliens!!

Aqui el enlace de la aplicacion:
Un saludo a todos!!!

Reproducir sonidos en nuestras aplicaciones creadas con XCODE para iphone

Esto lo he cogido directamente del blog de Cocoa Mental, donde tienen un monton de informacion sobre diferentes temas de programacion para ios.
Lo pongo aqui por tenerlo a mano.
Su direccion: http://www.cocoaosx.com/2011/06/20/como-reproducir-sonidos-en-ios/

Formatos de Sonido para iPhone e iPad

Con Cocoa-Touch puedes reproducir sonidos en los siguientes formatos:

  1. wav (no comprimido)
  2. mp3 (comprimido)
  3. aiff (comprimido)
  4. caff (no comprimido)
Ogg, a fecha de hoy (Junio 2011) no es uno de ellos. Los formatos preferidos son CAFF (Core Audio File Format) y AIFF (Audio Interchange File Format). Son los que menos recursos consumirán.

¿Qué formato de sonido es más adecuado para iOS?

Para sonidos cortos, como un bip al tocar un botón, el ideal es CAFF. Al no ser comprimido, iOS no tendrá que perder el tiempo descomprimiéndolo y sonará casi instantaneamente. Apple recomienda no usarlo para ficheros de más de 30 segundos de duración.
Para sonidos más largos, es preferible usar el formato AIFF (que logra compresiones de hasta 4:1). iOS lo irá descomprimiendo sobre la marcha, a medida que lo reproduce.

Convertir sonidos al formato adecuado para Cocoa

Si tienes un sonido en mp3 o wav y deseas convertirlo a alguno de estos formatos, la herramienta necesaria viene incluída con el SDK de iPhone. Es una utilidad de linea de comandos llamada afconvert.
Algunos ejemplos del uso de afconvert:

#creates sound.caf (little endian, 16 bit)

afconvert -f caff -d LEI16 sound.wav
# creates sound.caf (little endian, 16 bit, 22kHz)
afconvert -f caff -d LEI16@22050 sound.wav
# creates sound.caf (little endian, 16 bit, MONO)
afconvert -f caff -d LEI16 -c 1 sound.wav
# creates sound.aifc (IMA4 compression)
afconvert -f AIFC -d ima4 sound.wav
# creates sound.aifc (IMA4 compression, MONO)
afconvert -f AIFC -d ima4 -c 1 sound.wav

Reproducir un sonido corto en iOS

Lo primero es añadir la siguiente framework a tu proyecto: AudioToolbox. Luego tienes que #import <AudioToolbox/AudioServices.h>

Crear un SystemSoundID para tu sonido

(void)viewDidLoad
{
    [superviewDidLoad];
    NSString *path = [[NSBundlemainBundle] pathForResource:@“btn”ofType:@“caf”];
    NSURL *url = [NSURLfileURLWithPath:path isDirectory:NO];
    SystemSoundID id;
    OSStatus res = AudioServicesCreateSystemSoundID((CFURLRef)url, &amp;id);
    if (res == kAudioServicesNoError) {
        self.btnClickId = id;
}

}

Reproducir el sonido

-(IBAction) playClic: (id) sender{

    AudioServicesPlaySystemSound(self.btnClickId);
}

Recuerda que luego habrá que llamar a AudioServicesDisposeSystemSoundID() para liberar recursos.

Reproducir un sonido largo en iOS

Lo primero es añadir las siguientes frameworks a tu proyecto:

  • AVFoundation
  • MediaPlayer
luego haz un #import <AVFoundation/AVAudioPlayer.h>
(IBAction) playLongSound: (id) sender{
    NSString *filePath = [[NSBundlemainBundle] pathForResource:@“beach_waves”ofType:@“aifc”];
    NSError *err = nil;
    NSData *soundData = [[NSDataalloc] initWithContentsOfFile:filePath options:NSDataReadingMappederror:&amp;err];
    AVAudioPlayer *p = [[AVAudioPlayeralloc] initWithData:soundData error:&amp;err];
    self.player = p;
    self.player.numberOfLoops = 1;
    [self.playerplay];}
Todos estos ejemplos suponen que los archivos de sonido han sido previamente añadidos a tu proyecto.

Donde obtener sonidos

Un excelente lugar para buscar sonidos bajo licencia Creative Commons es Freesound.

Gracias al blog de Cocoa Mental. Vuelvo a poner su direccion:

 http://www.cocoaosx.com/2011/06/20/como-reproducir-sonidos-en-ios/

Un saludo!!!

añadir un framework en xcode 4

Vamos a hacer una entrada sencilla, para ver o recordar como añadir un framework a nuestro proyecto en XCODE 4

Mejor una imagen que mil palabras!!!:

  1. En el navegador de proyecto (“project navigator”), selecciona tu proyecto.
  2. Selecciona el objetivo (“target”)
  3. Selecciona la pestaña “Build Phases”.
  4. Abre la sección “Link binaries with libraries”
  5. Haz clic en el botón “+”
  6. Selecciona tu framework
  7. Arrastra la framework  que acaba de añadirse a tu proyecto al grupo de “Frameworks” (opcional).

Un saludo!!!

Aprendiendo Objetive-C para IOS (Dia 27)

Guion del blog de curso de Objetive-C para IOS – DIA 27
—————————————————————————–
Después de unos dias… volvemos a la carga con XCODE!!!
Vamos a ver esta vez, como crearnos una nueva vista, usando un scrollview, y metiendo una imagen, pero esta vez, queremos poder hacer zoom a la imagen, asi como arrastrar el dedo por la pantalla, y cambiar la ubicacion del archivo de imagen.

Voy a usar un mapa grande de la serie “Juego de Tronos”, que quiero utilizar proximamente en una aplicacion que tengo creada, y que estoy trabajando para actualizarla.
Creamos pues un nuevo proyecto de tipo single view como siempre, y creamos en la vista un UIScrollView
A continuacion, creamos una nueva clase, que sera una subclass de UIViewController, y la llamamos imagenViewController.
Por ultimo, vamos a las propiedades en el storyboard de nuestra vista, y le decimos que la clase es la de nuestro imagenViewController.
Hacemos el outlet de nuestro scrollView, y lo llamamos directamente scrollView
Importamos ahora la imagen del mapa, arrastrando el archivo de imagen a nuestro xcode. La llamaremos image1.jpg
Hasta aqui, solo hemos preparado nuestro proyecto. Vamos ahora con la programacion.
Hay que tener en cuenta, que tengo que arreglarmelas para que la imagen responda ante diferentes gestos del usuario, ya que queremos poder hacer zoom, o poder desplazar la imagen de un lado a otro.
Para eso, me creo una nueva clase que sera una subclase de UIImageView, a la que le daremos las diferentes caracteristicas para que responda ante los TAP del usuario. He usado un codigo de Apple, que esta en su pagina web, y lo he modificado un poquito para nuestros propositos. La clase se llamara TapDetectingImageView
Veamos como quedan los archivos de dicha clase (Fijaos en la explicacion de los comentarios
————-
TapDetectingImageView.h:
————————
@protocol TapDetectingImageViewDelegate;
@interface TapDetectingImageView : UIImageView {
    
    // Variables que agregamos a nuestra clase, para poder detectar los posibles toques.
    CGPoint tapLocation;         // Necesarios para guardar las cordenadas cuando se le da un toque a la pantalla
    BOOL multipleTouches;        // estara puesto a YES, si se le da mas de un toque
    BOOL twoFingerTapIsPossible; // Estara establecido a NO cuando se puedan usar dos toques.
    
}
@property (nonatomic, weak) id <TapDetectingImageViewDelegate> delegate;
@end
/*
 Vamos a definir ahora el protocolo necesario para que la aplicacion responda antes los toques del usuario.
 Implementaremos varios metodos, segun sea nuestro caso.
 */
@protocol TapDetectingImageViewDelegate <NSObject>
@optional
//En el caso de un simple toque
– (void)tapDetectingImageView:(TapDetectingImageView *)view gotSingleTapAtPoint:(CGPoint)tapPoint;
//En el caso de dos toques
– (void)tapDetectingImageView:(TapDetectingImageView *)view gotDoubleTapAtPoint:(CGPoint)tapPoint;
//En el caso de pellizcar la pantalla
– (void)tapDetectingImageView:(TapDetectingImageView *)view gotTwoFingerTapAtPoint:(CGPoint)tapPoint;
@end
————-
TapDetectingImageView.m:
————————
#import “TapDetectingImageView.h”
@implementation TapDetectingImageView
@synthesize delegate;
– (id)initWithImage:(UIImage *)image {
    self = [super initWithImage:image];
    if (self) {
        [self setUserInteractionEnabled:YES];
        
        UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
        UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
        UITapGestureRecognizer *twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerTap:)];
        
        [doubleTap setNumberOfTapsRequired:2];
        [twoFingerTap setNumberOfTouchesRequired:2];
        
        [self addGestureRecognizer:singleTap];
        [self addGestureRecognizer:doubleTap];
        [self addGestureRecognizer:twoFingerTap];
        
        //SI USAMOS ARC, tenemos que tapar estar lineas, sino las DESTAPAMOS
        //[singleTap release];
        //[doubleTap release];
        //[twoFingerTap release];
    }
    return self;
}
#pragma mark Private
– (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer {
    if ([delegate respondsToSelector:@selector(tapDetectingImageView:gotSingleTapAtPoint:)])
        [delegate tapDetectingImageView:self gotSingleTapAtPoint:[gestureRecognizer locationInView:self]];
}
– (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer {
    if ([delegate respondsToSelector:@selector(tapDetectingImageView:gotDoubleTapAtPoint:)])
        [delegate tapDetectingImageView:self gotDoubleTapAtPoint:[gestureRecognizer locationInView:self]];
}
    
– (void)handleTwoFingerTap:(UIGestureRecognizer *)gestureRecognizer {
    if ([delegate respondsToSelector:@selector(tapDetectingImageView:gotTwoFingerTapAtPoint:)])
        [delegate tapDetectingImageView:self gotTwoFingerTapAtPoint:[gestureRecognizer locationInView:self]];
}
    
@end
————-
Ya tenemos creado el archivo necesario para realizar la deteccion de los toques. Vamos ahora con nuestro archivo principal, llamado imageViewController.
————-
//
//  imagenViewController.h
//  Diario027
//
//  Created by david fraj blesa on 06/07/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import <UIKit/UIKit.h>
//Vemos que establecemos el protocolo UIScrollViewDelegate en la definicion, asi nos obligamos a implementar sus metodos si fuera necesarios
@interface imagenViewController : UIViewController<UIScrollViewDelegate>
//Conectamos el scrollview (Lo hemos realizado directamente, arrastrando con el raton hasta aqui)
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
//Creamos una variable de imagen
@property (retain, nonatomicUIImageView *image;
//Establecemos el metodo que cambiara el tamaño. Acordaos que esto es solo la definicion
– (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center ;
@end
————-
//
//  imagenViewController.m
//  Diario027
//
//  Created by david fraj blesa on 06/07/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import “imagenViewController.h”
//Debemos importar el archivo TapDetectingImageView.h, para poder usar los gestos
#import “TapDetectingImageView.h”  
//Definimos una CONSTANTE, para cambiar la velocidad del ZOOM
#define ZOOM_STEP 1.5
@implementation imagenViewController
//Hacemos el synthesize de scrollView(Nuestro scroll) y de image(nuestra imagen), para tener asi los getter y los setters.
@synthesize scrollView;
@synthesize image;
– (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
– (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn’t have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren’t in use.
}
#pragma mark – View lifecycle
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
– (void)loadView
{
}
*/
/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
– (void)viewDidLoad
{
    [super viewDidLoad];
}
*/
– (void)viewDidUnload
{
    //Cuando la vista de descargue, establecemos esto a nil
    [self setScrollView:nil];
    [self setImage:nil];
    
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}
– (void)viewDidLoad {  
    [super viewDidLoad];  
    
    //Cuando carguemos la VIEW, establecemos diferentes parametros de scrollView
    scrollView.bouncesZoom = YES;  
    scrollView.delegate = self;  
    scrollView.clipsToBounds = YES;  
    
    //Creamos la imagen, y le asignamos el mapa.
    image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@”image1.jpg”]];  
    image.userInteractionEnabled = YES;  
    image.autoresizingMask = ( UIViewAutoresizingFlexibleWidth );  
    
    //Añadimos dicha imagen a nuestro scrollView
    [scrollView addSubview:image];  
    
    //Establecemos el tamaño del contenido
    scrollView.contentSize = [image frame].size;  
    
    // añadimos el reconocedor de gestos a la imagen
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];  
    UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];  
    UITapGestureRecognizer *twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerTap:)];  
    
    [doubleTap setNumberOfTapsRequired:2];  
    [twoFingerTap setNumberOfTouchesRequired:2];  
    
    [image addGestureRecognizer:singleTap];  
    [image addGestureRecognizer:doubleTap];  
    [image addGestureRecognizer:twoFingerTap];  
    
    //Si estamos usando ARC, tenemos que tener esto tapado, tal como esta aqui
    //[singleTap release];  
    //[doubleTap release];  
    //[twoFingerTap release];  
    
    // Calculamos la escala minima, para fijar la anchura de la imagen, y empezar a escalarla  
     float minimumScale=[scrollView frame].size.width/[image frame].size.width;
     
    //imageScrollView.maximumZoomScale = 1.0;  
    scrollView.minimumZoomScale = minimumScale;  
    scrollView.zoomScale = minimumScale;  
}  
– (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {  
    // Le ponemos return YES, para que soporte el cambio de orientacion 
    return YES;  
}  
#pragma mark UIScrollViewDelegate methods  
– (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {  
    return image;  
}  
#pragma mark TapDetectingImageViewDelegate methods  
//Que pasa si slo le damos una vez
– (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer {  
    // al darle solo una vez, no hacemos nada.  
}  
//Que pasa si le damos dos veces
– (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer {  
    // Hacemos zoom
    float newScale = [scrollView zoomScale] * ZOOM_STEP;  
    CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]];  
    [scrollView zoomToRect:zoomRect animated:YES];  
}  
//Que pasa si pellizcamos
– (void)handleTwoFingerTap:(UIGestureRecognizer *)gestureRecognizer {  
    // Al pellizcar la pantalla 
    float newScale = [scrollView zoomScale] / ZOOM_STEP;  
    CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]];  
    [scrollView zoomToRect:zoomRect animated:YES];  
}  
#pragma mark Utility methods  
//Metodo para reescalar
– (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center {  
    
    CGRect zoomRect;  
    
    //Como estamos recibiendo la nueva escala, la usamos para establecer el nuevo rectangulo, que hara el papel de zoom
    zoomRect.size.height = [scrollView frame].size.height / scale;  
    zoomRect.size.width  = [scrollView frame].size.width  / scale;  
    
    // Elegimos el origen correcto, que sera el centro de la pantalla 
    zoomRect.origin.x    = center.x – (zoomRect.size.width  / 2.0);  
    zoomRect.origin.y    = center.y – (zoomRect.size.height / 2.0);  
    
    return zoomRect;  
}  
@end
————-
He comentado todo el codigo para explicar lo que se hace en cada apartado.
Parte del codigo lo he recogido de esta pagina web
Lo malo que en esta web, esta todo en Ingles, y esta programado para la version anterior de XCODE, asi que he tenido que retocarlo un poco, para poder usar asi el ARC
Un saludo a todos!!
————-
nota: Esto es no es curso propiamente dicho, es un diario de autoaprendizaje de objetive-c, que me sirve para afianzar conocimientos, y de paso, tener un diario de referencia, con ejemplos propios de uso del lenguaje.
————-

iphone de imitacion

Ayer tuve la oportunidad de probar un iphone de imitacion (de estos llamados iphone chinos), y os recomiendo que NO compreis uno por muy barato que sea. Si no enciendes el movil, y lo pones junto a un iphone de verdad, podrias pensar que es el mismo movil. En cuanto lo coges, empiezas a notar cosas raras, como la calidad de los botones, o el interruptor de silenciar, que no da la calidad adecuada.

Una vez que enciendes el telefono movil, la pantalla tactil notas que es horrible. Tienes que “arrastrar” el dedo para pasar de pantalla. Eso si, han imitado casi a la perfeccion el aspecto de las aplicaciones, pero no os engañeis, solo el aspecto. Si te metes en una aplicacion, la calidad de la misma deja mucho que desear.

En el navegador web, solo consegui meterme en google en chino, y aunque me metia en google.es, los resultados seguian saliendo en chino.

Por supuesto que NO se puede acceder al appstore oficial, ni a itunes, con lo que no tienes ninguna caracteristica que te ofrece apple.

Las aplicaciones eran en formato jar (Formato de JAVA que utilizaban los moviles de hace unos 8 años, como el N70), con lo que solo pueden funcionar aplicaciones de tipo MIDDLET (Ovidaos de Whatsup, angrybird, tomtom, ….. es decir…. olvidaos de cualquier aplicacion en este movil).

Que hacer con este movil pues???? Pues como mucho, se puede emplear para hacer fotos (2mpx si llega), o escuchar musica, o navegar por internet (supongo que alguna forma habra de cambiar el google chino), pero poco mas. Es un movil creado para engañar a la gente a primera vista. Que no os engañen!!!!

Un saludo.

Aprendiendo Objetive-C para IOS (Dia 26)

Guion del blog de curso de Objetive-C para IOS – DIA 26
—————————————————————————–
Vamos a ver como podemos crear una nueva vista con una imagen que podamos mover usando un ScrollView. Para eso. Necesitaremos una imagen lo suficientemente grande para poder interactuar con ella, y movernos asi a base de arrastrar por la pantalla.

Creamos un nuevo proyecto del tpo Single View Controller.
Agregamos al proyecto un nuevo UIImage.

Con el UIImage seleccionado, podemos ir a editor-> Embed IN-> Scroll View
De esta forma, ya tenemos metida la imagen en el scrollView.
Una vez hecho esto, vamos a centra la imagen de forma adecuada en el scrollview, tal como vemos en la imagen
Tambien le damos la posicion correcta de coordenadas al scrollview, y luego cambiamos el tamaño de este mismo, para que ocupe toda nuestra pantalla
Establecemos el zoom del scrollviewcontroller

Y ampliamos nuestro scrollview, hasta que ocupe toda la pantalla

Una vez hecho esto, tenemos que crear una nueva clase, basandonos en ViewController. Le pongo de nombre miViewController, y desde el storyboard, establezco la clase de mi vista, a miViewController, desde el Identifier

Una vez hecho esto, creamos los outlets en el archivo miViewController.h, de la imagen, y del scrollview, quedando el archivo asi:

//
//  miViewController.h
//  Diario026
//
//  Created by david fraj blesa on 02/07/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface miViewController : UIViewController<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
———————–
Una vez que tenemos lo outlets, nos habra creado automaticamente los synthesize en el archivo miViewCOntroller.m
En ese archivo, buscamos el metodo viewDidLoad, y sustituimos las lineas tapadas por el codigo siguiente.
————————
– (void)viewDidLoad
{
    [super viewDidLoad];
    
//Le decimos que el delegado del scrollView es el mismo miViewController
    self.scrollView.delegate = self;
//Establecemos que el tamaño del scrollview, es el tamaño de la imagen
    self.scrollView.contentSize = self.imageView.image.size;
//Dibujamos la imagen
    self.imageView.frame = CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
}
-(UIView *) viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    // Le decimos que vista queremos hacer zoom.
    return self.imageView;
}
————-
Compilamos y ejecutamos, asi que deberia ya funcionar todo.
Un saludo!!!!!
————-
nota: Esto es no es curso propiamente dicho, es un diario de autoaprendizaje de objetive-c, que me sirve para afianzar conocimientos, y de paso, tener un diario de referencia, con ejemplos propios de uso del lenguaje.
————-

Aprendiendo Objetive-C para IOS (Dia 25)

Guion del blog de curso de Objetive-C para IOS – DIA 25
—————————————————————————–
CREANDO UNA APLICACION COMPLETA, Y SUBIENDOLA AL APPSTORE PARTE 7 (FINAL):

Hoy terminamos  de subir la aplicacion al appstore, asi que en estas siete partes dentro del diario, vemos el proceso completo para crear una aplicacion desde cero, hasta subirla al appstore.

Vamos a ello….

Le damos a añadir aplicacion desde nuestro itunes connect, y le decimos fecha de publicacion, asi como tier de precio que le queremos dar. En mi caso elijo FREE.

 Me dira que le ponga informacion sobre la Version, copyright, categoria y subcategoria.

Contestamos diversas preguntas, para darle un ratio de edad a la aplicacion, asi como le ponemos una descripion, unas palablas clave, una direccion de correo y una direccion web de soporte.

Tenemos que subir un icono de la aplicacion de 512×512, y alguna captura del producto en resoluciones de 640×960 por ejemplo.

Guardamos los cambios y vemos un resumen. Le damos aVIEW DETAILS

Ya esta todo listo, asi que le damos a READY TO UPLOAD BINARY, para darle a conocer que estamos preparados para subir la aplciacion

Vamos a Xcode, y desde Build Settings, cambiamos el code signing a DISTRIBUTION, para firmar la aplicacion con nuestro certificado vajado el dia anterior.
 
Vamos al menu product, y elegimos build for -> Buid for archiving

Vamos a producto -> ARCHIVE

Nos llevara al organizador, y debemos pulsar en VALIDATE.

Escribimos nuestras credenciales de usuario y clave y pinchamos en NEXT

Pinchamos de nuevo a NEXT

Tenemos que decirle en este paso, si nuestra aplicacion tiene algo de criptografia. Decimos que no y SAVE

Pinchamos en CONTINUE

Nos dice que todo correcto, asi que pinchamos en finish.

 Una vez que esta en STATUS PASSED VALIDATION, elegimos SUBMIT

 Pinchamos en NEXT para ir al paso siguiente

Aparecera la barra de progreso, como que esta subiendo la aplicacion. Una vez que este subida la apliacion, aparecera como que ha sido subida con exito, y esta lista para revision.


Ahora a esperar una semanita, a ver si apple nos aprueba la aplicacion.

Espero que haya sido de ayuda.

Un saludo!!!

————-
nota: Esto es no es curso propiamente dicho, es un diario de autoaprendizaje de objetive-c, que me sirve para afianzar conocimientos, y de paso, tener un diario de referencia, con ejemplos propios de uso del lenguaje.
————-