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