[英]iOS App Receipt Validation - Receipt is missing in simulator and on device while debugging
为什么我的应用程序在开发过程中缺少收据?
我从Xcode 7.3.1运行我的iOS(7,8,9)应用程序。 该应用程序的收据似乎丢失了。 此应用程序目前在App Store中发布,因此我有我的开发人员凭据和“沙盒”用户登录。
运行以下代码时:
NSURL* url = [[NSBundle mainBundle] appStoreReceiptURL];
NSLog(@"url: %@", url);
适用于iPhone 6s Plus的Simulator 9.3的结果:
文件:///用户/布尔克/库/开发商/ CoreSimulator /设备/ 7F32850A-CC1A-45A3-8ED6-95C75CD9DD44 /数据/集装箱/数据/应用/ 46BDF021-D2A3-418E-91E1-61A15215942B / StoreKit /收据
然而,当我导航到以第二个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 );
}
运行结果。
url:file:/// private / var / mobile / Containers / Data / Application / 21430192-6E3A-4929-B847-23FD525D804E / StoreKit / sandboxReceipt
urlContents :( null)
BAD未找到url的收据:file:/// private / var / mobile / Containers / Data / Application / 21430192-6E3A-4929-B847-23FD525D804E / StoreKit / sandboxReceipt
文件:///私人的/ var /移动/集装箱/数据/应用/ B1497F0D-95A7-4AD8-A9D5-7AF95663A04F / StoreKit / sandboxReceipt
由于您是通过Xcode而不是从商店安装应用程序,因此它不包含收据。 但是,您可以启动SKReceiptRefreshRequest
以获取可用于测试的沙盒收据。
另请注意,在启动请求后,如果提示您登录App Store,则需要注销App Store并使用测试用户帐户(在iTunes Connect中创建)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.