descargar apple app iphone ios ipad in-app-purchase

iphone - apple - ¿Cómo probar IAP(compra en la aplicación) en el simulador de iOS o en el dispositivo?



ios upload app (5)

He implementado un simple mecanismo de compra no consumible dentro de la aplicación siguiendo el manual de instrucciones de Ray Wenderlich.

Cuando mi aplicación se inicia, inicio una solicitud de información del producto:

self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers]; _productsRequest.delegate = self; [_productsRequest start];

El SKProductRequest se crea. Tiene una dirección de memoria pero no pasa nada más. Ninguno de los métodos de delegado es llamado:

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { NSLog(@"Product info received..."); NSArray *products = response.products; for (SKProduct *product in products) { NSLog(@"ID: %@, title:%@, (%f)", product.productIdentifier, product.localizedTitle, product.price.floatValue); } self.productsRequest = nil; } - (void)request:(SKRequest *)request didFailWithError:(NSError *)error { NSLog(@"Failed to load list of products"); self.productsRequest = nil; }

Lo comprobé dos veces:

  • Aplicación completamente configurada en iTunes Connect.
  • El estado de la aplicación en ITC es "Preparar para subir"
  • Un IAP no consumible agregado.
  • El estado del producto IAP en ITC es "Listo para enviar"
  • La ID de la aplicación es com.mycompany.myapp tanto para la aplicación como en el plist. Comprobado dos veces.
  • IAP usa com.mycompany.myapp.productname (usando exactamente la misma ID para la solicitud).
  • Creé una cuenta de usuario de prueba en ITC.
  • Nada ha sido enviado a Apple todavía.
  • Mi Mac tiene acceso a internet.
  • No hay otros mensajes en la consola o en la pantalla.

El libro de Ray Wenderlich no menciona que debo hacer otra cosa además de esto.

Solo una vez vi un -didFailWithError: llamé a mi delegado en el dispositivo, pero nunca más apareció. Mi delegado no es llamado tanto en el dispositivo como en el simulador. Lo dejé correr por unos minutos sin ninguna respuesta.

iTunes Connect da esta advertencia confusa:

Sus primeras compras en la aplicación deben enviarse con una nueva versión de la aplicación. Selecciónelos en la sección Compras dentro de la aplicación de la página Detalles de la versión y luego haga clic en Listo para cargar el binario.

¿Se requiere esto antes de poder probar las compras dentro de la aplicación?


¿Dónde se declara su objeto skProductRequest? Puedes probarlo con la declaración global de ese objeto.


Desafortunadamente hay varias cosas que no puedes probar en el simulador. En las compras de aplicaciones pertenece a esa lista.

Por lo tanto, no puede probar las compras en la aplicación en el simulador, necesita un dispositivo iOS para eso.

Edición: Hasta donde puedo ver, eso es lo que sucede cuando intenta probar IAP en el simulador, los delegados de compra no serán llamados.


En la documentación del simulador de iOS está escrito:

Limitaciones de la API

Dentro del simulador de iOS, existen algunas limitaciones para las API y las características, que incluyen:

Apple Push Services Privacy alerts for access to Photos, Contacts, Calendar, and Reminders The UIBackgroundModes key iCloud document syncing and key-value storage support

Los marcos no compatibles incluyen:

External Accessory Media Player Message UI Event Kit In UIKit, the UIVideoEditorController class Store Kit

Como la compra de la aplicación necesita Store Kit para funcionar y el marco de Store Kit no es compatible con Simulator, no puedes probar IAP en iOS Simulator.

Más información: documentación del simulador de iOS



Me di cuenta de algo:

Inicié el SKProductRequest inmediatamente al final de AppDelegate''s -didFinishLaunching ... y nunca funcionó.

Entonces hice una llamada retrasada y esperé 3 segundos. A partir de entonces empezó a funcionar. Por lo tanto, no puede realizar solicitudes de StoreKit inmediatamente después del inicio de la aplicación.