2014-11-03 120 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 
     } 
    } 
}];