Esta es una pregunta de seguimiento para «En las compras de aplicaciones con MKStoreKit fallando: «el Problema en iTunes connect de configuración para el producto: xxx«

Estoy teniendo un problema similar, y he tratado de hacer con y sin MKStoreKit y obtener un mensaje similar.

Lista de verificación

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

Han habilitado las Compras En la Aplicación para el ID de la Aplicación?

Ha comprobado Despejado para la Venta de su producto?

Ha presentado (y, opcionalmente, rechazado) su aplicación binario?

Hace de su proyecto .plist ID de Paquete coincida con el ID de la Aplicación?

Han generado y se instala un nuevo perfil de suministro para el nuevo ID de la Aplicación?

Has configurado tu proyecto de código de firmar el uso de este nuevo perfil de suministro?

Estás construyendo para el iPhone OS 3.0 o superior?

SÍ. iOS4.2.

Está utilizando el producto completo de IDENTIFICACIÓN cuando al hacer una SKProductRequest?

SÍ. También sólo el ID del producto en sí, sin el dominio inverso

Han pasado varias horas desde que añadir el producto a iTunes Connect?

SÍ. Dice «pendiente de revisión» y lo ha hecho durante los últimos 4-5 días

Son datos de su cuenta bancaria activa en iTunes Connect?

NO. Es un proyecto de un cliente y sólo estoy haciendo pruebas para ver si está funcionando. Necesito los datos bancarios para probarlo?

EDIT: he cambiado esto ahora. Pero no veo por qué tengo que hacer esto sólo para poner a prueba la zona de pruebas.

Han intentado eliminar la aplicación de tu dispositivo y volver a instalar?

Es el dispositivo con jailbreak?

NO


Aplicación de la notación es correcta

Algunos ejemplos que he visto usar esta notación:
com.dominio.APP_ID.PRODUCT_TO_BUY

Pero otros utilizan
com.dominio.PRODUCT_TO_BUY

Que está a la derecha?

En mi código, he intentado usar la notación completa y sólo el ID del producto en sí, pero sigue apareciendo el mismo problema de «Invalid id de producto».

Desarrollador rechazado

Aplicación de Paquete (de la Liberación) está en iTunes Connect y me han «desarrolladores » rechazado» el paquete.

Imagen:
La resolución de producto no válida de identificación de problema con las compras en la aplicación?

De espera para la revisión?

En mis compras in-app que tengo la 1 producto, una auto-renovable de suscripción. Está desactivada para la venta; sin embargo, está «pendiente de revisión» y no es verde iluminado.

Imagen:

La resolución de producto no válida de identificación de problema con las compras en la aplicación?

He creado este casi 4-5 días y su marcado como «pendiente de revisión»??

Me pregunto si mi aplicación ha sido «desarrolladores » rechazado» si esto tiene un impacto en «pendiente de revisión» en un auto-renovable de suscripción?

No he cambiado nada en este punto.

De acuerdo a los diversos artículos que tengo que esperar de 24 a 48 horas antes de que lo puedo usar?

Pero tengo que esperar para que esto sea aceptado o verde-encendido antes de que lo puedo usar en mis pruebas?

Datos bancarios

No he llenado en cualquier banco de los detalles porque esta es una aplicación para un cliente — necesito para rellenar los datos bancarios antes de que pueda continuar con las pruebas de ello?

De acuerdo a estos documentos: http://developer.apple.com/library/ios/#technotes/tn2259/_index.html banco de datos son necesarios?

¿Necesito estar conectado a iTunes en mi dispositivo bajo una cuenta de prueba antes de ejecutar la aplicación?

Me pregunto si alguien puede aclarar estas cuestiones? Tal vez sea algo tan simple como que la espera para la compra in-app para ser «verde iluminado», o tal vez me he perdido un paso?

Nota: Esto ocurre independientemente de si puedo usar MKStoreKit o usar el código que sigue.

Gracias.

Mi código (este es el que no MKStoreKit versión)

#define kMySubscriptionFeature @"uk.co.samplewebsite.myappproject.sub1"

    - (void)viewDidLoad
{
    [super viewDidLoad];
    //Do any additional setup after loading the view from its nib.
    self.title = @"Manage Subscriptions";


    if ([SKPaymentQueue canMakePayments])
    {
        //Display a store to the user.

        //[MKStoreManager sharedManager];
        //NSLog(@"purhcasable = %@", [[MKStoreManager sharedManager] purchasableObjectsDescription] );
        [self requestProUpgradeProductData];

    }
    else
    {
        //Warn the user that purchases are disabled.
        NSString *message = @"In-app purchases are disabled. Please review your settings";
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alertView show];
        [alertView release];
    } //end if
}


