我正在尝试在 iPhone 上测试应用内购买,但遇到了一个问题:我请求信息的产品 ID 最终在“didRecieveResponse”方法中作为无效产品 ID 返回给我。
I have:
- 创建了与此应用程序关联的店内产品。它的包 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++ 构建的。
我尝试了苹果论坛和此处建议的所有内容,但仍然无法正常工作。找到了解决方案 - 您的应用程序需要通过 Xcode 传输才能启用沙箱。
很明显,对吧?那么,如果您正在对现有帐户进行更新,设备仍会将其视为 App Store 安装的应用程序。
删除它,然后再次传输。现在应该可以工作了:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)