transactionReceipt pour l'achat dans l'application est supprimée de la version iOS 7. Que puis-je la remplacer par?
Dans iOS 7, sur le SKPaymentTransaction classe, la propriété transactionReceipt
:
//Only valid if state is SKPaymentTransactionStatePurchased.
@property(nonatomic, readonly) NSData *transactionReceipt
...est obsolète. Mais, dans mon code, j'ai créé un InAppPurchase classe, et dans ma méthode pour contrôler comment la méthode de l'achat, je suis en utilisant la méthode du délégué dans mon code et c'est comme:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchasing:
//code and bla bla bla
[self initPurchase];
NSLog(@"PASO 1");
break;
case SKPaymentTransactionStatePurchased:
//this is successfully purchased!
purchased = TRUE;
NSLog(@"PASO 2");
[self isPurchased];
NSLog(@"purchased %s", purchased? "true" : "false");
// and return the transaction data
if ([delegate respondsToSelector:@selector(successfulPurchase:restored:identifier:receipt:)])
[delegate successfulPurchase:self restored:NO identifier:transaction.payment.productIdentifier receipt:transaction.transactionReceipt];
//and more code bla bla bla
break;
case SKPaymentTransactionStateRestored:
//and more code bla bla bla
[self restorePurchase];
NSLog(@"PASO 3");
break;
case SKPaymentTransactionStateFailed:
//and more code bla bla bla
[self failedNotification];
NSLog(@"PASO 4");
break;
//------------------------------------------//
// THANKS GUYS //
// GRETTINGS FROM BOLIVIA //
// ROCK ON!!!! n_n' //
//------------------------------------------//
}
}
}
- Très précieux en question. La documentation spécifique à ce domaine de StoreKit a été changé, le même jour, cette question a été posté, si c'est possible, c'est encore un travail en cours et Apple permettra de clarifier les flux. En attendant, quelqu'un à la recherche dans ce serait très utile.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir la réception, ainsi que le contenu de la mainBundle de appStoreReceiptURL. Vous pouvez trouver des références: developer.apple.com
C'est du code non testé, mais sur le dessus de ma tête, je voudrais dire quelque chose le long des lignes de:
devrait vous obtenir le même résultat que transactionReceipt utilisés pour le retour.
appStoreReceiptURL
sera de retour nul.appStoreReceiptURL
stipule clairement que c'est pour l'ensemble de l'App Store de la réception (pas de in-app-achat reçus). Aussi, cela ne fait aucun sens pour in-app-achat reçus car vous pourriez avoir plusieurs abonnements, par exemple, vous pouvez vous abonner séparément pour les nouvelles, les sports et les films de canaux dans une application de streaming vidéo.[NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]
ettransactionReceipt
. Pour la vérification de la réception dans le bac à sable, les données deappStoreReceiptURL
résultats comme une défaillance de réception avec"status":21002
mais le obsolètetransactionReceipt
est valide avec"status":0
.appStoreReceiptURL
n'est pas ce que vous cherchez.transactionReceipt
ne contient que le reçu de la transaction spécifique, les données àappStoreReceiptURL
est une valeur-clé format de conteneur de l'encapsulation d'un plus large éventail d'informations. En plus de PEI reçus il contient également de la réception, pour l'application elle-même ainsi que la chaîne de certificats et de signatures. developer.apple.com/library/ios/releasenotes/General/...Au cas où quelqu'un peut-être aussi confus au sujet de ce problème (Peut-être que Vous aussi lire un peu désuet tutoriel comme moi...)
Veuillez caisse La WWDC 2014 Session 305 Empêcher les personnes non autorisées d'Achats avec les Recettes. Il couvre à la fois iOS & OS X, clair et complet.