iPhone StoreKit: id de producto no válido
iphone-sdk-3.0 (22)
¿Para qué es @ "8"? su producto se llama com.super.duper.8 ¿verdad?
http://blog.mugunthkumar.com/coding/iphone-tutorial-%E2%80%93-in-app-purchases/
Intento probar In App Purchase dentro del entorno de sandbox.
Para probar el código, hice lo siguiente:
Se creó una cuenta de Usuario de prueba de compra en la aplicación bajo ''Administrar usuarios'' en iTunes Connect
Creado en productos de compra de aplicaciones en ''Administre sus compras de aplicaciones''. Usé valores numéricos y valores alfanuméricos para las ID de productos.
Cargó la aplicación en el iPhone, fue a Configuración-> Almacenar y se desconectó de la tienda habitual y a la cuenta de prueba creada en el paso 1
Establezca un punto de interrupción en la
void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
devolución de llamada
Todos los ID de productos enviados se encuentran en la propiedad response.invalidProductIdentifiers
. Al enviar la solicitud, primero probé los ID de Producto exactos que se crearon durante el paso 2. También probé con los prefijos con la ID del paquete:
NSString *id2 = @"com.super.duper.8";
NSSet *productList = [NSSet setWithObjects:id2, @"8", nil];
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:productList];
¿Me estoy perdiendo algo obvio? Cualquier ayuda es apreciada.
Achim
Apple tiene un documento fantástico que no es muy conocido que lo cubra al final. También disipa algunos mitos sobre cosas que no ayudan (por ejemplo, enviar un binario).
Nota técnica 2259 "Agregar compra en la aplicación a sus aplicaciones iOS y Mac"
Aquí es donde te estás equivocando, necesitas esto en tu código:
NSSet *productList = [NSSet setWithObjects:product id]
Puede obtener esta identificación de producto desde iTunes Connect.
Y debe asegurarse de haber creado un usuario de prueba y haber cerrado sesión en su cuenta original de iTunes. Consulte no iniciar sesión con la cuenta de usuario de prueba, independientemente de lo que diga la documentación de Apple, simplemente úsela cuando aparezca una ventana emergente.
En mi caso, no completé la información bancaria, la información fiscal y la información de contacto. Una vez que termino esto, puedo obtener mi ID de producto, espero que esto ayude a alguien.
He probado todas las soluciones disponibles en Internet, y nada funcionó, absolutamente nada. Mi problema: mi dispositivo estaba jailbreak y tenía Cydia en él. Restauré el dispositivo a los valores predeterminados de fábrica (no jailbroken) y funcionó la primera vez y no devolvió la identificación del producto.
Intenté todo de lo que todos están hablando. Terminé haciendo una cuenta de invitado primero para ver si se podía encontrar la identificación del producto ... Lo era. Entonces comencé a dejar todo en el monitor de actividad y encontré el problema. Tuve que abandonar los procesos de "tienda" a continuación. De repente, dejé de obtener la identificación del producto no válida. Espero que ayude a alguien por ahí.
Intenté todo lo sugerido en los foros de Apple y aquí, y todavía no pude hacerlo funcionar. Encontré la solución: su aplicación debe ser transferida por Xcode para que se habilite la zona de pruebas.
Obvio, ¿verdad? Bueno, si está trabajando con una actualización de una aplicación existente, el dispositivo seguirá considerándola como una aplicación instalada en la tienda de aplicaciones.
Así que elimine la aplicación de su dispositivo. Luego, vuelva a instalar la aplicación en el dispositivo utilizando Build & Run con su dispositivo conectado a su Mac. Debería funcionar ahora :)
Intente restablecer la configuración de iphone y elimine la aplicación de iphone y use el ID de solicitud de producto directamente sin la identificación del paquete.
La tienda tarda algo de tiempo en poner los productos a disposición de todos los servidores (ver documentación). Por lo tanto, es posible que experimente un retraso entre la creación de un producto en iTunes Connect y la identificación del producto como válida al probar en el dispositivo. Para mí tomaron alrededor de 12 horas hasta que aparecieron mis productos.
No estoy seguro de por qué, pero cuando cambié el ID de producto de la solicitud de ''com.mycompany.myapp.product'' a ''producto'', comenzó a funcionar. Tal vez sea por la forma en que tengo configurado el producto en iTunes Connect.
Pruébalo, podría funcionar para algunos de ustedes ...
Nuestro problema fue el último punto de la pregunta frecuente de Apple, " ¿Por qué se devuelven los identificadores de mi producto en la matriz invalidProductIdentifiers
? ":
- No completó todos los requisitos financieros (consulte la sección "Contratos, impuestos e información bancaria" de este documento).
- No usaste una ID de aplicación explícita.
- No usaste el perfil de provisión asociado a tu ID de aplicación explícita.
- No usaste el identificador de producto correcto en tu código. Consulte Technical Q & A, QA1329, ''In App Purchase Product Identifiers'' para obtener más información sobre los identificadores de producto.
- No borró sus productos In App Purchase para la venta en iTunes Connect.
- Es posible que haya modificado sus productos, pero estos cambios aún no están disponibles para todos los servidores de la App Store.
- Si usted o App Review rechazaron su binario más reciente en iTunes Connect.
Cambié la versión más reciente (que había sido rechazada) a "Esperando cargar" haciendo clic en "Listo para cargar archivos Binarios" en iTunes Connect y el problema se resolvió después de aproximadamente 10 minutos.
Otro problema que podría ser Si el nombre de su proyecto xCode no está escrito en inglés, o tiene otros caracteres, la identificación del paquete tendrá "------" donde debería estar el nombre de su aplicación. Pensé que era solo una convención para ID de paquete, para tener esto en xCode. Resulta que este era mi problema, así que nombre su proyecto xCode en inglés) Sé que este no es el caso para la mayoría, pero de todos modos)
Otro problema que tuve fue que tenía que ir a Window> Organizer en Xcode y eliminar mi aplicación y los perfiles de aprovisionamiento y volver a agregar mi perfil de aprovisionamiento de desarrollo. Reinicié el dispositivo y xcode como una medida extra.
Para cualquier otra persona que tenga estos problemas, le recomiendo leer este hilo en el foro de Apple.
Para mí, el problema fue que había elegido "Activar el alojamiento de contenido" cuando configuré la compra en la aplicación. Entonces tuve que apagarlo y el problema fue resuelto.
Pasé dos días luchando con todos mis productos. Request (para AppID) terminó en la lista response.invalidProductIdentifiers, en lugar de en la lista de response.products. Apple definitivamente hizo un trabajo de grado F al lidiar con su tienda. Es confuso, entrelazado y complejo.
Finalmente lo resolví. Una lección muy importante que aprendí, tal como lo indican algunos en los foros: puede tomar muchas horas para que surta efecto lo que ingresó en itunesconnect.apple.com.
Hay dos partes: el nombre de la aplicación y el ID de aplicación en su xcode y lo que ingresó en itunesconnection, tienen que coincidir exactamente (distingue entre mayúsculas y minúsculas). Si registró o modificó su AppleID en la aplicación (también completé todos mis contratos e información bancaria, como algunos sugirieron que las acciones de compra no funcionarán sin realizar esta parte), es mejor que se vaya a la cama antes de volver a probarlo. porque realmente toma horas en mi caso tomar efecto. Estaba tan frustrado luchando con este problema antes de que mi hijo de 9 años me arrastrara a la historia de la hora de dormir y luego me sorprendió descubrir que el problema desapareció cuando me desperté.
Encontré las sugerencias de Eddy71 en http://www.iphonedevsdk.com/forum/iphone-sdk-development/21035-problems-creating-test-user-app-purchase.html realmente útiles. Antes de resolverlo, hice todo lo que posiblemente podía hacer en la lista de verificación de Eddy y todavía obtuve cero productos, uno de mis temores era si sin cargar el código binario para completar el registro de la aplicación en itunesconnect estaba bien (no es necesario iniciarlo como se enseña en http://blog.mugunthkumar.com/coding/iphone-tutorial-%E2%80%93-in-app-purchases/ ). De hecho está bien. Asegúrese de que la casilla "autorizada para la venta" sea chequeada y que el ícono esté en verde (para completarla, necesita un paso adicional para aprobarla). El otro temor era que si puedo usar el desarrollador provisional (no distribución provisional) en modo de depuración, también está bien. Espero que esto pueda ayudar a algunos de ustedes. Buena suerte y ten fe. Funcionará eventualmente.
Si aún obtiene identificadores de productos no válidos, he estado acumulando una lista de verificación de todas las causas:
Si desea conservar los datos de su aplicación pero desea intentar eliminar su aplicación para solucionar este problema, primero sincronice su dispositivo. A continuación, elimine su aplicación y vuelva a instalarla desde Xcode; esto me solucionó el problema. Una vez que esté funcionando, puede restaurar su dispositivo desde su copia de seguridad; esto solo lleva unos minutos y las solicitudes del producto aún funcionan después de la restauración.
Terminamos creando un nuevo perfil de aprovisionamiento, había una línea en algún lugar (no recuerdo dónde, ni en los documentos para la compra de la aplicación) que indicaba que debe habilitarse en la compra de la aplicación en el perfil de aprovisionamiento. No pudimos hacer eso con nuestro perfil existente, así que creamos uno nuevo y luego pudimos habilitarlo.
Una nota para los demás: no use un NSMutableSet para las ID de productos. ¡Tiene que ser un NSSet!
está bien que el teléfono esté jailbroken, solo tienes que desinstalar appSync en Cydia, luego funciona
reemplazar:
NSSet *productList = [NSSet setWithObjects:id2, @"8", nil];
con:
NSSet *productList = [NSSet setWithObjects:@"8", nil];