应用程序内购买沙箱环境中的收据刷新:是否可以刷新收据而无需同时购买测试项目?

时间:2014-08-08 20:00:01

标签: ios in-app-purchase receipt-validation

我知道我已经为沙盒环境正确配置了我的应用程序(适用于iOS 7),因为我可以进行测试购买,并且在测试购买时我会看到带有[Environment:Sandbox]文本的警报。收据会同时刷新,我可以使用+ [NSBundle appStoreReceiptURL]方法访问它。

但是每当我尝试单独使用SKReceiptRefreshRequest类中的方法刷新收据时,我只会得到这个序列:

1)“登录”警告显示我从中选择“使用现有Apple ID”。

2)当出现“Apple ID密码”警报时,我输入测试用户的凭据。

3)但输入凭证后,此警报始终显示:

“此Apple ID尚未在iTunes Store中使用。 点按查看即可登录,然后查看您的帐户信息。“

当然会继续询问您在沙箱环境中不应该做的信用卡信息。

我在app delegate中使用此代码来启动收据刷新:

// 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:它给出了消息:

错误域= SSServerErrorDomain代码= 5001"无法登录" UserInfo = 0x14d8a780 {NSLocalizedFailureReason =此Apple ID尚未在iTunes Store中使用。,NSLocalizedDescription =无法登录}

在尝试刷新收据之前,我总是:

1)从设备中删除应用

2)确保设置 - > App Store没有输入Apple ID凭证

3)使用我的开发者凭据对应用程序进行签名

4)确保测试帐户之前已进行过购买,以便生成收据。

5)确保测试帐户凭据永远不会进入App Store登录(因为这会使其无效以进行测试)。

是否可以在沙箱中进行收据刷新?

更新:正在运行

我终于明白了 - 但我不确切知道关键步骤是什么 - 除了坚持不懈并继续努力。

为了其他有同样问题的人的利益,我遵循的步骤是:

1)创建一个全新的测试用户,但没有在该帐户上进行测试购买。

2)从设备中删除了应用,并确保没有帐户登录到Settings-> App Store。

3)我在Xcode中启动了应用程序并在控制台中收到了我一直在使用的错误消息 - 使用此描述文本:"错误域= SSServerErrorDomain代码= 5001"无法签名在" UserInfo = 0x155f5140 {NSLocalizedFailureReason =此Apple ID尚未在iTunes Store中使用。,NSLocalizedDescription =无法登录}"。

4)当"此Apple ID尚未在iTunes Store中使用时。"警报出现我按了取消按钮。

5)关闭应用程序,不做任何更改,在Xcode下重新启动它。在重新启动之前,我没有从设备中删除该应用程序。

6)这次没有出现“此Apple ID尚未在iTunes Store中使用。”消息,而是出现一个提示输入Apple ID和密码的对话框。我将测试帐户凭据输入对话框。

7)输入测试用户凭据后,调用了SKRequestDelegate requestDidFinish:delegate方法,并将收据放在应用程序包中。顺便提一下,requestDidFinish:方法提供的SKRequest实例的类型为SKReceiptRefreshRequest。

我发现,一旦它第一次工作,它就会继续工作 - 而且我不必删除应用程序或清除来自Settings-> App Store的凭据 - 收据刷新将继续在后台,使用在Settings-> App Store中缓存的测试凭据。

0 个答案:

没有答案
相关问题