Question Comment créer un lien vers des applications sur l'App Store


Je crée une version gratuite de mon jeu iPhone. Je veux avoir un bouton dans la version gratuite qui amène les gens à la version payante dans l'App Store. Si j'utilise un lien standard

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8

l'iPhone ouvre d'abord Safari, puis l'app store. J'ai utilisé d'autres applications qui ouvrent l'app store directement, donc je sais que c'est possible.

Des idées? Quel est le schéma d'URL pour l'App Store?


624


origine


Réponses:


Édité le 2016-02-02

À partir d'iOS 6 SKStoreProductViewController classe a été introduite. Vous pouvez lier une application sans quitter votre application. Extrait de code dans Swift 3.x / 2.x et Objectif c est ici.

UNE SKStoreProductViewController objet présente un magasin qui permet la   utilisateur pour acheter d'autres médias de l'App Store. Par exemple, votre application   peut afficher le magasin pour permettre à l'utilisateur d'acheter une autre application.


De Nouvelles et annonces pour les développeurs Apple.

Conduire les clients directement vers votre application   sur l'App Store avec iTunes Links   Avec les liens iTunes, vous pouvez fournir votre   les clients avec un moyen facile d'accès   vos applications sur l'App Store directement   depuis votre site web ou marketing   campagnes. Créer un lien iTunes est   simple et peut être fait pour diriger   les clients à une seule application, tous   vos applications ou à une application spécifique avec   le nom de votre entreprise spécifié.

Pour envoyer des clients à un particulier   application:    http://itunes.com/apps/appname

Envoyer   les clients à une liste d'applications que vous avez   sur l'App Store:    http://itunes.com/apps/developername

Pour envoyer des clients à une application spécifique   avec le nom de votre entreprise inclus dans le   URL:    http://itunes.com/apps/developername/appname


Notes complémentaires:

Vous pouvez remplacer http:// avec itms:// ou itms-apps:// pour éviter les redirections.

Pour plus d'informations sur la dénomination, voir Apple QA1633:

https://developer.apple.com/library/content/qa/qa1633/_index.html.

Modifier (en janvier 2015):

Les liens itunes.com/apps doivent être mis à jour vers appstore.com/apps. Voir QA1633 ci-dessus, qui a été mis à jour. Un nouveau QA1629 suggère ces étapes et code pour lancer le magasin à partir d'une application:

  1. Lancez iTunes sur votre ordinateur.
  2. Recherchez l'élément que vous souhaitez lier.
  3. Cliquez avec le bouton droit de la souris ou en maintenant la touche Ctrl enfoncée sur le nom de l'élément dans iTunes, puis choisissez "Copier l'URL de l'iTunes Store" dans le menu contextuel.
  4. Dans votre application, créez un NSURL objet avec l'URL iTunes copiée, puis passez cet objet à UIApplicationde openURL: méthode pour ouvrir votre article dans l'App Store.

Exemple de code:

NSString *iTunesLink = @"itms://itunes.apple.com/us/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

Swift 3.0

   let urlStr = "itms://itunes.apple.com/us/app/apple-store/id375380948?mt=8"
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(URL(string: urlStr)!, options: [:], completionHandler: nil)

    } else {
        UIApplication.shared.openURL(URL(string: urlStr)!)
    }

693



Si vous souhaitez ouvrir une application directement sur l'App Store, vous devez utiliser:

itms-apps: // ...

De cette façon, il va directement ouvrir l'application App Store dans l'appareil, au lieu d'aller d'abord à iTunes, puis ouvrez seulement l'App Store (en utilisant juste itms: //)

J'espère que cela pourra aider.


EDIT: APR, 2017. itms-apps: // fonctionne à nouveau dans iOS10. Je l'ai testé.

EDIT: AVR, 2013. Cela ne fonctionne plus dans iOS5 et au-dessus. Juste utiliser

https://itunes.apple.com/app/id378458261

et il n'y a plus de redirections.


325



Pour être extreamly concis:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/appname"]];

Si vous voulez envoyer à toutes les applications pour un développeur, utilisez

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/developername"]];

Cela fonctionne pour iOS 4.1

Si vous souhaitez créer un lien vers les applications d'un développeur et que le nom du développeur comporte des signes de ponctuation ou des espaces (par exemple, Development Company, LLC), créez votre URL comme suit:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.com/apps/DevelopmentCompanyLLC"]];

Sinon, il renvoie "Cette requête ne peut pas être traitée" sur iOS 4.3.3


162



À partir de iOS 6 bonne façon de le faire en utilisant SKStoreProductViewController classe.

Swift 3.x:

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

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.present(storeViewController, animated: true, completion: nil)
        }
    }
}

func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
// Usage:
openStoreProductWithiTunesItemIdentifier(identifier: "13432")

Vous pouvez obtenir l'identifiant de l'article itunes de l'application comme ceci: (au lieu d'un statique)

Swift 3.2

var appID: String = infoDictionary["CFBundleIdentifier"]
var url = URL(string: "http://itunes.apple.com/lookup?bundleId=\(appID)")
var data = Data(contentsOf: url!)
var lookup = try? JSONSerialization.jsonObject(with: data!, options: []) as? [AnyHashable: Any]
var appITunesItemIdentifier = lookup["results"][0]["trackId"] as? String
openStoreProductViewController(withITunesItemIdentifier: Int(appITunesItemIdentifier!) ?? 0)

