ios swift in-app-purchase

ios - En la compra de la aplicación invalidProductIdentifier en un 30% por qué?



swift in-app-purchase (2)

Si recibe identificadores de producto no válidos en su dispositivo de prueba, puede haber muchos motivos por los que esto sucede. Los casos más frecuentes son:

  • la aplicación no se reinstaló desde cero antes de verificar: necesita eliminar la aplicación del dispositivo e instalarla nuevamente;
  • ID de productos antiguos: si tiene ID de productos que no son válidos, aparecerán en ID de producto inválido;
  • dispositivo desbloqueado: elimine AppSync de Cydia para depurar en el dispositivo desbloqueado;
  • utilizando un perfil de aprovisionamiento que no está asociado con la ID de aplicación explícita.

Puedes encontrar más razones here . Sin embargo, el problema de los ID de producto no válido en el dispositivo de prueba no significa necesariamente que los usuarios también experimenten ese problema.

He configurado IAP para mi proyecto y parece que funciona, por lo que mi aplicación está activa en la tienda de aplicaciones, pero he descubierto que aproximadamente el 30% de las solicitudes a iTunes devuelven el identificador de producto no válido por alguna razón, a continuación se muestra el código completo:

class IAP: NSObject, SKProductsRequestDelegate { static let sharedInstance = IAP() func productsRequest(request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) { response.invalidProductIdentifiers.forEach() { id in //here is the part that could fail sometimes print(id) } } //here how I setup IAP func canMakePayments() { if(SKPaymentQueue.canMakePayments()) { var productID = NSSet() productID = NSSet(object: "unlock") let request: SKProductsRequest = SKProductsRequest(productIdentifiers: productID as! Set<String>) request.delegate = self request.start() } } }

Y aquí cómo lo uso desde AppDelegate :

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { IAP.sharedInstance.canMakePayments() return true }


Si tiene la versión de esa aplicación en su dispositivo de prueba y está intentando depurar ese IAP en el mismo dispositivo, esto puede causar esto. Por favor, desinstale la versión apstore de la aplicación antes de intentar algo. El segundo problema posible es que debe verificar el IAP con el cable USB enchufado. No puede probarlo con la implementación Ad-hoc.

También encontré un gran enlace para comprobar todos los posibles fallos:

http://troybrant.net/blog/2010/01/invalid-product-ids/