Ios 应用内购买沙箱环境中的收据刷新:是否可以在不同时购买测试项目的情况下刷新收据?
我知道我已经为iOS 7正确配置了沙盒环境的应用程序,因为我可以进行测试购买,并且在测试购买完成时,我会看到带有[environment:sandbox]文本的警报。同时刷新收据,我可以使用+[NSBundle appStoreReceiptURL]方法访问它 但每当我尝试仅使用SKReceiptRefreshRequest类中的方法刷新收据时,我只会得到以下序列: 1“登录”警报显示,我从中选择“使用现有Apple ID” 2当“Apple ID Password”警报出现时,我输入测试用户的凭据 3但此警报总是在输入凭据后立即显示: “这个苹果ID尚未在iTunes商店中使用。 点击“查看”登录,然后查看您的帐户信息。“ 这当然会要求你提供信用卡信息,而你不应该在沙箱环境中这样做 我在应用程序委托中使用此代码启动收据刷新:Ios 应用内购买沙箱环境中的收据刷新:是否可以在不同时购买测试项目的情况下刷新收据?,ios,in-app-purchase,receipt-validation,Ios,In App Purchase,Receipt Validation,我知道我已经为iOS 7正确配置了沙盒环境的应用程序,因为我可以进行测试购买,并且在测试购买完成时,我会看到带有[environment:sandbox]文本的警报。同时刷新收据,我可以使用+[NSBundle appStoreReceiptURL]方法访问它 但每当我尝试仅使用SKReceiptRefreshRequest类中的方法刷新收据时,我只会得到以下序列: 1“登录”警报显示,我从中选择“使用现有Apple ID” 2当“Apple ID Password”警报出现时,我输入测试用户的
// in didFinishLaunchingWithOptions:
SKReceiptRefreshRequest *request = [[SKReceiptRefreshRequest alloc] initWithReceiptProperties:nil];
request.delegate = self;
[request start];
// with the delegate methods:
-(void)requestDidFinish:(SKRequest *)request
{
if ([request isKindOfClass:[SKReceiptRefreshRequest class]]) {
NSLog(@"Got a new receipt...");
}
}
-(void)request:(SKRequest *)request didFailWithError:(NSError *)error
{
NSLog(@“%@“, error.description);
}
但唯一调用的委托方法是didFailWithError:它给出了以下消息:
Error Domain=SSServerErrorDomain Code=5001无法登录UserInfo=0x14d8a780{NSLocalizedFailureReason=此Apple ID尚未在iTunes应用商店中使用,NSLocalizedDescription=无法登录}
在尝试刷新收据之前,我始终:
1从设备中删除应用程序
2确保设置->应用商店没有输入的Apple ID凭据
3使用我的开发人员凭据对应用程序进行签名
4确保测试帐户有以前的购买,以便生成收据
5确保从未将测试帐户凭据输入App Store登录,因为这会使它们在测试时失效
可以在沙箱中刷新收据吗
更新:正在工作
我终于让它工作了——但我不知道关键的一步是什么——除了坚持和不断尝试
为了让其他有同样问题的人受益,以下是我遵循的步骤:
1创建一个全新的测试用户,但未对该帐户进行测试购买
2已从设备中删除应用,并确保没有帐户登录到设置->应用商店
3我在Xcode中启动了该应用程序,并在控制台中收到了一直以来收到的错误消息-以及以下描述文本:error Domain=SSServerErrorDomain Code=5001无法登录UserInfo=0x155f5140{NSLocalizedFailureReason=iTunes商店中尚未使用此Apple ID.,NSLocalizedDescription=无法登录}
4当iTunes商店尚未使用此Apple ID时。当我按下取消按钮时,警报响起
5关闭应用程序,不做任何更改,在Xcode下重新启动。在重新启动之前,我没有从设备中删除应用程序
6这一次“此苹果ID尚未在iTunes商店中使用”消息没有出现,而是出现了一个提示输入苹果ID和密码的对话框。我在对话框中输入了测试帐户凭据
7在输入测试用户凭据后,调用了SKRequestDelegate requestDidFinish:delegate方法,并将收据放入应用程序包中。顺便提一下,requestDidFinish:方法提供的SKRequest实例的类型为SKReceiptRefreshRequest
我发现,一旦它第一次工作,它就会继续工作-我不必删除应用程序或清除设置->应用程序商店中的凭据-收据刷新将在后台继续工作,使用缓存在设置->应用程序商店中的测试凭据。你看了吗,我想我已经阅读了每一篇关于收据刷新的帖子,我已经在这个功能上工作了好几个星期,没有什么是我没有尝试过的。请注意,大多数帖子都是在iOS 7天前发布的,我的情况是,我只是想刷新收据,而不是进行实际的测试购买。但是谢谢你让我注意到这条线索。