Swift 2.x:

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)
}
// Usage
openStoreProductWithiTunesItemIdentifier("2321354")

objectif c:

static NSInteger const kAppITunesItemIdentifier = 324684580;
[self openStoreProductViewControllerWithITunesItemIdentifier:kAppITunesItemIdentifier];

- (void)openStoreProductViewControllerWithITunesItemIdentifier:(NSInteger)iTunesItemIdentifier {
    SKStoreProductViewController *storeViewController = [[SKStoreProductViewController alloc] init];

    storeViewController.delegate = self;

    NSNumber *identifier = [NSNumber numberWithInteger:iTunesItemIdentifier];

    NSDictionary *parameters = @{ SKStoreProductParameterITunesItemIdentifier:identifier };
    UIViewController *viewController = self.window.rootViewController;
    [storeViewController loadProductWithParameters:parameters
                                   completionBlock:^(BOOL result, NSError *error) {
                                       if (result)
                                           [viewController presentViewController:storeViewController
                                                              animated:YES
                                                            completion:nil];
                                       else NSLog(@"SKStoreProductViewController: %@", error);
                                   }];

    [storeViewController release];
}

#pragma mark - SKStoreProductViewControllerDelegate

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
    [viewController dismissViewControllerAnimated:YES completion:nil];
}

Tu peux recevoir kAppITunesItemIdentifier (identifiant de l'objet itunes de l'application) comme ceci: (au lieu d'un statique)

NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
    NSString* appID = infoDictionary[@"CFBundleIdentifier"];
    NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?bundleId=%@", appID]];
    NSData* data = [NSData dataWithContentsOfURL:url];
    NSDictionary* lookup = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
    NSString * appITunesItemIdentifier =  lookup[@"results"][0][@"trackId"]; 
    [self openStoreProductViewControllerWithITunesItemIdentifier:[appITunesItemIdentifier intValue]];

44



Pour l'été 2015 et plus ...

-(IBAction)clickedUpdate
{
    NSString *simple = @"itms-apps://itunes.apple.com/app/id1234567890";
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:simple]];
}

remplacez «id1234567890» par «id» et «votre numéro à dix chiffres»

  1. Cela fonctionne parfaitement sur tous les dispositifs.

  2. Ça va directement à le magasin d'applications, pas de redirections.

  3. Est-ce OK pour tous magasins nationaux.

  4. C'est vrai que tu devrais passer à l'utilisation  loadProductWithParameters, mais Si le but du lien est de mettre à jour l'application, vous êtes réellement à l'intérieur de: il est peut-être préférable d'utiliser cette approche "à l'ancienne".


33



Apple vient d'annoncer les urls appstore.com.

https://developer.apple.com/library/ios/qa/qa1633/_index.html

Il existe trois types de raccourcis App Store, sous deux formes, une pour les applications iOS, une autre pour les applications Mac:

Nom de la compagnie

iOS: http://appstore.com/ par exemple, http://appstore.com/apple

Mac: http://appstore.com/mac/ par exemple, http://appstore.com/mac/apple

Nom de l'application

iOS: http://appstore.com/ par exemple, http://appstore.com/keynote

Mac: http://appstore.com/mac/ par exemple, http://appstore.com/mac/keynote

App par entreprise

iOS: http://appstore.com// par exemple, http://appstore.com/apple/keynote

Mac: http://appstore.com/mac// par exemple, http://appstore.com/mac/apple/keynote

La plupart des entreprises et des applications ont un App Store court Lien canonique. Cette URL canonique est créée en changeant ou en supprimant certains caractères (dont beaucoup sont illégaux ou ont une signification particulière dans une URL (par exemple, "&")).

Pour créer un lien rapide App Store, appliquez les règles suivantes au nom de votre société ou de votre application:

Supprimer tous les espaces

Convertir tous les caractères en minuscules

Supprimer tous les symboles copyright (), trademark () et marque déposée ()

Remplacer les esperluettes ("&") par "et"

Supprime la plupart des signes de ponctuation (voir la liste 2 pour l'ensemble)

Remplacer les caractères accentués et autres "décorés" (ü, å, etc.) par leur caractère élémentaire (u, a, etc.)

Laissez tous les autres caractères tels quels.

Liste 2 Caractères de ponctuation qui doivent être supprimés.

! ¡"# $% '() * +, -. / :; <=> ¿? @ [] ^ _` {|} ~

Voici quelques exemples pour illustrer la conversion qui a lieu.

Magasin d'applications

Exemples de noms de sociétés

Gameloft => http://appstore.com/gameloft

Activision Publishing, Inc. => http://appstore.com/activisionpublishinginc

La photographie et le logiciel de Chen => http://appstore.com/chensphotographyandsoftware

Exemples de noms d'applications

Ocarina => http://appstore.com/ocarina

Où est mon Perry? => http://appstore.com/wheresmyperry

Défi cérébral => http://appstore.com/brainchallenge


31



Ce code génère le lien App Store sur iOS

NSString *appName = [NSString stringWithString:[[[NSBundle mainBundle] infoDictionary]   objectForKey:@"CFBundleName"]];
NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]];

Remplacez itms-apps par http sur Mac:

NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"http:/itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]]; 

Ouvrir l'URL sur iOS:

[[UIApplication sharedApplication] openURL:appStoreURL];

Mac:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];

29