#pragma mark - StoreKit Delegate

- (void) requestProductData
{
    SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject:kMySubscriptionFeature]];
    request.delegate = self;
    [request start];
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
    NSArray *myProduct = [[NSArray alloc] initWithArray:response.products];

    for(SKProduct *item in myProduct)
    {

        NSLog(@"Product title: %@" , item.localizedTitle);
        NSLog(@"Product description: %@" , item.localizedDescription);
        NSLog(@"Product price: %@" , item.price);
        NSLog(@"Product id: %@" , item.productIdentifier);
    }


    for (NSString *invalidProductId in response.invalidProductIdentifiers)
    {
        NSLog(@"Problem in iTunes connect configuration for product: %@" , invalidProductId);
    }


    [myProduct release];

    //populate UI
    [request autorelease];
}

Edición:

Como prueba de fallos, he añadido los datos bancarios, por si acaso, pero no veo por qué esto podría causar un problema.

También he hecho seguro de que he subido, y rechazó la publicación de la aplicación del paquete y no el adhoc uno; aunque no sé si esto hace la diferencia.

InformationsquelleAutor zardon | 2011-10-27

5 Comentarios

  1. 11

    Después de 2 días de espera, el nuevo id de aplicación, perfiles, etc. esta arreglado para mí..

    ¿Por qué los médicos dicen que usar la plena com.iap.isrubbish sintaxis?

    Gracias por su ayuda

    He sustituido:

    definir kMySubscriptionFeature @»del reino unido.co.somesite.someapp.sub1″

    con:

    definir kMySubscriptionFeature @»sub1″

    • Este era el último paso que necesitaba. Gracias
    • El hombre, que hizo que mi día. Te debo una cerveza 🙂
    • WOW… me pasé 1 semana entera buscando un error. He borrado 2 bultos, creado otros nuevos, hice un montón de investigación para encontrar esto. Y funcionó… yo solo quiero abrazarte tanto. 😀
    • He recibido algunos de ventas, mientras que el uso de la plena identificación. Pero todavía estoy recibiendo de producto no válida de identificación de errores para algunos usuarios. Va a cambiar esto en 2016 el trabajo?
  2. 6

    Creo que lo he hecho ahora. Voy a realizar algunas pruebas sólo para asegurarse.

    Esto no va a ser aceptado, sin embargo; yo soy la ejecución de algunas pruebas con diferentes storekit marcos.

    Mi salida:

    2011-10-27 15:17:49.297 My Simple App[7376:707] productsRequest
    2011-10-27 15:17:49.298 My Simple App[7376:707] Product title: Simple subscription
    2011-10-27 15:17:49.299 My Simple App[7376:707] Product description: Subscribe and get the latest content to your iPhone or iPod Touch device
    2011-10-27 15:17:49.299 My Simple App[7376:707] Product price: 2.99
    2011-10-27 15:17:49.300 My Simple App[7376:707] Product id: sub1
    

    Esto es lo que hice.

    1. He añadido mis datos bancarios. Yo todavía no me creo que esto no tiene nada que ver con ella, aunque.

    2. Nota. La aplicación de la compra in-app aún está «pendiente de revisión» y me dieron el resultado anterior.

    3. He sustituido:

      #define kMySubscriptionFeature @"uk.co.somesite.someapp.sub1"

    con:

    #define kMySubscriptionFeature @"sub1"
    

    Voy a correr algunas pruebas con MKStoreKit y con otros marcos para ver si está bien.

    El código que he usado es la de abajo, editado por razones de seguridad:

    .h archivo

    // ManageSubscriptionsVC.h
    // This doesn't have visual output, just NSLog at the moment
    // This doesn't use MKStoreKit yet
    
    #import <UIKit/UIKit.h>
    #import "StoreKit/StoreKit.h"
    
    #define kMySubscriptionFeature @"sub1"
    
    /*
     Shared Secret
    
     A shared secret is a unique code that you should use when you make the 
     call to our servers for your In-App Purchase receipts. 
     Without a shared secret, you will not be able to test auto-renewable 
     In-App Purchase subscriptions in the sandbox mode. 
    
     Also note that you will not be able to make them available 
     on the App Store.
    
     Note: Regardless of what app they are associated with, 
     all of your auto-renewable subscriptions will use this 
     same shared secret.
     */
    #define sharedSecret @"PUTSHAREDSECRETHERE"
    
    
    @interface ManageSubscriptionsVC : UIViewController
    <SKProductsRequestDelegate, SKProductsRequestDelegate, SKPaymentTransactionObserver>
    {
        SKProduct *proUpgradeProduct;
        SKProductsRequest *productsRequest;
    }
    
    - (void)requestProUpgradeProductData;
    
    @end
    

    .m archivo

    //
    // ManageSubscriptionsVC.m
    
    #import "ManageSubscriptionsVC.h"
    
    @implementation ManageSubscriptionsVC
    
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            //Custom initialization
        }
        return self;
    }
    
    - (void)didReceiveMemoryWarning
    {
        //Releases the view if it doesn't have a superview.
        [super didReceiveMemoryWarning];
    
        //Release any cached data, images, etc that aren't in use.
    }
    
    #pragma mark - View lifecycle
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        //Do any additional setup after loading the view from its nib.
        self.title = @"Manage Subscriptions";
    
    
        if ([SKPaymentQueue canMakePayments])
        {
            //Display a store to the user.
    
            //[MKStoreManager sharedManager];
            //NSLog(@"purhcasable = %@", [[MKStoreManager sharedManager] purchasableObjectsDescription] );
            [self requestProUpgradeProductData];
    
        }
        else
        {
            //Warn the user that purchases are disabled.
            NSString *message = @"In-app purchases are disabled. Please review your settings";
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alertView show];
            [alertView release];
        } //end if
    }
    
    - (void)viewDidUnload
    {
        [super viewDidUnload];
        //Release any retained subviews of the main view.
        //e.g. self.myOutlet = nil;
    }
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
        //Return YES for supported orientations
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }
    
    #pragma mark - StoreKit Delegate
    
    - (void) requestProductData
    {
        NSLog(@"requestProductData");
        SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject:kMySubscriptionFeature]];
        request.delegate = self;
        [request start];
    }
    
    - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
    {
        NSLog(@"productsRequest");
    
        NSArray *myProduct = [[NSArray alloc] initWithArray:response.products];
    
        for(SKProduct *item in myProduct)
        {
    
            NSLog(@"Product title: %@" , item.localizedTitle);
            NSLog(@"Product description: %@" , item.localizedDescription);
            NSLog(@"Product price: %@" , item.price);
            NSLog(@"Product id: %@" , item.productIdentifier);
    
    
        }
    
        /*
        for(NSString *invalidProduct in response.invalidProductIdentifiers)
            NSLog(@"Problem in iTunes connect configuration for product: %@", invalidProduct);
        */
    
        for (NSString *invalidProductId in response.invalidProductIdentifiers)
        {
            NSLog(@"Problem in iTunes connect configuration for product: %@" , invalidProductId);
        }
    
    
        [myProduct release];
    
        //populate UI
        [request autorelease];
    }
    
    #pragma mark - PaymentQueue
    
    -(void)paymentQueue:(SKPaymentQueue *)queue removedTransactions:(NSArray *)transactions
    {
    }
    
    -(void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
    {
    }
    
    -(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
    {
    }
    
    -(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
    {
    }
    
    #pragma mark - Other
    
    
    - (void)requestProUpgradeProductData
    {
        NSSet *productIdentifiers = [NSSet setWithObject:kMySubscriptionFeature];
        productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
        productsRequest.delegate = self;
        [productsRequest start];
    
        //we will release the request object in the delegate callback
    }
    
    
    
    
    
    @end
    
  3. 1

    Me acabo de enterar de que cambié el ID del producto y el nombre de referencia cuando creé la compra en la aplicación, así que en mi caso yo estaba usando el incorrecto de la cadena para intentar encontrar el Producto… Difícil de detectar.

  4. 1

    Estaba probando la versión más reciente de mi existentes, en total funcionamiento de la aplicación en app-compra para asegurar la funcionalidad todavía estaba trabajando como se esperaba, cuando empecé a ver los problemas en iTunes connect mensaje. Mi problema era (se me olvidó) que MKStoreKit almacena el hecho de la compra en mi distintos dispositivos’ llavero, por lo que a pesar de que yo estaba usando una cuenta de usuario nueva, mi llavero fue registrar el dispositivo como ya se ha comprado.
    [auto removeAllKeychainData] desde dentro MKStoreManager solucionado el problema.
    Espero que esto salva a alguien algo de frustración.

  5. 0

    Mi problema fue, que yo había iniciado sesión en el dispositivo mediante real id de apple. Luego de la sesión ( Iphone-> Ajustes -> Tienda de aplicaciones -> Mi ID-> cerrar sesión)
    A continuación, se despliegan de nuevo, y bravo funcionó.

    Gracias a todos en la web.

Dejar respuesta

Please enter your comment!
Please enter your name here