在我解决问题之前稍微奇怪的设置的背景:为客户开发一个应用程序,我们使用的 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 中真正取回有效的产品吗?
任何帮助将不胜感激。谢谢!