iPhone de la Tienda Kit de devolución de producto no válida de IDENTIFICACIÓN de errores

StackOverflow https://stackoverflow.com/questions/1633072

Pregunta

Estoy tratando de poner a prueba En las Compras de aplicaciones en mi iPhone y se ejecuta en un problema donde el Id de producto solicito información para terminar de ser devueltos a mí como no válido Id de producto en el "didRecieveResponse" método.

Tengo:

  • Creado una tienda de productos asociados con esta aplicación.Es el ID del paquete coincide con todo lo demás.Que haya sido autorizado para la venta y aprobados por el desarrollador.
  • Aseguré mi nuevo perfil de suministro tiene en la app store de compras habilitado y cuenta con la plena nombre de la aplicación:"com.dominio.appname"
  • Este es el perfil de suministro se utiliza para firmar la aplicación para mi iPhone.
  • Aseguró que "com.dominio.appname" es el ID de la aplicación utilizada para crear el perfil de suministro.
  • Aseguró que "com.dominio.appname" es utilizada en mi archivo plist como el identificador del paquete.

Todo parece estar en su lugar, sin embargo todavía tengo mis productos devueltos a mí como no válido Id.

Este es el código que estoy usando:


- (void)requestProductData {
   SKProductRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject: @"com.domain.appname.productid"]];
   request.delegate = self;
   [request start];
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
   NSArray *myProducts = response.products;
   NSArray *myInvalidProducts = response.invalidProductIdentifiers;

   for(int i = 1; i < myInvalidProducts.count; ++i)
   {
      std::cout <<"invalid product id = " << [[myInvalidProducts objectAtIndex:i] UTF8String] << std::endl;
   }

   for(int i = 0; i  < myProducts.count; ++i)
   {
      SKProduct * myProduct = [myProducts objectAtIndex:i];
      std::cout << "Product Info:"  << std::endl;
      std::cout << "\tlocalizedTitle         = "  << [[myProduct localizedTitle] UTF8String]  << std::endl;
      std::cout << "\tlocalizedDescription   = "  << [[myProduct localizedDescription] UTF8String]  << std::endl;
      std::cout << "\tproductIdentifier      = "  << [[myProduct productIdentifier] UTF8String]  << std::endl;
      std::cout << "\tprice                  = "  << [[myProduct price] doubleValue]  << std::endl;
      std::cout << "\tpriceLocale            = "  << [myProduct priceLocale]  << std::endl;
   }

   [request autorelease];
}

Toda mi Id de producto se muestran en la inválida impresiones y ninguno de ellos se muestran en la "Información de los Productos:" las impresiones.

Cualquier sugerencia sería muy apreciada...

P. S.Sí, este es construido como Objetivo-c/c++.

¿Fue útil?

Solución 7

OK, así que después de hacer todo lo que podría pensar y leer cada foro, esto es lo que funcionó:

Rehacer TODO.

  1. Elimine TODOS sus perfiles de aprovisionamiento del Organizador Xcode.
  2. Cerrar Xcode.
  3. Crear una nueva ID de aplicación.
  4. Cree un nuevo perfil de aprovisionamiento con la nueva ID de aplicación.
  5. Cree un nuevo perfil de aprovisionamiento de distribución con la nueva ID de aplicación.
  6. Crear una nueva aplicación en iTunes Connect
  7. Inicie Xcode, instale sus dos nuevos perfiles de aprovisionamiento. Actualice su ID de paquete para que coincida. También asegúrese de que sus cadenas de identificación que las solicitudes de la aplicación se actualizan para reflejar su identificación de paquete.
  8. Cree su proyecto en modo Distribución con el nuevo perfil de Aprovisionamiento de distribución.
  9. Sube tu nuevo binario. (Déjelo sin rechazar)
  10. Configure su compra de prueba en la aplicación.
  11. Cree su proyecto en modo de depuración con el nuevo perfil de aprovisionamiento.
  12. Solicitud de prueba.

