2010-07-29 6 views
3

ce qui se passe ici programmeurs, Apple a publié le storekit et nous ne pouvons même obtenir des callbacks pour l'événement cancel lorsqu'un utilisateur met dans sa/son e-mail et mot de passe pourattraper l'annuler événement pour [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]

. NE PAS OBTENIR CETTE CONFUSSE en appuyant sur Annuler lorsque vous annulez un achat, c'est en poussant Annuler lorsque vous essayez de restaurer les transactions. il n'y a pas de rappel pour un utilisateur qui pousse l'annulation, ou même qui appuie sur le bouton OK. Le seul rappel que vous obtenez est lorsque l'informaiton du serveur revient indiquant si elle a réussi ou non. Inacceptable. s'il vous plaît si quelqu'un a une réponse s'il vous plaît, répondez. merci

Répondre

9

Essayez celui-ci:

@protocol SKPaymentTransactionObserver <NSObject> 

.... 

@optional 

// Sent when an error is encountered while adding transactions from the user's purchase history back to the queue. 
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0); 


@end 
+2

Si quelqu'un veut savoir comment faire la différence entre un Annuler et un problème de connexion à l'intérieur paymentQueue: restoreCompletedTransactionsFailedWithError :, alors vous devriez regarder error.code. J'ai remarqué que j'obtiens le code d'erreur 2 quand j'annule la restauration, et le code d'erreur -1009 quand il y a un problème de connexion pendant une restauration. Les deux erreurs contiennent la même description localisée: "Impossible de se connecter à iTunes Store". Je ne suis pas sûr d'autres codes d'erreur. Ce que je fais est terminer la demande silencieusement si c'est le code 2 et montrer un message d'erreur générique sinon. – aiham

+0

Je dois ajouter qu'il est imprudent de vérifier la valeur 2, et il serait beaucoup plus sûr de vérifier les codes d'erreur fournis dans http://developer.apple.com/library/ios/#documentation/StoreKit/Reference /StoreKitTypes/Reference/reference.html Pour les annulations, vous devrez comparer le code d'erreur à SKErrorPaymentCancelled. – aiham

+1

... qui arrive à égaler 2 maintenant (troisième index dans une énumération non nommée définie à ''), mais bien sûr cela pourrait changer. La comparaison avec «SKErrorPaymentCancelled» semble être la ligne de conduite la plus sage. –

Questions connexes