我正在尝试在我的 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 都显示在无效的打印输出中,并且没有一个显示在“产品信息:”打印输出中。
任何建议将不胜感激...
PS 是的,这是作为 Objective-c/c++ 构建的。