2014-12-18 17 views
15

transactionReceipt ist veraltet. Aber ich bin zu verwenden, nicht in der Lage,So verwenden Sie appStoreReceiptURL

[[NSBundle mainBundle] appStoreReceiptURL]. 

Dies soll eine URL zu einem Empfang zurückzugeben, wenn es einen gibt. Aber für mich gibt es keinen, denn dieser Wert ist null, und soweit ich es beurteilen kann, sollte es nicht sein. Ich arbeite mit iOS 7 und habe ein paar In-App-Käufe getätigt (Sandbox auf dem Gerät).

Kann jemand helfen.

+0

die 'appStoreReceiptURL' ist eine Methode auf einer Instanz von NSBundle, keine Klassenmethode, wie Sie‘ in Ihrer Frage gezeigt. Sind Sie sicher, dass Sie das Hauptpaket wie in der Dokumentation beschrieben aufrufen? '[[NSBundle mainBundle] appStoreReceiptURL]' – Jasarien

+0

@Jasarien, aber wo würde ich diese URL bekommen? Wenn ich die URL vom Apple-Server bekomme, wird sie automatisch im Hauptpaket des Projekts gespeichert? Soll ich direkt "[[NSBundle mainBundle] appStoreReceiptURL]" innerhalb der Delegate-Methode "updatedTransactions" aufrufen? Es tut mir leid, wie es häufig die Frage ist, aber ich bin neu hier. Können Sie das bitte im Detail ausführen? –

+0

Die URL ist eine Datei-URL zum Speicherort der Empfangsdaten in der Sandbox Ihrer Anwendung. Wenn die Empfangsdatei vorhanden ist, gibt diese Methode Ihnen die Datei-URL zurück, wenn sie nicht vorhanden ist, erhalten Sie keine URL. – Jasarien

Antwort

12

Dies gibt Ihnen die Quittung als der Inhalt des appStoreReceiptURL des Main: -

[NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; 

Sobald Sie das NSData zu NSString konvertieren bekommen.

Weitere Einzelheiten finden Sie folgende: -

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW1

+0

vielen Dank. Offizielle Dokumente helfen mir jetzt! – zszen

3

versucht unter:

NSData *dataReceipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; 
NSString *receipt = [dataReceipt base64EncodedStringWithOptions:0]; 
+1

Wichtig zu Optionen: 0 zu vermeiden, \ r und \ n Zeichen. – quantumpotato