www down apple app ios xcode swift app-store nsurl

ios - down - Lanzamiento de la App Store desde la aplicación en Swift



sign in to app store connect (8)

Estoy creando una aplicación y tengo un banner que promueve mi otra aplicación. Este es mi código:

var barsButton : UIButton = UIButton(frame: CGRectMake((self.view.bounds.width / 2) - 51, self.view.bounds.height - 100, 102, 30)) barsButton.setImage(UIImage(named: "Bars Icon 2.png"), forState: .Normal) barsButton.addTarget(self, action: "openBarsLink", forControlEvents: UIControlEvents.TouchUpInside) func openBarsLink() { var barsLink : String = "itms-apps:https://itunes.apple.com/app/bars/id706081574?mt=8" UIApplication.sharedApplication().openURL(NSURL.URLWithString(barsLink)) }

Sin embargo, cuando el usuario presiona el botón, simplemente los lleva a la App Store, y no a la página específica de mi aplicación. ¿Qué estoy haciendo mal?


Como openURL está en desuso desde iOS 10, utilice el siguiente código:

UIApplication.shared.open((URL(string: "itms://itunes.apple.com/app/" + appStoreAppID)!), options:[:], completionHandler: nil)


El enlace que está intentando abrir no es válido; elimine https: schema (o itms: - pero sugiero la primera opción, para evitar redirecciones)


Simplemente puede usar estas funciones en una estructura de utilidad para ir a la página de la aplicación en la tienda de aplicaciones y también puede evaluar la vista de la aplicación directamente:

static func gotoApp(appID: String, completion: ((_ success: Bool)->())? = nil) { let appUrl = "itms-apps://itunes.apple.com/app/id/(appID)" gotoURL(string: appUrl, completion: completion) } static func rateApp(appId: String, completion: ((_ success: Bool)->())? = nil) { //let appUrl = "itms-apps://itunes.apple.com/app/" + appId let appUrl = "https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=/(appId)&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8" //TODO: use &action=write-review for opening review directly print("app review URL: ", appUrl) gotoURL(string: appUrl, completion: completion) } static func gotoURL(string: String, completion: ((_ success: Bool)->())? = nil) { print("gotoURL: ", string) guard let url = URL(string: string) else { print("gotoURL: invalid url", string) completion?(false) return } if #available(iOS 10, *) { UIApplication.shared.open(url, options: [:], completionHandler: completion) } else { completion?(UIApplication.shared.openURL(url)) } }


Simplemente siguiendo las respuestas anteriores, no pude hacerlo funcionar, de modo que aquí publico mi solución completa:

var url = NSURL(string: "itms-apps://itunes.apple.com/app/bars/id706081574") if UIApplication.sharedApplication().canOpenURL(url!) { UIApplication.sharedApplication().openURL(url!) }


Swift 3 - XCode 8.2.1

UIApplication.shared.openURL(URL(string: "itms-apps://itunes.apple.com/app/id" + appStoreAppID)!)


Tienes demasiados protocolos en tu URL. Deshazte de https: así se lee la URL

itms-apps://itunes.apple.com/app/bars/id706081574


Tuve este problema, pero este código solo funciona en el teléfono, no en el simulador. Así que revisa este código:

if let url = URL(string: "itms-apps://itunes.apple.com/app/id" + APP_ID ), UIApplication.shared.canOpenURL(url){ UIApplication.shared.openURL(url) }else{ //Just check it on phone not simulator! print("Can not open") }


Utilice sólo el corto "itms: //".

Para Swift 3 este es el fragmento:

UIApplication.shared.openURL(URL(string: "itms://itunes.apple.com/app/id" + appStoreAppID)!)

Espero que esto ayude a alguien.

Aclamaciones.

PS @Eric Aya se adelantó al tiempo :)