Botón de restauración de compras en la aplicación


He implementado en compras de aplicaciones en mi actualización de aplicaciones por primera vez, solo que también esperar 3 semanas y lo han rechazado por la siguiente razón:

Encontramos que su aplicación ofrece Compras dentro de la aplicación que se pueden restaurar pero no incluye una función de "Restaurar" para permitir a los usuarios restaurar la / s Compra / s In-App previamente comprada / s. Para restaurar previamente productos de compra In-App comprados, sería apropiado proporcionar un botón" Restaurar " e iniciar el proceso de restauración cuando el " Restaurar" el botón está pulsado.

Ahora estaba pensando en agregar un botón navbar a la derecha (arriba) de mi tabla donde se pueden ver/tocar las compras de la aplicación y agregar el siguiente código que se vinculará al botón:

 [[SKPaymentQueue defaultQueue]   restoreCompletedTransactions];

¿Puede alguien verificar que esto es correcto y probablemente todo lo que se necesita? Me gustaría que esto pasara con éxito esta vez. Gracias de antemano!

Author: Jojodmo, 2012-06-13

4 answers

Alex, me han rechazado por la misma razón la semana pasada, y esto es justo lo que Apple quería - después de agregar un botón de restauración no hicieron ninguna otra pregunta sobre este tema.

Por supuesto, no solo necesita llamar a [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];, sino también implementar la restauración en sí misma (es decir, proporcionar el contenido al usuario).

 27
Author: Nikita Pestrov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-30 21:25:22

Utilizo una variación de esto:

//inside of an IBaction
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];


// Then this is called
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
    NSLog(@"%@",queue );
    NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]);  

    NSMutableArray *purchasedItemIDs = [[NSMutableArray alloc] init];
    NSLog(@"received restored transactions: %i", queue.transactions.count);

    for (SKPaymentTransaction *transaction in queue.transactions) {
        NSString *productID = transaction.payment.productIdentifier;
        [purchasedItemIDs addObject:productID];
        NSLog (@"product id is %@" , productID);
        // here put an if/then statement to write files based on previously purchased items
        // example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry}
    }  
}

Lo siento, estoy en mi iPad si esto no tiene sentido.

 41
Author: Brian Noah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-09 23:08:49

Alternativa al botón restaurar podría ser un interruptor de restauración en paquete de configuración de la aplicación. No abruma la interfaz de usuario y parece que Apple lo acoge con satisfacción (pero asegúrese de mencionar que ha implementado la mecánica de esta manera).

BOOL shouldRestorePurchases = [[NSUserDefaults standardUserDefaults] boolForKey:@"restorePurchasesKey"];
 3
Author: Roman B.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-14 19:30:42

He sido rechazado por la misma razón. Se debe al hecho de que puede iniciar sesión con el mismo Apple ID en diferentes dispositivos ios.

Por ejemplo, digamos que estoy conectado a [email protected] en un iPad. Cuando descargo tu aplicación me doy cuenta de que me gustaría eliminar los anuncios (digamos que tienes anuncios en tu aplicación si no lo haces), así que los elimino para 99¢. Un año más tarde, decido comprar un iPhone, e iniciar sesión en [email protected] en esa cuenta, y vuelvo a descargar su aplicación. Los anuncios siguen allí, sin embargo, a pesar de que ya he pagado por ellos. ¿A quién le gustaría pagar por lo mismo dos veces? Con la función restore, puedo restaurar las compras que hice en mi iPad y hacer que funcionen en mi iPhone.

Para restaurar la compra, puede usar:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

Después de eso, también debe proporcionar el contenido que el usuario compró.

 3
Author: Jojodmo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-23 02:50:28