iPhone - 应用内购买问题
Posted
技术标签:
【中文标题】iPhone - 应用内购买问题【英文标题】:iPhone - Problem with in-app purchases 【发布时间】: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 无法正常工作。 【参考方案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 商店中注册的相同,并且您检查了 “可出售”强> 选项
【讨论】:
以上是关于iPhone - 应用内购买问题的主要内容,如果未能解决你的问题,请参考以下文章