我正在将应用程序从iOS6转换为iOS7.在我使用已弃用的transactionReceipt方法之前,我现在尝试使用推荐的方法来检索收据,然后在base 64中进行编码:
NSData *working = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
// Tried 64 or 76 chars/line and LF or CR line endings
NSString *receipt = [working base64EncodedStringWithOptions:kNilOptions];
Run Code Online (Sandbox Code Playgroud)
以上是代码中唯一的变化.以下是我验证它的方法,没有变化:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue,
^{
NSMutableString *url = [NSMutableString string];
[url appendFormat:@"%@", WEB_SERVICE];
[url appendFormat:@"receipt=%@", receipt];
NSStringEncoding encoding;
NSError *error = [NSError new];
NSURL *URL = [NSURL URLWithString:url];
NSString *json = [NSString stringWithContentsOfURL:URL usedEncoding:&encoding error:&error];
// check json and error
// ... code omitted
}
Run Code Online (Sandbox Code Playgroud)
在服务器端,这是我用来验证收据的PHP代码,除了为任何错误尝试沙箱之外没有任何变化:
// Encode as …Run Code Online (Sandbox Code Playgroud)