我从中得到一个空数组的产品标识符SKProductsRequest.
我做了以下步骤:
在iTunes Connect中的"管理用户"下创建了一个应用内购买测试用户帐户
在"管理您的应用内购买"下创建了一些应用内购买产品.
将应用程序加载到iPhone上,转到设置→存储并退出常规存储
在(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response回调中设置断点
所有提交的产品ID都在响应的invalidProductIdentifiers属性中.在提交请求时,我尝试了在步骤2中创建的产品ID以及前缀为Bundle ID的ID.
提前致谢,
Raghu
我正在尝试按照此处描述的技术将应用内购买添加到我的应用中:
我通过itunes connect添加了一个产品,其ID设置如下:
com.mycompany.myapp.myproduct1
Run Code Online (Sandbox Code Playgroud)
bundle id(在p-list和app store中指定)设置如下:
com.mycompany.myapp
Run Code Online (Sandbox Code Playgroud)
我正在使用教程IAHelper中的助手类来处理购买功能(相关代码如下所示).它还有一个子类,主要用于将应用内产品的ID添加到IAHelper的产品ID数组中.
为了测试代码,我创建了一个标有"show products"的按钮,它调用了这个方法:
- (IBAction) showProducts {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(productsLoaded:) name:kProductsLoadedNotification object:nil];
Reachability *reach = [Reachability reachabilityForInternetConnection];
NetworkStatus netStatus = [reach currentReachabilityStatus];
if (netStatus == NotReachable) {
NSLog(@"No internet connection!");
} else {
if ([InAppMyAppAPHelper sharedHelper].products == nil) {
// here's where it calls the helper class method to request the products
[[InAppMyAppAPHelper sharedHelper] requestProducts];
self.hud = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES];
_hud.labelText = @"Loading vocabulary...";
[self performSelector:@selector(timeout:) withObject:nil afterDelay:30.0];
} …Run Code Online (Sandbox Code Playgroud) 在我遇到问题之前稍微奇怪的设置背景:为客户端开发应用程序,我们使用的是另一个iTunes开发人员帐户,而不是最终发布的用于开发和应用程序的Ad-Hoc版本的应用程序有Game Center和IAP集成.显然,我们最终必须在最终版本帐户上复制我们的设置,但问题似乎是无关的.
问题是尝试在沙箱中测试应用程序内购买.我们在临时账户中没有任何税务/银行信息,它没有以我的名义设置,所以我不能只添加我的.现在,每次我们发送SKProductsRequest和我在临时应用程序帐户的iTunes Connect部分添加的产品的产品标识符时,它都会在响应中作为无效的产品标识符返回.
这个请求在哪里identifiers是一个数组,其中包含我想要获得的字符串产品标识符:
_productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:identifiers]];
_productsRequest.delegate = self;
Run Code Online (Sandbox Code Playgroud)
而这个委托方法:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
/*Other code for handling valid responses*/
for (NSString *invalidProductId in response.invalidProductIdentifiers) {
DLog(@"Invalid product id: %@" , invalidProductId);
}
}
Run Code Online (Sandbox Code Playgroud)
返回标识符的此日志:
-[InAppPurchaseManager productsRequest:didReceiveResponse:] Invalid product id: [Product ID That matches the one in ITC exactly]
Run Code Online (Sandbox Code Playgroud)
我知道ITC正在临时帐户中工作,因为我们所有的GameCenter沙箱集成都能正常运行.
其他注意事项:
在这一点上,我很难过.除了让设置此临时帐户的人员添加他们的税/银行信息之外,我还能做些什么才能从SKProductsRequest获得有效的产品?
任何帮助将不胜感激.谢谢!