ios - purchase - Razones para SKProductsRequest devolver 0 productos?
in app purchase ios hack (11)
Estoy intentando configurar IAP pero después de hacer una llamada para recuperar los productos usando SKProductsRequest, la matriz SKProductsResponse dentro de mi delegado tiene un conteo de 0. Aquí está mi lista de verificación:
- El producto de prueba se ha agregado a iTunes connect
- El ID del paquete del producto coincide con el ID del paquete de la aplicación (y no está usando un comodín)
- El identificador de producto establecido en SKProductRequest coincide con el producto creado en iTunes connect
- He esperado varias horas desde que el producto fue creado en iTunes connect
- Los perfiles de aprovisionamiento permiten IAP
- Siguió todos los pasos en varios tutoriales como http://troybrant.net/blog/2010/01/in-app-purchases-a-full-walkthrough/ etc.
- Han eliminado la aplicación del dispositivo, relanzado Xcode, reconstruido, etc.
¿Alguna otra sugerencia sobre por qué el recuento de productos obtenidos es cero?
No creo que esto sea un problema de codificación, pero aquí está de todos modos:
…
NSSet *productIdentifiers = [NSSet setWithObjects:@"redacted", nil];
self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
self.productsRequest.delegate = self;
[self.productsRequest start];
…
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSArray *products = response.products;
NSLog(@"Product count: %d", [products count]);
for (SKProduct *product in products)
{
NSLog(@"Product: %@ %@ %f", product.productIdentifier, product.localizedTitle, product.price.floatValue);
}
}
Además, tenga en cuenta que aceptar la cotrata de solicitudes de pago no es suficiente. También debe completar la información de contacto, banco e impuestos específicamente para ese acuerdo, para que se considere hecho.
Algunas veces hay muchas soluciones para estos tipos de problemas. Después de investigar un poco, descubrí que a veces ayuda eliminar la aplicación y luego volver a instalarla ( compra en la aplicación, devolución de SKProductsRequest 0 - Productos aún en revisión ) ¿Qué versión de iOS estás usando?
Asegúrese de activar Compras en la aplicación en la sección de Capacidades. Si no lo hace, SKProductsRequest devolverá 0 productos.
Después de excavar mucho, los siguientes pasos resolvieron mi problema de obtener 0 productos para SKProductsRequest.
Vaya a Configuración> Iniciar sesión en su iPhone en su dispositivo iOS. Si ya ha iniciado sesión con su ID de Apple original, tóquelo y elija Cerrar sesión . Luego, simplemente inicie sesión con las credenciales para el probador de caja de arena que creó en iTunes Connect.
En caso de que haya pasado por alto esto, la coincidencia del identificador del producto distingue entre mayúsculas y minúsculas.
Entonces, si ha creado un producto en Apple con un identificador de say
com.yourcompany.product1
y llama a la solicitud del producto con un identificador de producto de
com.yourcompany.Product1
Su lista será devuelta con cero productos.
Esto me mantuvo ocupado por un tiempo :-)
ps: en un proyecto separado, descubrí que SKProductsRequest solo comenzó a devolver productos después de un reinicio. Por lo tanto, si todo lo demás falla, intente reiniciar su Mac.
Estaba enfrentando el mismo problema, lo resolví enviando solo el nombre del producto IAP en lugar de mi ID del paquete antes del nombre del producto. Aquí está el ejemplo:
trabaja SKProductsRequest *productRequest = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"my_product"]];
más bien que
no funciona SKProductsRequest *productRequest = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"com.my_site.my_app.my_product"]];
También, si ha establecido el precio del producto en iTunes Connect o no. Me lo perdí y los productos eran cero. Guardé todo mi día para descubrirlo.
Tuve el mismo problema ...
Simplemente cambio mi identificador de paquete que no coincide con un identificador de paquete de iTunes.
Y mi aplicación funciona bien :)
Vamos a Configuración de iOS > iTunes y App Stores y cerrar sesión
Espero que esto te ayude, no sé por qué: D
Verifique las 3 cosas en la lista a continuación
1) verifique los identificadores de sus productos: deben ser exactamente los mismos que los que tiene en su código y en iTunes Connect -> Mis aplicaciones -> YourAppName -> Funciones -> Compras en la aplicación 2) iTunes Connect -> Acuerdos, impuestos y operaciones bancarias -> Acuerdos maestros -> Solicitudes de pago -> Información de contacto / Información del banco / Información fiscal (se debe completar) 3) código para probarlo
class ViewController: UIViewController {
var requestProd = SKProductsRequest()
var products = [SKProduct]()
override func viewDidLoad() {
super.viewDidLoad()
validateProductIdentifiers()
}
}
extension ViewController: SKProductsRequestDelegate {
func validateProductIdentifiers() {
let productsRequest = SKProductsRequest(productIdentifiers: Set(["candy100", "someOtherProductId"]))
// Keep a strong reference to the request.
self.requestProd = productsRequest;
productsRequest.delegate = self
productsRequest.start()
}
// SKProductsRequestDelegate protocol method
public func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
self.products = response.products
for invalidIdentifier in response.invalidProductIdentifiers {
print(invalidIdentifier)
}
}
}
Respuesta inicial
¿Tiene configurada su información de contrato, bancos, etc.?
Respuesta corregida
Parece que estoy equivocado acerca de esto. Eche un vistazo a la compra en la aplicación, SKProductsRequest return 0 - Productos aún en revisión