web-dev-qa-db-fra.com

Comment puis-je ajouter un lien pour un bouton de taux avec swift?

D'abord, je ne sais pas comment obtenir le lien avant de soumettre mon application, et si le lien concerne chaque magasin d'applications de pays ou est-il universel?

Aussi, je ne sais pas si le moyen de le faire est simplement de mettre le lien là-bas, comme ceci: 

@IBAction func rate(sender: AnyObject) {
    UIApplication.sharedApplication().openURL(NSURL(string : "webLinkHere")!)
}

Ou devrais-je utiliser un autre moyen de le faire?

Merci

48
Luis Felipe

Cela fonctionne le mieux pour moi . Dirige l'utilisateur directement vers le compositeur "Write A Review" de l'application.

Swift 3.1 (Support pour iOS10 et inférieur)

Introduit le nouveau action=write-review

let appID = "959379869"

if let checkURL = URL(string: "http://iTunes.Apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=\(appID)&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8") {
    open(url: checkURL)
} else {
    print("invalid url")
}

...

func open(url: URL) {
    if #available(iOS 10, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: { (success) in
            print("Open \(url): \(success)")
        })
    } else if UIApplication.shared.openURL(url) {
            print("Open \(url)")
    }
}

Testé et fonctionne sur Swift 2.2

let appID = "959379869" // Your AppID
if let checkURL = NSURL(string: "http://iTunes.Apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=\(appID)&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8") {
    if UIApplication.sharedApplication().openURL(checkURL) {
        print("url successfully opened")
    }
} else {
    print("invalid url")
}
25
Simon

Vous pouvez utiliser la fonction suivante et remplacer le APP_ID par le vôtre. L'appel de cette fonction ouvrira le lien app in app store et l'utilisateur verra la page de révision sur laquelle il pourra cliquer et écrire un commentaire facilement.

func rateApp(){
   UIApplication.sharedApplication().openURL(NSURL(string : "itms-apps://iTunes.Apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=\(APP_ID)&onlyLatestVersion=true&pageNumber=0&sortOrdering=1)")!);
}
13
Mahmud Ahsan

Swift 4

let url = URL(string: "itms-apps:iTunes.Apple.com/us/app/Apple-store/id\(YOURAPPID)?mt=8&action=write-review")!
UIApplication.shared.openURL(url)
13
Alfi

Maintenant après iOS 10.3+

SKStoreReviewController permet aux utilisateurs d'évaluer une application directement à partir de l'application via une boîte de dialogue. Le seul problème est que vous pouvez uniquement demander à StoreKit d’afficher la boîte de dialogue, sans savoir avec certitude.

import StoreKit

func requestToRate() {
    SKStoreReviewController.requestReview()
}
10
Arvind

AVERTISSEMENT: si vous utilisez votre application sur un simulateur

 UIApplication.sharedApplication().openURL(NSURL(string : "url")!) 

ne fonctionnera pas car il n'y a pas de magasin d'applications dans le simulateur. Afin de tester cette fonctionnalité, vous devez exécuter votre application sur un appareil. 

7
Cliff Weitzman

Pour iOS 10.3+, vous pouvez utiliser SKStoreReviewController avec une simple boîte de dialogue et choisir le classement dans une fenêtre de type alerte. Pour l'utiliser, vous devez importer la bibliothèque StoreKit. Ainsi, le moyen universel d'évaluer votre application à l'intérieur de lui-même est le suivant:

import StoreKit

func rateApp(){
if #available(iOS 10.3, *) {
                SKStoreReviewController.requestReview()
            } else {
                guard let url = URL(string: "itms-apps://iTunes.Apple.com/ru/app/cosmeteria/id1270174484") else {
                    return
                }

                if #available(iOS 10.0, *) {
                    UIApplication.shared.open(url, options: [:], completionHandler: nil)
                } else {
                    UIApplication.shared.openURL(url)
                }
            }
}

Et lorsque vous essayez de le lancer dans le simulateur, vous ne verrez pas la fenêtre de l'App Store, essayez-le sur l'appareil et cela fonctionnera. Cette manière couvre toutes les versions d'iOS, en utilisant toutes les capacités. Et la partie du chemin dans votre adresse d'application "/ us/app" signifie votre localisation sur l'App Store, par exemple "us" signifie États-Unis. Vous pouvez facilement trouver votre identifiant d'application dans la chaîne d'adresse en ouvrant simplement l'application dans l'App Store dans n'importe quel navigateur. Pour obtenir le lien, copiez simplement l'adresse dans le navigateur. Changer "https: //" pour "itms-apps: //" vous permet d'ouvrir une application dans l'application App Store, tandis que "https" ouvre une page Web dans Safari

6
SergPanov

Swift 3

  func rateApp(){
UIApplication.shared.open(URL(string : "itms-apps://iTunes.Apple.com/app/id959379869")!, options: [:]) { (done) in
  // Handle results

}}

id959379869 Ceci est l'id lorsque vous allez sur votre page iTunes de votre application

1
matiasverde

Swift 4.2: La fonction suivante envoie votre utilisateur directement à la section de vérification de TOUT magasin, pas seulement de celle des États-Unis:

func rateApp(id : String) {
    guard let url = URL(string : "itms-apps://iTunes.Apple.com/app/id\(id)?mt=8&action=write-review") else { return }
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        UIApplication.shared.openURL(url)
    }
}

Usage:

rateApp(id: "1287000522")

Remarque: cela ne fonctionne pas sur simulateur! Testez-le sur un appareil réel.

1
ThiagoAM

Allez à votre compte itunesconnect -> Mes applications -> Cliquez sur le bouton "+" -> Nouvelle application iOS -> Remplissez les informations requises -> Après avoir rempli tous les détails, accédez à votre application -> Cliquez sur le bouton Plus -> Afficher sur l'AppStore -> vous rediriger vers l'URL de votre application, ce sera universel et sera identique après la mise en ligne de votre application.

1
Krunal Darji