2014-11-03 16 views
7

Nel mio app che mostra più applicazioni con SKStoreProductViewController, ma la revisione negozio squadra di Apple respinge con il motivo:errore SKStoreProductViewController ITMLKITErrorDomain 101

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

Tutto funziona bene quando verifico sui miei dispositivi.

Di seguito è lo screenshot Apple mi ha inviato, quale potrebbe essere il problema? Codice

error

Esempio:

__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

In genere ti dicono quale dispositivo ha fallito. Hai testato la funzionalità sullo stesso dispositivo? Potrebbe essere una cosa a 32/64 bit, o iPhone/iPad, differenza iOS. – Firo

+2

Potresti aggiungere il blocco di codice che viene eseguito quando tocchi il pulsante "Altre app"? In particolare, quali sono i parametri da caricare? Hai eliminato l'app e reinstallato su ogni dispositivo per testare? Se non si desidera eliminare l'app, è possibile modificare temporaneamente l'ID bundle ed eseguire l'app sui dispositivi. – Fennelouski

+0

Ho aggiunto qualche codice di esempio, nota sostituita identificatore app con 10000000 – railwayparade

risposta

1

Se non si sta verificando questo problema su dispositivi di prova, basta inviare a rivedere ancora una volta, questo potrebbe essere un problema temporaneo con il sito iTunes (è usato per mostrare queste "altre app", non è vero?). Ci sono diverse menzioni di quel problema su internet senza alcuna soluzione.

+0

Sì, l'ho provato, rifiutato di nuovo – railwayparade

2

ITMLKitErrorDomain errori si verificano frequentemente quando un SKStoreProductViewController tenta di chiamare loadProductWithParameters con parametri non validi. Esempio di errore completo:

<Warning>: [SKStoreProductViewController]: Did fail with error: Error Domain=ITMLKitErrorDomain Code=101 "The operation couldn’t be completed. (ITMLKitErrorDomain error 101.)" UserInfo={ ... } {ITMLKitErrorHTTPStatus=400} 

Verificare non si dispone di eventuali errori di battitura o chiavi inaspettati nel vostro dizionario parameters quando si chiama loadProductWithParameters. Verificare che i valori per chiavi come SKStoreProductParameterITunesItemIdentifier e SKStoreProductParameterAffiliateToken siano validi.

1

Durante l'analisi del problema, è possibile concludere che si tratta di un caso piuttosto raro che potrebbe essere collegato a un ID prodotto errato in caso di SkProductViewController. Inoltre, dovresti controllare se stai tentando di mostrare la singola app o la quantità di essi. Perché Apple ha bug connesso con la visualizzazione di più elementi.

Sto utilizzando SKStoreProductViewController in questo modo. Si tratta di blocco di codice che mostrano applicazione in 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]; 
     } 
    }]; 

allora io uso delegato SKStoreProductViewControllerDelegate come questo:

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

Anche io uso [button setExclusiveTouch:YES]; perché i clienti a volte premere pochi pulsanti con i prodotti. Inoltre, verifica se sei id se è un singolo prodotto.

0

Ho appena finito di trattare questo stesso problema. Tutto funziona perfettamente durante il test dell'app ma il team di App Review ha rifiutato la mia app per mostrare una vista di avviso con l'errore restituito dalla chiamata a loadProductWithParameters.

Ho risolto il problema avviando l'App Store in Safari se la chiamata a loadProductWithParameters non riesce. Ciò fornisce un utile ripiego nei rari casi in cui SKStoreProductViewController non funziona.

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 
     } 
    } 
}]; 
Problemi correlati