web-dev-qa-db-fra.com

Rejet de l'App Store iOS - Votre application utilise le schéma d'URL non public "prefs: root ="

J'ai récemment téléchargé une nouvelle version de mon application sur iTunes Connect. Mon application a été rejetée avec cette note

Votre application utilise le schéma d'URL non public "prefs: root ="

Je suis presque sûr de ne pas utiliser de schéma d'URL sur mon application. J'ai essayé de trouver des préférences: root en utilisant grep -R dans tout mon projet via le terminal (insensible à la casse pour pouvoir également faire correspondre les App-Prefs ou autre).

J'utilise également beaucoup de bibliothèques de cocoapodes donc ... ma question est ... Y a-t-il un moyen de savoir quelle bibliothèque utilise cette autorisation?

Capture d'écran des résultats de recherche sur xcode

enter image description here

Cadres utilisés sur mon projet:

  • AmazonFling
  • beaucoup d'autres de CocoaPods (non répertoriés car non pertinents: voir ma réponse)
15
Noel Carcases

J'ai fait face au même formulaire de rejet Apple et pour ouvrir les paramètres de l'application, j'utilisais le code ci-dessous et il n'est pas accepté sur iOS11.

let url = URL(string : "prefs:root=")
if UIApplication.shared.canOpenURL(url!) {
    UIApplication.shared.openURL(url!)
 }

Donc, pour ouvrir les paramètres, j'ai utilisé le code ci-dessous et l'application a été approuvée.

guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
    return
  }
  if UIApplication.shared.canOpenURL(settingsUrl)  {
    if #available(iOS 10.0, *) {
      UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
      })
    }
    else  {
      UIApplication.shared.openURL(settingsUrl)
    }
  }
24
Gurjinder Singh

J'ai eu le même problème et je l'ai résolu comme suit: -

Étape 1: - Recherchez Prefs: root dans votre application, vous trouverez alors quelque chose comme suit: -

 if let url = URL(string: "App-Prefs:root=Privacy&path=LOCATION") {
 // If general location settings are disabled then open general location settings
    UIApplication.shared.openURL(url)
 }

Étape 2: - Modifiez la section de code ci-dessus avec la suivante: -

 if let url = URL(string:UIApplicationOpenSettingsURLString) 
 {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
 }

Reconstruisez maintenant votre application et soumettez-la de nouveau à l'App Store sans soucis :)

4
Karanvir Singh

J'ai fait face au même problème. "prefs: root =" le schéma d'url n'est pas accepté par iOS 11. L'utilisation de la valeur UIApplicationOpenSettingsURLString l'a corrigé.

Image de référence

3

si vous avez besoin de trouver avec le 'prefs: root est:

Accédez à la cible de votre projet -> puis Info -> puis Types d'URL, vous devriez y trouver des schémas d'URL avec une valeur comme 'prefs' ou 'prefs: root'

2
Rupak Shakya

À la fin, celui qui posait des problèmes était AmazonFling qui n'était pas répertorié sur les pods car il avait été installé à l'aide d'une autre méthode. Voir les messages des forums à ce sujet: https://forums.developer.Amazon.com/questions/167282/Apple-app-rejected-because-of-non-public-apis-refe.html

AmazonFling n'a pas encore de mise à jour (au 27 avril 2018), je l'ai donc supprimé jusqu'à ce qu'il soit mis à jour.


Corrigé dans AmazonFling 1.3.2, publié le même jour. Voir https://developer.Amazon.com/fr/docs/fling/release-notes.html

1
Noel Carcases

Nous avons également fait face au même problème et l'avons résolu par ceci:

if let url = URL(string:UIApplication.openSettingsURLString)

    {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    }
0
Lucky Mehndiratta