Restaurar compras in-app ya compradas en iPhone?
Llegué hasta ahora: Después de una reinstalación, un usuario necesita hacer clic en "comprar función", luego se asusta con la pregunta de 0 0.99, luego tiene que iniciar sesión y luego se le dice que la función ya está comprada y lo obtiene de forma gratuita.
Sé que Apple es una religión y los usuarios son fuertes creyentes, pero ¿no hay una mejor manera? :- ) Lo que quiero es comprobar la característica sin realmente comprarla. Dejar que el usuario ingrese la información de su cuenta parece ser necesario,tal vez comprar una función de 0 0.00? ¿o hay un método en algún lugar que hace esto?
Estoy usando MKStoreKit para toda la Compra en la aplicación, pero cualquier solución sería genial.
UPDATE
Gracias a darvids0n, su método resolvió mi problema! aquí hay un código de trabajo para otros que intentan lo mismo:
- (void)removePreviousPurchases { //just for sandbox testing
[[MKStoreManager sharedManager] removeAllKeychainData];
}
- (void)restorePreviousPurchases { //needs account info to be entered
if([SKPaymentQueue canMakePayments]) {
[[MKStoreManager sharedManager] restorePreviousTransactionsOnComplete:^(void) {
NSLog(@"Restored.");
/* update views, etc. */
}
onError:^(NSError *error) {
NSLog(@"Restore failed: %@", [error localizedDescription]);
/* update views, etc. */
}];
}
else
{
NSLog(@"Parental control enabled");
/* show parental control warning */
}
}
2 answers
Si el artículo de 0 0.99 no es consumible, debe proporcionar un botón" Restaurar compras " (o similar) que llame a
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
Suponiendo que ya haya agregado un observador de transacciones e implementado el protocolo incluyendo un caso para manejar una transacción restaurada (con estado SKPaymentTransactionStateRestored
), esto funcionará.
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
2011-10-13 23:33:14
Agregue estos dos métodos :
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];
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-08-23 09:30:16