SKStoreProductViewController错误ITMLKITErrorDomain 101

时间:2014-11-03 17:21:53

标签: ios objective-c storekit

在我的应用程序中,我使用SKStoreProductViewController显示更多应用程序,但Apple商店审核小组拒绝它的原因是:

  

"点击更多应用按钮时会显示错误消息。"

当我在我的设备上测试时,一切正常。

以下是Apple发给我的截图,可能是什么问题?

error

示例代码:

 __weak typeof(self) weakSelf = self;
  SKStoreProductViewController* vc = [[SKStoreProductViewController alloc] init];
  vc.delegate = self;
  [vc loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier : @1000000000} completionBlock:^(BOOL result, NSError * _Nullable error) {
    if(result==NO){
      //handle failure
      return;
    }
    [weakSelf presentViewController:vc animated:YES completion:nil];

  }];

5 个答案:

答案 0 :(得分:2)

Foititis pinakas[] = new Foititis[3]; 尝试使用无效参数调用ITMLKitErrorDomain时,经常会出现

SKStoreProductViewController个错误。示例完整错误:

loadProductWithParameters

在致电<Warning>: [SKStoreProductViewController]: Did fail with error: Error Domain=ITMLKitErrorDomain Code=101 "The operation couldn’t be completed. (ITMLKitErrorDomain error 101.)" UserInfo={ ... } {ITMLKitErrorHTTPStatus=400} 时,确认您的parameters字典中没有任何拼写错误或意外密钥。验证loadProductWithParametersSKStoreProductParameterITunesItemIdentifier等密钥的值是否有效。

答案 1 :(得分:1)

如果您在测试设备上没有遇到此问题,只需再次发送给它进行审核,这可能是itunes网站的临时问题(它用于显示这些“更多应用”,不是吗?)。没有任何解决方案,互联网上有几个提到这个问题。

答案 2 :(得分:1)

在对您的问题进行调查期间,我们可以得出结论,在SkProductViewController的情况下,可能与错误的产品ID相关联的情况非常罕见。此外,您应该检查是否要显示单个应用程序或其数量。因为Apple有bug与显示多个项目有关。

我正在以这种方式使用SKStoreProductViewController。这是在App Store中显示应用程序的代码块:

SKStoreProductViewController *storeProductViewController = [[SKStoreProductViewController alloc] init];

    [storeProductViewController setDelegate:self];
    [storeProductViewController loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier : @"xxxxx"} completionBlock:^(BOOL result, NSError *error) {
        if (error) {
            NSLog(@"Error %@ with User Info %@.", error, [error userInfo]);

        } else {
            [self presentViewController:storeProductViewController animated:YES completion:nil];
        }
    }];

然后我像这样使用委托SKStoreProductViewControllerDelegate

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
    [self dismissViewControllerAnimated:YES completion:nil];
}

我也使用[button setExclusiveTouch:YES];,因为客户有时会按产品的几个按钮。如果它是单品,也要测试你的身份。

答案 3 :(得分:0)

我刚刚完成了同样的问题处理。在测试应用程序时,一切正常,但App Review团队拒绝我的应用程序显示警告视图,并显示调用loadProductWithParameters时返回的错误。

如果对loadProductWithParameters的调用失败,我通过在Safari中启动App Store来解决此问题。这在SKStoreProductViewController无法正常工作的罕见情况下提供了有用的后备。

SKStoreProductViewController *vc = [[SKStoreProductViewController alloc] init];
vc.delegate = self;

NSDictionary *parameters = @{ SKStoreProductParameterITunesItemIdentifier : someAppId };
[vc loadProductWithParameters:parameters completionBlock:^(BOOL result, NSError *error) {
    if (result) {
        [someController presentViewController:vc animated:YES completion:nil];
    } else {
        NSURL *appURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://itunes.apple.com/app/id%@?mt=8", someAppId]];
        if ([[UIApplication sharedApplication] canOpenURL:appURL]) {
            [[UIApplication sharedApplication] openURL:appURL];
        } else {
            // display the error in an alert
        }
    }
}];

答案 4 :(得分:0)

出于相同的原因,我遭到拒绝(两次拒绝),并且发现在没有Wi-Fi的情况下(仅在Wi-Fi的设备上)我得到了准确的错误测试。

所以我想苹果公司正在Wi-Fi设备上对此进行测试(他们说他们正在Wi-Fi iPad上进行测试)并且已经禁用了Wi-Fi。如果他们在拒绝中告诉您有关他们正在测试且无法访问互联网但您需要在两行之间阅读的事实,那将是很好的选择。

因此,由于没有互联网连接就无法显示控制器,因此需要显示相应的错误,例如“请检查您的互联网连接,然后重试。”

绝对不会显示返回给用户的错误的本地化描述。