web-dev-qa-db-fra.com

Ouvrir AppStore via le bouton

Pourriez-vous m'aider à traduire le code suivant en Swift?

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://iTunes.Apple.com/de/app/x-gift/id839686104?mt=8&uo=4"]];

(ou dois-je prendre ce lien: itms: //iTunes.Apple.com/app/id839686104 ?)

Merci d'avance!

26
LinusGeffarth

Ici. Mais je vous suggère fortement d'apprendre les bases de Swift!

UIApplication.sharedApplication().openURL(NSURL(string: "itms://iTunes.Apple.com/de/app/x-gift/id839686104?mt=8&uo=4")!)
56
Atomix

Swift 3 Syntax et amélioré avec un 'if let'

if let url = URL(string: "itms-apps://iTunes.Apple.com/app/id1024941703"),
UIApplication.shared.canOpenURL(url){
    UIApplication.shared.openURL(url)
}

UPDATE 7/5/17 (Merci Oscar de l'avoir signalé): 

if let url = URL(string: "itms-apps://iTunes.Apple.com/app/id1024941703"),
    UIApplication.shared.canOpenURL(url)
{
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        UIApplication.shared.openURL(url)
    }
}
51
Stuart Casarotto

J'utilise cette combinaison, c'est mieux pour le taux/shopping.

(partiellement de ici )

    @IBAction func rateMe(sender: AnyObject) {
    if #available(iOS 8.0, *) {
        openStoreProductWithiTunesItemIdentifier("107698237252");
    } else {
        var url  = NSURL(string: "itms://iTunes.Apple.com/us/app/xxxxxxxxxxx/id107698237252?ls=1&mt=8")
        if UIApplication.sharedApplication().canOpenURL(url!) == true  {
            UIApplication.sharedApplication().openURL(url!)
        }

    }
}
func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProductWithParameters(parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.presentViewController(storeViewController, animated: true, completion: nil)
        }
    }
}
func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
    viewController.dismissViewControllerAnimated(true, completion: nil)
}

n'oubliez pas d'importer et de déléguer:

import StoreKit

class RateMeViewController: UIViewController, SKStoreProductViewControllerDelegate {
16
djdance

Comme les autres réponses ne fonctionnaient pas pour moi (Swift, Xcode 6.1.1), je publie ici ma solution:

var url  = NSURL(string: "itms://iTunes.Apple.com/de/app/x-gift/id839686104?mt=8&uo=4")

if UIApplication.sharedApplication().canOpenURL(url!) {
    UIApplication.sharedApplication().openURL(url!)
}
10
Andrej

Swift 4 avec gestionnaire de complétion:

Assurez-vous de mettre à jour votre identifiant dans appStoreUrlPath

func openAppStore() {
    if let url = URL(string: "itms-apps://iTunes.Apple.com/app/id..."),
        UIApplication.shared.canOpenURL(url){
        UIApplication.shared.open(url, options: [:]) { (opened) in
            if(opened){
                print("App Store Opened")
            }
        }
    } else {
        print("Can't Open URL on Simulator")
    }
}
6
mobilecat

Vérifiez les nouvelles mises à jour d'applications disponibles sur iTunes dans Swift 3

let currentAppVersion = Bundle.main.infoDictionary
Alamofire.request("http://iTunes.Apple.com/jp/lookup/?id=548615", method: .get, parameters: nil, headers: nil).responseJSON { response in
        if let value = response.result.value as? [String: AnyObject] {
            let versionNum = value["results"]?.value(forKey: "version") as? NSArray
            if versionNum?[0] as! String != currentAppVersion?["CFBundleShortVersionString"] as! String {
                self.alertForUpdateApp()
            }
        }
    }

func alertForUpdateApp() {

    let alertController = UIAlertController(title: "Update Available", message: "There is a newer version of this app available", preferredStyle: .alert)
    let alertActionCancel = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
    let alertActionUpdate = UIAlertAction(title: "Update", style: .default, handler: { _ in
        if let url = URL(string: Constants.API_REDIRECT_TO_iTunes),
            UIApplication.shared.canOpenURL(url){
            UIApplication.shared.open(url, options: [:], completionHandler: nil)

        }
    })

    alertController.addAction(alertActionCancel)
    alertController.addAction(alertActionUpdate)

    let pushedViewControllers = (self.window?.rootViewController as! UINavigationController).viewControllers
    let presentedViewController = pushedViewControllers[pushedViewControllers.count - 1]

    presentedViewController.present(alertController, animated: true, completion: nil)

}
4
Raj Joshi

Pour le nouvel AppStore, ouvrez simplement le lien de votre application sur l'AppStore et remplacez le modèle https par itms-apps scheme . Exemple sur Swift 4:

if let url = URL(string: "itms-apps://iTunes.Apple.com/us/app/my-app/id12345678?ls=1&mt=8") {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

Vous pouvez trouver le lien de votre application sur la page Informations sur l'application.

1
meow2x
    var url  = NSURL(string: "itms-apps://iTunes.Apple.com/app/id1024941703")
    if UIApplication.sharedApplication().canOpenURL(url!) == true  {
        UIApplication.sharedApplication().openURL(url!)
    }

Xcode 6.4

1

Si vous voulez ouvrir dans l'App Store, utilisez 

 let appstoreUrl =  "https://iTunes.Apple.com/in/app/myapp-test/id11111111?mt=8"
 UIApplication.shared.openURL(URL(string: appstoreUrl)!)

si vous voulez utiliser iTunes Store 

  let ituneUrl =  "itms-apps://iTunes.Apple.com/in/app/myapp-test/id11111111?mt=8"
 UIApplication.shared.openURL(URL(string: ituneUrl)!)
1
Devesh

Pour moi n'a pas fonctionné une de ces réponses. (Swift 4) L'application ouvre toujours l'iTunes Store, pas l'AppStore.

Je devais changer l'URL en " http://appstore.com/%Appname% " comme décrit dans ce Q & A Apple: https://developer.Apple.com/library/archive/qa/qa1633 /_index.html

par exemple comme ça

private let APPSTORE_URL = "https://appstore.com/keynote"
UIApplication.shared.openURL(URL(string: self.APPSTORE_URL)!)

(supprimer les espaces du nom de l'application)

0
Marco Weber