我正在实施此代码:
if ([SKPaymentQueue canMakePayments])
{
// Display a store to the user.
NSLog(@"Device Can Make Payments");
SKProductsRequest *ProductRequst = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObjects:@"slalomtfcoins", nil]];
ProductRequst.delegate = self;
[ProductRequst start];
}
else {
// Warn the user that purchases are disabled.
NSLog(@"Device Can't Make Payments");
UIAlertView *thealert = [[UIAlertView alloc]initWithTitle:@"Your Device Limited" message:@"we have noticed that you device restrictions setting are currently limited. you can change it ny going to Settings -> General -> Restrictions and turn it off" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[thealert show];
[thealert release];
}
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
SKProduct *VailProduct = nil;
NSLog(@"%d",[response.products count]);
int count = [response.products count];
if (count>0) {
VailProduct = [response.products objectAtIndex:0];
NSLog(@"Products are availble");
} else if (!VailProduct){
NSLog(@"Products are Not availble");
}
}
并且日志打印“产品不可用”。 我的p.list中的包ID是正确的 并且产品ID与itunes connect相同。
问题是什么?
感谢
答案 0 :(得分:1)
你是从xcode运行应用程序吗?如果你使用“环境沙箱”来发布使用应用程序内购买的未发布应用程序,你必须从xcode运行它以使用“environment-sandbox”
答案 1 :(得分:1)
要尝试的事情。
我发现的另一个修复程序可能不会有帮助,但您可以尝试创建一个新的测试帐户用户并尝试使用该修复程序。由于您的问题只是验证,而不是购买,这可能不会有帮助。我只是提到它,以防你在路上遇到问题。
此外,如果这是第一次这样做,您应该仔细检查应用ID和产品ID。
答案 2 :(得分:1)
如果您的设备不在美国商店,则沙盒中似乎存在可以通过转到设备中的iTunes并切换商店来修复的错误。当您在应用中再次尝试购买时,它应该提示您更改回其他商店。
另外,请确保您在设备上进行测试,而不是在模拟器上进行测试,并确保使用通过iTunes Connect创建的测试帐户。
答案 3 :(得分:0)
在xCode 4.5.1上我确定(因为我尝试)你可以使用iPhone模拟器进行所有应用程序内购买过程。
它只是有点慢,有时会超时,所以你必须重新购买或重新启动模拟(在模拟器和iPhone中)。
在代码中,您可以设置Bool并在成功购买流程后为其指定TRUE。使用NSLog确保一切顺利
之后,您可以使用该bool满足您的所有需求。
另一件事:您必须确保产品标识符完全正确,例如:
com.example.myapp.purchase1
com.example.myapp.purchase2
...
将这些值放在iTunes Connect和应用程序中。
也许你只需等待一段时间进行iTunes更新(对我来说,我不知道为什么,等待的时间非常短:只需几分钟甚至更短)