40 votes

La restauration déjà acheté in-app-achats sur l'iPhone?

Je me suis tellement bien: Après une réinstallation, l'utilisateur doit cliquer sur le bouton "acheter", puis il a peur avec le $0.99 question, puis a la connexion, puis se dit que la fonction est déjà acheté et il l'obtient gratuitement.

Je sais que apple est une religion et les utilisateurs sont de grands croyants, mais n'est-il pas une meilleure façon? :-) Ce que je veux, c'est pour vérifier la fonctionnalité sans l'acheter. Laisser à l'utilisateur d'entrer ses informations de compte semble être nécessaire, peut-être acheter un $0.00 fonctionnalité? ou est-il une méthode quelque part qui fait cela?

Je suis en utilisant MKStoreKit pour l'ensemble de l'In-App-Achat, mais aucune solution serait génial.


Mise à JOUR

merci à darvids0n, votre méthode a résolu mon problème! voici une partie du code qui fonctionne pour d'autres tentent la même:

- (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 */
    }
}

33voto

darvids0n Points 7914

Si l' $0.99 élément est non consommable, alors vous devez fournir un "Restaurer les Achats" bouton (ou similaire) qui appelle

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

En supposant que vous avez ajouté une transaction observateur déjà, et la mise en œuvre du protocole , y compris un cas à la poignée de la restauration de la transaction (avec état SKPaymentTransactionStateRestored) cela fonctionne.

10voto

manish Points 61

Ajouter ces deux méthodes :

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];

0voto

moleksyuk Points 14

MKStoreKit a un gros trou dans la restauration des articles achetés.
Pour plus de détails, allez ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X