ios - son - suscripciones apple
¿Restaurar compras ya compradas en la aplicación en iPhone? (2)
Agregue estos dos métodos:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];
Llegué tan lejos: después de una reinstalación, un usuario debe hacer clic en "comprar función", luego se asusta con la pregunta de $ 0.99, luego tiene que iniciar sesión y luego se le dice que la función ya está comprada y la recibe 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 verificar la característica sin comprarla realmente. Dejar que el usuario ingrese la información de su cuenta parece ser necesario, ¿tal vez comprar una función de $ 0.00? ¿O hay algún método en algún lugar que haga esto?
Estoy usando MKStoreKit para toda la compra in-app, pero cualquier solución sería genial.
ACTUALIZAR
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 */
}
}
Si el artículo de $ 0.99 no es consumible, entonces debe proporcionar un botón "Restaurar compras" (o similar) que llame
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
Suponiendo que ya haya agregado un observador de transacciones e implementado el protocol incluido un caso para manejar una transacción restaurada (con el estado SKPaymentTransactionStateRestored
), esto funcionará.