【发布时间】:2009-10-27 19:18:30
【问题描述】:
我正在尝试在我的 iPhone 上测试应用内购买,但遇到了一个问题,即我请求信息的产品 ID 最终在“didRecieveResponse”方法中作为无效的产品 ID 返回给我。
我有:
- 创建了与此应用关联的店内产品。它的捆绑 ID 与其他所有内容匹配。已获开发商批准出售。
- 确保我的新配置文件已启用商店应用购买,并且它具有完整的应用名称:“com.domain.appname”
- 确保这是用于将应用程序签名到我的 iPhone 的配置文件。
- 确保“com.domain.appname”是用于构建配置文件的应用 ID。
- 确保在我的 plist 文件中使用“com.domain.appname”作为包标识符。
一切似乎都已就绪,但我的产品仍以无效 ID 退回给我。
这是我正在使用的代码:
- (void)requestProductData {
SKProductRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject: @"com.domain.appname.productid"]];
request.delegate = self;
[request start];
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSArray *myProducts = response.products;
NSArray *myInvalidProducts = response.invalidProductIdentifiers;
for(int i = 1; i < myInvalidProducts.count; ++i)
{
std::cout <<"invalid product id = " << [[myInvalidProducts objectAtIndex:i] UTF8String] << std::endl;
}
for(int i = 0; i < myProducts.count; ++i)
{
SKProduct * myProduct = [myProducts objectAtIndex:i];
std::cout << "Product Info:" << std::endl;
std::cout << "\tlocalizedTitle = " << [[myProduct localizedTitle] UTF8String] << std::endl;
std::cout << "\tlocalizedDescription = " << [[myProduct localizedDescription] UTF8String] << std::endl;
std::cout << "\tproductIdentifier = " << [[myProduct productIdentifier] UTF8String] << std::endl;
std::cout << "\tprice = " << [[myProduct price] doubleValue] << std::endl;
std::cout << "\tpriceLocale = " << [myProduct priceLocale] << std::endl;
}
[request autorelease];
}
我的所有产品 ID 都显示在无效的打印输出中,并且没有一个显示在“产品信息:”打印输出中。
任何建议将不胜感激...
附:是的,这是作为 Objective-c/c++ 构建的。
【问题讨论】:
-
可能是个愚蠢的问题,但您是否真的去 iTunes Connect 并添加您正在查询的应用内购买产品?
-
根本不是一个愚蠢的问题。我确实添加了应用内购买。我检查了它的ID,一切都匹配。它已被开发商批准出售和验证。
-
这可能也不是,但我注意到在您的示例代码中您调用的是“initWithProductIndentifiers”而不是“initWithProductIdentifiers”......
-
@EToreo-Hi。我正在 Cocos2d-x 中尝试 InAppPurchase。等待有人指导我。你能指导我完成这个 IAP。我是新手。提前致谢。
标签: iphone in-app-purchase storekit