为什么我的应用在开发中会缺少收据?
我正在使用Xcode 7.3.1运行我的iOS(7、8、9)应用程序。该应用程序的收据似乎已经丢失了。此应用程序目前在App Store上发布,因此我拥有开发者凭据和“沙盒”用户登录。
模拟器
当运行以下代码时:
NSURL* url = [[NSBundle mainBundle] appStoreReceiptURL];
NSLog(@"url: %@", url);
iPhone 6s Plus 模拟器 9.3 的结果为:
file:///Users/Bourque/Library/Developer/CoreSimulator/Devices/7F32850A-CC1A-45A3-8ED6-95C75CD9DD44/data/Containers/Data/Application/46BDF021-D2A3-418E-91E1-61A15215942B/StoreKit/receipt
但是当我进入以第二个 UUID 命名的文件夹时,我没有找到 StoreKit
文件夹。
真实设备
为了在真实的 iOS iPod touch 上进行测试,我将代码扩展到...
...查看应该找到收据的位置。
NSURL* url = [[NSBundle mainBundle] appStoreReceiptURL];
NSLog(@"url: %@", url);
尝试加载此类文件。
NSString* urlContents = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"urlContents: %@", urlContents);
…验证文件是否存在。
NSError *err;
if ( [url checkResourceIsReachableAndReturnError:&err] == NO ) {
NSLog(@"BAD No receipt found for url: %@" , url );
} else {
NSLog(@"GOOD Receipt found for url: %@" , url );
}
运行结果。
网址:file:///private/var/mobile/Containers/Data/Application/21430192-6E3A-4929-B847-23FD525D804E/StoreKit/sandboxReceipt
网址内容:(空)
错误:找不到网址为file:///private/var/mobile/Containers/Data/Application/21430192-6E3A-4929-B847-23FD525D804E/StoreKit/sandboxReceipt的收据
网址:file:///private/var/mobile/Containers/Data/Application/B1497F0D-95A7-4AD8-A9D5-7AF95663A04F/StoreKit/sandboxReceipt