¿Cómo puedo añadir un enlace a un botón de tarifa con swift?


Primero no sé cómo obtener el enlace antes de enviar mi aplicación, y si el enlace es para cada país app store o es universal?

Tampoco se si la forma de hacerlo es simplemente poniendo el enlace allí como:

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

¿O debería usar otra forma de hacer esto?

Gracias

Author: Luis Felipe, 2015-01-03

9 answers

Prueba esto

Swift 3

func rateApp(appId: String, completion: @escaping ((_ success: Bool)->())) {
    guard let url = URL(string : "itms-apps://itunes.apple.com/app/" + appId) else {
        completion(false)
        return
    }
    guard #available(iOS 10, *) else {
        completion(UIApplication.shared.openURL(url))
        return
    }
    UIApplication.shared.open(url, options: [:], completionHandler: completion)
}

Método, cambie AppID por su App ID

rateApp(appId: "id959379869") { success in
    print("RateApp \(success)")
}

Id959379869 Este es el id cuando entras en la página Itune de tu app

Ejemplo: https://itunes.apple.com/fr/app/hipster-moustache/id959379869?mt=8

Cómo obtener el ID :

  1. Cuenta Itunesconnect
  2. Mis aplicaciones
  3. Haga clic en el botón " + "
  4. Nuevo iOS App
  5. Llenar requiere detalles
  6. Después de llenar todos los detalles vaya a su aplicación
  7. Haga clic en el botón Más
  8. Ver en AppStore
  9. Te redirigirá a la URL de tu aplicación. Esto será universal
  10. Mira Http URL
 84
Author: YannickSteph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-20 14:08:57

Esto está funcionando lo mejor para mí. Dirige al usuario directamente al editor 'Escribir una reseña' de la aplicación.

Swift 3.1 (Soporte para iOS10 y abajo)

Introduce nuevo 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)")
    }
}

Probado y funciona en 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
Author: Simon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-10 10:38:00

Puede usar la siguiente función y reemplazar el APP_ID con el suyo. Al llamar a esta función, se abrirá la aplicación en el enlace de la tienda de aplicaciones y el usuario verá la página de revisión donde puede hacer clic y escribir una reseña fácilmente.

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
Author: Mahmud Ahsan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-20 13:57:13

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)
 10
Author: Alfi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-05 11:03:43

Ahora después de iOS 10.3+

El SKStoreReviewController permite a los usuarios calificar una aplicación directamente desde dentro de la aplicación a través de un cuadro de diálogo. El único downsite es que solo puede solicitar a StoreKit que muestre el diálogo, pero no puede estar seguro de si lo hará.

import StoreKit

func requestToRate() {
    SKStoreReviewController.requestReview()
}
 9
Author: Arvind,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-21 10:57:56

ADVERTENCIA: Si está ejecutando su aplicación en un simulador

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

No funcionará porque no hay una tienda de aplicaciones en el simulador. Para probar esta funcionalidad, debe ejecutar su aplicación en un dispositivo.

 7
Author: Cliff Weitzman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-22 06:27:53

Para iOS 10.3+ puede usar SKStoreReviewController con un diálogo simple y elegir calificación en la ventana de estilo alerta. Para usarlo, debe importar la biblioteca StoreKit. Por lo tanto, la forma universal de calificar su aplicación dentro de sí misma es así:

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)
                }
            }
}

Y cuando intente lanzarlo en simulador, no verá la ventana de la tienda de aplicaciones, así que pruébelo en el dispositivo y funcionará. De esta manera cubre todas las versiones de iOS, utilizando todas las capacidades. Y la parte de la ruta en su dirección de aplicación"/us / app " significa su Tienda de aplicaciones localización, por ejemplo "us" significa USA. Puede encontrar fácilmente su id de aplicación en la cadena de direcciones con solo abrir la aplicación en la tienda de aplicaciones en cualquier browser.To obtenga el enlace, simplemente copie la dirección en el navegador. Cambiar "https: / /" por "itms-apps: / /" le permite abrir la aplicación en la aplicación App Store, mientras que "https" abre la página web en Safari

 4
Author: SergPanov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-07 08:08:36

Vaya a su cuenta de itunesconnect -> Mis aplicaciones -> Haga clic en el Botón " + " - >Nueva aplicación iOS -> Llenar requiere detalles -> Después de llenar todos los detalles vaya a su Aplicación -> Haga clic en el botón Más -> Ver en AppStore -> le redirigirá a la URL de su aplicación .

 1
Author: Krunal Darji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-03 13:14:50

Swift 3

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

}}

Id959379869 Este es el id cuando entras en la página de iTunes de tu app

 1
Author: matiasverde,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-16 10:03:47