【问题标题】:iPhone - Problem with in-app purchasesiPhone - 应用内购买问题
【发布时间】:2011-01-16 12:42:43
【问题描述】:

我创建了带有应用内购买功能的 iPhone 应用。 现在,我正处于测试阶段。

我创建了配置文件 com.satyam.testapp 在连接的 iTunes 中,我创建了应用程序并上传了图像、屏幕截图、描述等。我还创建了两个用于应用内购买的 ID。一个是 com.satyam.testapp.book1,另一个是 com.satyam.testapp.book5

我还创建了测试帐户来验证我的应用内购买。

使用 com.stayam.testapp 我创建了开发人员测试配置文件,并在我开发的应用程序中使用它。

我在我的 iPhone 上注销了 iTunes 应用商店帐户。

现在我开始在我的 iPhone 上运行我的应用程序。它说没有物品可以购买。但它甚至没有要求我提供我必须输入测试帐户用户名和密码的凭据.....

如何调试?

这是我的代表:

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
    NSArray *myProduct = [[NSArray alloc] initWithArray:response.products];
    for(int i=0;i<[myProduct count];i++)        
    {
        SKProduct *product = [myProduct objectAtIndex:i];
        NSLog(@"Name: %@ - Price: %f",[product localizedTitle],[[product price] doubleValue]);      
        NSLog(@"Product identifier: %@", [product productIdentifier]);
    }       

    for(NSString *invalidProduct in response.invalidProductIdentifiers)
        NSLog(@"Problem in iTunes connect configuration for product: %@", invalidProduct);

    [request autorelease];
    [myProduct release];
}

【问题讨论】:

  • 您的设备越狱了吗?如果是这样,您需要恢复越狱才能使 IAP 正常工作。
  • @pocjoc 当我将应用上传到应用商店时,IAP 是否可以越狱到?
  • @m1sk 是的。仅在测试环境下,InApp 无法正常工作。

标签: iphone in-app-purchase


【解决方案1】:

检查您的 SKProductsRequest 回调,这可能表明它是由无效的产品 ID 引起的,不幸的是,在沙盒上调试可能会很痛苦

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
    NSArray *items = response.products;

    for(SKProduct *item in items)
    {
        NSLog(@"Product title: %@" , item.localizedTitle);
        NSLog(@"Product description: %@" , item.localizedDescription);
        NSLog(@"Product price: %@" , item.price);
        NSLog(@"Product id: %@" , item.productIdentifier);
    }

    for (NSString *invalidProductId in response.invalidProductIdentifiers)
    {
        NSLog(@"Invalid Product title: %@" , item.localizedTitle);
        NSLog(@"Invalid Product description: %@" , item.localizedDescription);
        NSLog(@"Invalid Product price: %@" , item.price);
        NSLog(@"Invalid product id: %@" , invalidProductId);
    }
}

假设它是由通过以下检查列表运行的无效产品 ID 引起的

  • 您是否为您的 App ID 启用了应用内购买?

  • 您是否已为您的产品检查过清仓销售?

  • 您项目的 .plist Bundle ID 是否与您的 App ID 匹配?

  • 您是否为新的 App ID 生成并安装了新的配置文件?

  • 您是否已将项目配置为使用此新的代码签名 配置文件?

  • 您是为 iPhone OS 3.0 或更高版本构建的吗?

  • 您在发出 SKProductRequest 时是否使用了完整的产品 ID?

  • 您是否在将产品添加到 iTunes Connect 后等待了几个小时?

  • 您的银行详细信息在 iTunes Connect 上是否有效?

【讨论】:

  • 我更新了包含我写的委托的描述。 1.我的应用程序ID的应用程序内购买已启用。 2. 是的,我勾选了“Clared for sale” 3. Bundle ID 与 app id 匹配。 4. 是的,我为新的应用程序 ID 创建了新的省配置文件。 5. 我正在使用新的配置文件进行代码签名。 6. 我使用 4.2 sdk 在设备上构建和运行 7. 我在请求 SKProductRequest 时使用完整的产品 ID。 8. 我上周在 iTunes Connect 中注册了该产品。 9. 我的 iTunes Connect 帐户是新的。银行详细信息尚未添加。我不认为这是必要的,因为它只需要提取资金。
  • 我过去发现除非填写所有财务细节,否则您总是会得到您的产品ID无效
  • 财务详情已成功更新。我仍然面临同样的问题。
  • 删除并重新设置您的配置文件,您可能会发现它清除了它
  • 在我的情况下,它在设置我的合同、税务和银行信息后起作用。
【解决方案2】:

尝试从您正在测试的手机中删除您的应用,然后“构建和调试”。

如果这不能解决您的问题,我建议您阅读以下博客文章。

http://troybrant.net/blog/2010/01/in-app-purchases-a-full-walkthrough/

【讨论】:

  • 在我的应用程序的新版本上工作时,我突然开始看到这一点并感到担心......您的解决方案解决了我的问题,而我自己不会想到它。删除应用程序,清理,重建.. 完成!
  • 这对我有用。事实证明我遇到了这个问题,因为安装了从应用商店下载的应用版本。这使它在非沙盒模式下运行,因此我的新沙盒 IAP 对象都没有出现。
【解决方案3】:

1- 您可以使用您的测试帐户从您退出现有帐户的位置登录。 2- 要进行调试,您必须等待您的产品(com.satyam.testapp.book1 和 com.satyam.testapp.book5)生效。目前您的产品必须在 response.invalidProductIdentifiers 列表中。当您的产品有效时,系统会要求您提供测试帐户凭据。有时产品需要一些时间才能生效并确保您签署了付费应用的合同。

【讨论】:

  • 我在应用商店 iTunes Connect 中创建产品已经快 10 天了。我认为他们此时可能是有效的。我收到 response.invalidProductIdentifiers。
  • 您签署了付费应用的合同吗?几周前我遇到了同样的问题,我的产品无效,这就是问题所在。
【解决方案4】:

检查您的产品 ID “com.satyam.testapp.book1” 是否与您在 iTunes 商店中注册的相同,并且您检查了 “可出售”强> 选项

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    相关资源
    最近更新 更多