10

在我解决问题之前稍微奇怪的设置的背景:为客户开发一个应用程序,我们使用的 iTunes 开发人员帐户与最终将发布的用于开发和临时构建应用程序的帐户不同具有游戏中心和 IAP 集成。显然,我们最终将不得不在最终发布帐户上复制我们的设置,但这个问题似乎无关紧要。

问题是尝试在沙盒中测试应用内购买。我们在临时账户中没有任何税务/银行信息,它不是以我的名义设置的,所以我不能只添加我的。现在,每次我们发送一个带有产品标识符的 SKProductsRequest 时,我在临时应用程序帐户的 iTunes Connect 部分中添加的产品,它都会作为无效的产品标识符在响应中返回。

这个请求 whereidentifiers是一个带有我试图获取的字符串产品标识符的数组:

_productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:identifiers]];
_productsRequest.delegate = self;

而这个委托方法:

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
   /*Other code for handling valid responses*/ 

    for (NSString *invalidProductId in response.invalidProductIdentifiers) {
        DLog(@"Invalid product id: %@" , invalidProductId);
    }
}

返回标识符的此日志:

 -[InAppPurchaseManager productsRequest:didReceiveResponse:] Invalid product id: [Product ID That matches the one in ITC exactly]

我知道 ITC 正在临时帐户中工作,因为我们所有的 GameCenter 沙盒集成都可以正常工作。

其他需要注意的事项:

  • 在模拟器和多个设备上的结果相同。
  • 退出 sim 卡和所有设备上的普通 iTunes/App Store 帐户。
  • 尝试等待 24 小时,然后再试一次。
  • 尝试添加不同的产品并尝试其标识符(尽管我没有在这个上等待 24 小时)。
  • 看看这个:解决应用内购买的无效产品 ID 问题?不幸的是,没有看到任何非常有用的东西。

在这一点上,我难住了。除了让设置这个临时账户的人添加他们的税务/银行信息之外,我还能做些什么来从 SKProductsRequest 中真正取回有效的产品吗?

任何帮助将不胜感激。谢谢!

4

2 回答 2

38

最后不得不把所有东西都转移到最终账户上,其中确实有银行和税务信息。一旦我在另一个帐户的应用程序中设置了具有相同名称的 IAP,返回无效产品 ID 的完全相同的代码就完全没问题了。

所以是的,您甚至需要银行和税务信息才能在沙盒中进行测试。嘘-瓮。

于 2012-10-10T21:06:41.007 回答
4

只是想确认 DesignatedNerd 所说的,关于必须与 Apple 签订付费应用协议才能进行测试。我昨天有过,我们使用我们的帐户在我们为客户做的应用程序上测试应用程序产品。经过大量的网络搜索和其他尝试,我碰巧注意到说我们没有达成协议的文字。我们在 itunesconnect 中输入了我们所有的银行详细信息,过了一会儿,消息消失了,我的应用内测试开始工作。

于 2014-03-22T13:56:28.520 回答