Esto es lo que se necesitó para que mi tienda funcionara. Mi mejor conjetura es que los servidores de back-end de Apple se estropean a veces y solo necesitas comenzar desde cero.

¡Espero que esto ayude a todos!

Otros consejos

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 el sandbox.

Obvio, ¿verdad? Bueno, si está trabajando con una actualización de una cuenta existente, el dispositivo aún la tratará como una aplicación instalada en la tienda de aplicaciones.

Eliminarlo, luego transferirlo nuevamente. Debería funcionar ahora :)

Eliminar la aplicación en el iPhone de prueba y reinstalarlo funcionó. También había esperado 8 horas desde que envié el artículo de compra en la aplicación.

Siga los pasos a continuación:

  1. Inicie sesión en iTunes connect con su cuenta de desarrollador ( https: // itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wo/ ).

  2. Vaya a la pestaña - " Contratos, impuestos y banca "

  3. Verifique las secciones Solicitud de contratos y Contratos en proceso.

  4. Echa un vistazo a " Aplicaciones pagas de iOS " y allí es necesario configurar la información de contacto, la información bancaria y la información fiscal.

  5. Cuando " Aplicaciones de pago iOS " la celda se moverá a la sección Contratos en vigencia, podré usar Productos para la compra de aplicaciones.

Visite el siguiente enlace para obtener más información: http://developer.apple.com/library/ios/#technotes /tn2259/_index.html

Tenga en cuenta que cuando se rompe el iPhone con jailbreak, el paquete AppSync interrumpe por completo las pruebas de compra en la aplicación. AppSync se instala con Install0us como una dependencia.

No tiene que restaurar iOS por completo, simplemente desinstale AppSync en Cydia para probar las compras en la aplicación con éxito .

Todos los consejos de todos los foros, tutoriales y comentarios sobre fixind 'producto no válido' no me funcionaron hasta que eliminé AppSync.

He tenido un problema similar con una nueva aplicación (v1.0 aún no se ha publicado en la tienda) que yo estaba tratando de agregar en las compras de aplicaciones también.He configurado todo, agregado de los productos, etc.y mis productos SIEMPRE volvía como no válido cuando hice un SKProductsRequest.

Estaba a punto de dar seguimiento a todo el proceso, cuando vi a un tangencialmente relacionados con el post en los foros de desarrolladores Apple.Se propuso eliminar la aplicación desde el dispositivo de prueba y hacer una nueva build+instalar.Que hizo el truco.

Sólo para estar seguro, lo he probado en otro dispositivo que me estaba dando el mismo problema, y se fija allí.

Es sólo una conjetura, pero yo creo que si el dispositivo tiene una estructura en la que se hizo con un perfil de suministro que se creó ANTES de agregar la IAP, usted necesita para eliminar que construir y poner uno nuevo utilizando la IAP perfil.(Que es, una simple sustitución de la aplicación en lugar de no hacer el truco.)

si no hay nada malo en su código, en algún momento ha devuelto un ID de producto no válido solo porque, es posible que necesite un tiempo de más de 10 horas para cambiar su información. haciendo efecto. O bien, el productId no es válido porque algo incorrecto permanece en su dispositivo, por lo que puede intentar una vez más eliminar su aplicación y compilarla nuevamente. con mi experiencia Espero que ayude.

La interfaz de iTunes Connect para IAP se ha actualizado recientemente y puede causar Inválido: < Identificación del producto & Gt; error.

Ahora puede agregar un IAP en iTunes connect sin establecer el precio predeterminado en USD 0 y le permitirá guardar esa entrada.

La versión anterior de la IU se quejaría cuando presione guardar si no editó el campo de precio de antemano.

Es muy fácil omitir este campo por completo y cualquier intento de obtener información utilizando esa ID de producto a través de cualquier llamada de iOS daría como resultado Inválido: < Identificación del producto & Gt; en lugar de decirte que encontró < Identificación del producto & Gt; con un precio de USD 0.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top