【问题标题】:How to test In-app purchase in Sandbox mode iOS?如何在沙盒模式 iOS 中测试应用内购买?
【发布时间】:2016-06-19 08:17:59
【问题描述】:

我是 iOS 应用程序中的应用内购买集成的新手。我已经在项目级别完成了编码,并且我已经在 iTunes Connect 中创建了一个沙盒用户。我阅读了许多教程和 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);
    }

【问题讨论】:

  • 首先,您必须处理“我的产品在 SKProductRequest 委托方法 didReceiveResponse 中返回空”。如果没有 SKProduct 对象,您将无法购买任何东西。您是否为您的应用使用显式捆绑 ID? iPad 的限制设置是否允许应用内购买?
  • @EugeneDubinin 感谢您的回复。我正在为此应用程序使用显式捆绑 ID,并且在限制设置中也启用了应用程序内购买。你能帮我么?谢谢。
  • SKProductsRequest 也有这些代表:request:didFailWithError: 和 requestDidFinish:。实现它们并调试/记录返回到那里的内容。
  • @EugeneDubinin 谢谢你的帮助。问题已修复:)

标签: ios objective-c in-app-purchase app-store-connect skproduct


【解决方案1】:

谢谢大家。

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

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

【讨论】:

    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 2017-12-03
    • 2014-01-29
    • 2011-11-28
    • 2017-03-19
    • 1970-01-01
    相关资源
    最近更新 更多