如何在沙盒模式iOS中测试应用内购买?

时间:2016-03-05 15:03:52

标签: ios objective-c in-app-purchase itunesconnect skproduct

是iOS应用程序中应用内购买集成的新手。我在项目级别完成了编码,并且在iTunes Connect中创建了一个Sandbox用户。我阅读了许多教程和Apple Document来测试DEV模式下的应用内购买。 根据文档,我从iPad设置中删除了APPLE ID ,并从Xcode启动了应用程序。但是,我没有从应用中收到帐户提醒。此外,我的产品在SKProductRequest委托方法didReceiveResponse 中返回为空。我已发布我的代码供您参考。你能帮帮我吗?我工作了两天以来。请帮我。提前谢谢。

- (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 个答案:

答案 0 :(得分:1)

谢谢大家。

修复了问题并测试了Sandbox环境中的应用内购买。以下项目解决了我的问题,

1. iTunes Agreement was not accepted.
2. Tax and Payment details was not added.
3. Added correct Product Identifier in project.