如何在沙盒模式下测试应用内购买 iOS?
How to test In-app purchase in Sandbox mode iOS?
我是 iOS 应用程序中应用内购买集成的新手。我已经完成了项目级别的编码,并且 在 iTunes Connect 中创建了一个 Sandbox 用户。我阅读了很多教程和 Apple 文档来测试 DEV 模式下的应用内购买。
根据文档,我 从 iPad 设置 中删除了 APPLE ID,并从 Xcode 启动了应用程序。但是,我没有收到应用程序的帐户提醒。此外,我的产品在 SKProductRequest 委托方法 didReceiveResponse 中返回 empty。我已经发布了我的代码供您参考。你能帮我解决这个问题吗?自从过去两天以来我一直在工作。请帮我。提前致谢。
- (void) getAvailProducts
{
NSLog(@"Fetching Available Products");
NSSet *productIdentifiers = [NSSet setWithObjects:@"com.test.testios.monthly", @"com.test.testios.yearly" ,nil];
self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
self.productsRequest.delegate = self;
[self.productsRequest start];
}
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
//SKProduct *validProduct = nil;
DebugLog(@"\n Products: %@", response.products);
NSUInteger count = [response.products count];
NSLog(@"Request Count: %lu", (unsigned long)count);
if (count > 0)
{
self.validatedProducts = response.products;
DebugLog(@“\n Products: %@", response.products);
self.validationCheck = TRUE;
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
// Check subscription
}
else
{
// No products found….
}
}
此外,我尝试使用 "monthly and yearly"
而不是 "com.test.testios.monthly and com.test.testios.yearly"
。但是,没有结果。
编辑:我得到以下代码中提到的 ProductIds 无效,
for (NSString *invalidProductId in response.invalidProductIdentifiers)
{
NSLog(@"Invalid product id: %@" , invalidProductId);
}
谢谢大家。
修复了问题并在沙盒环境中测试了应用内购买。以下项目解决了我的问题,
1. iTunes Agreement was not accepted.
2. Tax and Payment details was not added.
3. Added correct Product Identifier in project.
我是 iOS 应用程序中应用内购买集成的新手。我已经完成了项目级别的编码,并且 在 iTunes Connect 中创建了一个 Sandbox 用户。我阅读了很多教程和 Apple 文档来测试 DEV 模式下的应用内购买。 根据文档,我 从 iPad 设置 中删除了 APPLE ID,并从 Xcode 启动了应用程序。但是,我没有收到应用程序的帐户提醒。此外,我的产品在 SKProductRequest 委托方法 didReceiveResponse 中返回 empty。我已经发布了我的代码供您参考。你能帮我解决这个问题吗?自从过去两天以来我一直在工作。请帮我。提前致谢。
- (void) getAvailProducts
{
NSLog(@"Fetching Available Products");
NSSet *productIdentifiers = [NSSet setWithObjects:@"com.test.testios.monthly", @"com.test.testios.yearly" ,nil];
self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
self.productsRequest.delegate = self;
[self.productsRequest start];
}
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
//SKProduct *validProduct = nil;
DebugLog(@"\n Products: %@", response.products);
NSUInteger count = [response.products count];
NSLog(@"Request Count: %lu", (unsigned long)count);
if (count > 0)
{
self.validatedProducts = response.products;
DebugLog(@“\n Products: %@", response.products);
self.validationCheck = TRUE;
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
// Check subscription
}
else
{
// No products found….
}
}
此外,我尝试使用 "monthly and yearly"
而不是 "com.test.testios.monthly and com.test.testios.yearly"
。但是,没有结果。
编辑:我得到以下代码中提到的 ProductIds 无效,
for (NSString *invalidProductId in response.invalidProductIdentifiers)
{
NSLog(@"Invalid product id: %@" , invalidProductId);
}
谢谢大家。
修复了问题并在沙盒环境中测试了应用内购买。以下项目解决了我的问题,
1. iTunes Agreement was not accepted.
2. Tax and Payment details was not added.
3. Added correct Product Identifier in project.