2014-11-03 125 views
7

在我的应用我表现出更多的应用程序与SKStoreProductViewController,但苹果商店审核小组与理由拒绝它:当我测试它在我的设备SKStoreProductViewController错误ITMLKITErrorDomain 101

"An error message displays when tapping on the more apps button."

,一切工作正常。

下面是苹果发给我的截图,可能是什么问题?

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]; 

    }]; 
+0

他们通常会告诉您它失败的设备。您是否在同一设备上测试了功能?可能是32/64位的东西,或iPhone/iPad,iOS的差异。 – Firo 2016-02-26 15:13:08

+2

您可以添加当您点击“更多应用程序”按钮时执行的代码块吗?具体来说,加载的参数是什么?您是否删除了应用程序并重新安装在每个设备上以便测试?如果您不想删除该应用,则可以临时更改捆绑ID并在设备上运行该应用。 – Fennelouski 2016-02-28 18:34:23

+0

我已经添加了一些示例代码,注意用10000000代替了应用程序标识 – railwayparade 2016-03-03 22:08:43

回答

1

如果您没有遇到此问题上的测试设备,只需把它再次审查,这可能是与iTunes网站暂时性的问题(它是用来展示这些“更多应用程序”,是不是?)。没有任何解决方案,互联网上有几个提到这个问题。

+0

是的,我试过了,再次被拒绝 – railwayparade 2016-03-03 21:57:09

2

ITMLKitErrorDomainSKStoreProductViewController试图用无效参数调用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字典调用loadProductWithParameters时。验证诸如SKStoreProductParameterITunesItemIdentifierSKStoreProductParameterAffiliateToken之类的密钥值是否有效。

1

在调查youre问题时,可以得出结论:在SkProductViewController的情况下,可能与错误的产品ID相关的情况非常罕见。你也应该检查你是否试图显示单个应用程序或它们的数量。因为苹果有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];因为客户有时按与产品的几个按钮。如果它是单一产品,也测试你的ID。

0

我刚刚处理完这个问题。在测试应用时,一切正常,但App Review团队拒绝我的应用显示警报视图,并调用loadProductWithParameters调用返回的错误。

我通过在Safari中启动App Store来解决此问题,如果loadProductWithParameters的调用失败。这在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 
     } 
    } 
}];