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

700

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 Safari d'abord, puis l'App Store. J'ai utilisé d'autres applications qui ouvrent directement l'App Store, donc je sais que c'est possible.

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

mat
la source
1
Pour SWIFT 3.X et les applications localisées, cette réponse pourrait aider: stackoverflow.com/a/41765175/3143890
LukeSideWalker

Réponses:

771

Modifié le 02-02-2016

À partir d'iOS 6, la classe SKStoreProductViewController a été introduite. Vous pouvez lier une application sans quitter votre application. L'extrait de code dans Swift 3.x / 2.x et Objective-C est ici .

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


Extrait de News and Announcement For Apple Developers .

Dirigez les clients directement vers votre application sur l'App Store avec les liens iTunes Grâce aux liens iTunes, vous pouvez fournir à vos clients un moyen facile d'accéder à vos applications sur l'App Store directement depuis votre site Web ou vos campagnes marketing. La création d'un lien iTunes est simple et peut être effectuée pour diriger les clients vers une seule application, toutes vos applications ou vers une application spécifique avec le nom de votre entreprise spécifié.

Pour envoyer des clients vers une application spécifique: http://itunes.com/apps/appname

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

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


Notes complémentaires:

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

Veuillez noter que itms://cela enverra l'utilisateur à l' iTunes Store et itms-apps://avec lui à l' App Store!

Pour plus d'informations sur la dénomination, consultez 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 le code pour lancer la boutique à partir d'une application:

  1. Lancez iTunes sur votre ordinateur.
  2. Recherchez l'élément auquel vous souhaitez créer un lien.
  3. Faites un clic droit ou un contrôle-clic sur le nom de l'élément dans iTunes, puis choisissez "Copier l'URL iTunes Store" dans le menu contextuel.
  4. Dans votre application, créez un NSURLobjet avec l'URL iTunes copiée, puis passez cet objet à UIApplicationla openURLméthode 's : pour ouvrir votre élément dans l'App Store.

Exemple de code:

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

Swift 4.2

   let urlStr = "itms-apps://itunes.apple.com/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)!)
    }
Nathan S.
la source
161
Une astuce consiste à utiliser itms: // au lieu de http: //, puis il s'ouvrira directement dans l'App Store. Sur l'iPhone, il fera 2 (!) Redirections lors de l'utilisation de http et 1 lors de l'utilisation d'itms. Lorsque vous utilisez les anciens liens phobos (voir ci-dessus), il y a 0 redirections. Utilisez l'identifiant d'iTunes Connect si vous utilisez des liens phobos. Vous pouvez choisir de soumettre une application sans inclure le binaire. De cette façon, vous obtiendrez l'ID avant de soumettre le binaire réel. Je n'ai pas essayé ça, mais j'ai entendu dire que ça marche.
quano
11
Voir: developer.apple.com/library/ios/#qa/qa1633/_index.html (l'espace blanc doit juste être supprimé.)
Nathan S.
8
Sauf ... quelle est la valeur correcte à utiliser appname? S'agit-il du "nom d'affichage de l'ensemble" de l'application? Est-il insensible à la casse? Comment sont gérés les espaces vides, etc.?
2011
14
Cela devrait être testé sur un appareil réel.
Protocole
7
Cela DEVRAIT être testé sur un vrai appareil, oui! J'ai lutté avec rien pendant environ une heure avant de brancher l'iPad et de le tester là-bas. Geh.
Kalle
361

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

itms-apps: // ...

De cette façon, il ouvrira directement l'application App Store sur l'appareil, au lieu d'aller d'abord sur iTunes, puis n'ouvrira que l'App Store (lorsque vous utilisez uniquement itms: //)

J'espère que cela pourra aider.


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

EDIT: APR, 2013. Cela ne fonctionne plus dans iOS5 et supérieur. Utilisez simplement

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

et il n'y a plus de redirections.

GeneCode
la source
2
@PEZ À partir d'aujourd'hui, je vois deux redirections lorsque j'utilise http: // ... La réponse fonctionne parfaitement pour moi - itms-apps: // ... ouvre directement l'application App Store sur l'appareil, sans aucune redirection.
Josh Brown
4
Rocotilos, êtes-vous sûr que cela ne fonctionne plus? Pouvez-vous poster un lien?
johndodo
8
Sur iOS. itmsouvre itunes. tout en itms-appsouvre l'App Store. C'est une différence clé si vous invitez les utilisateurs à mettre à jour! (iOS 10)
mcm
2
itms-appsouvre l'application App Store pour moi via openURL:dans iOS 10.2. Semble être pas un problème.
pkamb
1
Depuis 10.3, cette méthode fonctionne mais elle doit passer par une fenêtre d'affichage intermédiaire "ouvrir cette URL avec l'App Store"? Référence: blog.branch.io/…
gabry
51

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

Swift 5.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)
        }
    }
}
private func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
// Usage:
openStoreProductWithiTunesItemIdentifier("1234567")

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 d'élément iTunes de l'application comme ceci: (au lieu d'un identifiant 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];
}

Vous pouvez obtenir kAppITunesItemIdentifier(l'identifiant de l'article itunes de l'application) comme ceci: (au lieu d'un identifiant 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]];
Ramis
la source
4
dans swift n'oubliez pas d'importer et de déléguer: importez la classe StoreKit RateMeViewController: UIViewController, SKStoreProductViewControllerDelegate {
djdance
Cela fonctionne toujours, mais lorsque vous cliquez sur Écrire un avis, cela ne fonctionne pas. Vous devez cliquer sur le bouton Store dans le coin supérieur, puis sur Écrire un avis. Quelqu'un connaît une solution de contournement ??
socca1157
"Écrire un avis" essaie d'ouvrir un autre modal et échoue, probablement parce que vous présentez déjà en modal. Mais Apple le force. Il semble donc qu'il n'y ait aucun moyen approprié de faire fonctionner les avis. rendant tout ce concept nul.
AmitP
Ce json ne retourne pas toujours des données et renvoie parfois zéro. Pas fiable pour obtenir l'identifiant de l'application avant la soumission.
Amber K
41

À partir de l'été 2015 ...

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

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

  1. Cela fonctionne parfaitement sur tous les appareils .

  2. Il va directement à l'App Store, pas de redirection.

  3. Est OK pour tous les magasins nationaux .

  4. Il est vrai que vous devriez passer à l'utilisation loadProductWithParameters , mais si le but du lien est de mettre à jour l'application dans laquelle vous vous trouvez: il est peut-être préférable d'utiliser cette approche "à l'ancienne".

Joe Blow
la source
De plus, pour diriger vers votre page de développeur (si vous souhaitez montrer à l'utilisateur votre catalogue d'applications), vous pouvez utiliser: NSString * simple = @ "itms-apps: //itunes.com/apps/YOUR_COMPANY_NAME";
TheBestBigAl
2
Où puis-je trouver cet identifiant?
mcfly soft
1
Été 2015?! Comme le monde entier vit dans le même pays. :(
nacho4d
39

Apple vient d'annoncer les URL appstore.com.

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

Il existe trois types de liens courts App Store, sous deux formes, un pour les applications iOS, un 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 lien court canonique vers l'App Store. Cette URL canonique est créée en modifiant 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 court App Store, appliquez les règles suivantes au nom de votre entreprise ou application:

Supprimer tous les espaces

Convertissez tous les caractères en minuscules

Supprimez tous les symboles de copyright (©), de marque (™) et de marque déposée (®)

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

Supprimez 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 personnages tels quels.

Liste 2 Caractères de ponctuation à supprimer.

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

Voici quelques exemples pour illustrer la conversion qui a lieu.

Magasin d'applications

Exemples de nom de société

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

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

Photographie et logiciel de Chen => http://appstore.com/chensphotographyandsoftware

Exemples de nom d'application

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

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

Brain Challenge ™ => http://appstore.com/brainchallenge

Dev01
la source
1
c'est en fait la seule chose qui fonctionne encore fiable pour mac store au moins
Radu Simionescu
Bon à savoir, mais malheureusement sur iOS, cela redirige via Safari (et donne un vilain message "Impossible de vérifier l'identité du serveur").
sudo make install
NON. Lisez ceci - "Ces liens abrégés de l'App Store sont fournis à titre de commodité et ne sont pas garantis de créer un lien vers une application ou une entreprise particulière." Donc, fondamentalement, il est donné au hasard.
durazno
30

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:@""]]]; 

URL ouverte sur iOS:

[[UIApplication sharedApplication] openURL:appStoreURL];

Mac:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];
Tibidabo
la source
Cela fonctionne, mais vous devez également supprimer les caractères spéciaux tels que les tirets du nom de l'application.
Macondo2Seattle
Merci @ 3 tours et @BlackRider
Ganesh Guturi
Pouvons-nous ouvrir et afficher toutes les applications téléchargées par le développeur sur une seule page?
Imran
C'était la seule solution sans rendez-vous qui fonctionnait pour moi avec des redirections minimales et une gestion maximale des espaces blancs des noms d'applications.
LordParsley
29

Pour avoir un lien direct sans redirection:

  1. Utilisez le créateur de liens iTunes http://itunes.apple.com/linkmaker/ pour obtenir le vrai lien direct
  2. Remplacez le http://paritms-apps://
  3. Ouvrez le lien avec [[UIApplication sharedApplication] openURL:url];

Attention, ces liens ne fonctionnent que sur des appareils réels, pas dans le simulateur.

Source: https://developer.apple.com/library/ios/#qa/qa2008/qa1629.html

dulgan
la source
3
+1 pour itunes.apple.com/linkmaker,everyone tester le lien dans l'appareil pas dans le simulateur, je perdais du temps dans les tests du simulateur.
karthik
2
Merci pour les informations sur Simulator, je vais ajouter ceci à la réponse
dulgan
18

Cela a parfaitement fonctionné pour moi en utilisant uniquement l'ID APP:

 NSString *urlString = [NSString stringWithFormat:@"http://itunes.apple.com/app/id%@",YOUR_APP_ID];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];

Le nombre de redirections est ZERO.

Almas Adilbek
la source
13

Un certain nombre de réponses suggèrent d'utiliser «itms» ou «itms-apps», mais cette pratique n'est pas spécifiquement recommandée par Apple. Ils n'offrent que la façon suivante d'ouvrir l'App Store:

Listing 1 Lancement de l'App Store à partir d'une application iOS

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

Voir https://developer.apple.com/library/ios/qa/qa1629/_index.html dernière mise à jour mars 2014 à partir de cette réponse.

Pour les applications qui prennent en charge iOS 6 et supérieur, Apple propose un mécanisme intégré pour présenter l'App Store: SKStoreProductViewController

- (void)loadProductWithParameters:(NSDictionary *)parameters completionBlock:(void (^)(BOOL result, NSError *error))block;

// Example:
SKStoreProductViewController* spvc = [[SKStoreProductViewController alloc] init];
spvc.delegate = self;
[spvc loadProductWithParameters:@{ SKStoreProductParameterITunesItemIdentifier : @(364709193) } completionBlock:^(BOOL result, NSError *error){ 
    if (error)
        // Show sorry
    else
        // Present spvc
}];

Notez que sur iOS6, le bloc d'achèvement peut ne pas être appelé s'il y a des erreurs. Cela semble être un bogue qui a été résolu dans iOS 7.

Ben Flynn
la source
12

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), formez votre URL comme ceci:

itms-apps://itunes.com/apps/DevelopmentCompanyLLC

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

Andrew
la source
1
Si cela ne fonctionne pas pour vous, essayez la syntaxe suivante: itms-apps: //itunes.com/apps/ChuckSmith/id290402113 en remplaçant mon nom par votre entreprise et mon ID par votre ID d'artiste que vous pouvez obtenir à partir du lien iTunes maker: itunes.apple.com/linkmaker
Chuck Smith
Vous pouvez également essayer de coder ces caractères "spéciaux" - c'est-à-dire remplacer "." avec "% 2E"
wzs
c'est LA réponse du préfet!
Sam B
11

Vous pouvez obtenir un lien vers un élément spécifique dans l'App Store ou iTunes via le créateur de liens à: http://itunes.apple.com/linkmaker/

Octavio Berlanga
la source
Celui-ci m'aide, car le lien dans mon itunes-connect n'a pas fonctionné, et dans le générateur, il fonctionne. merci
Dorad
9

Cela fonctionne et relie directement dans ios5

NSString *iTunesLink = @"http://itunes.apple.com/app/baseball-stats-tracker-touch/id490256272?mt=8";  
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
TouchMint
la source
8

C'est un moyen simple et court de rediriger / lier d'autres applications existantes sur l'App Store.

 NSString *customURL = @"http://itunes.apple.com/app/id951386316";

 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]])
 {
       [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
 } 
iChirag
la source
6

Pour Xcode 9.1 et Swift 4:

  1. Importer StoreKit:
import StoreKit

2.Conformez le protocole

SKStoreProductViewControllerDelegate

3. mettre en œuvre le protocole

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

3.1

func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
  1. Comment utiliser:
openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")

Remarque:

Il est très important d'entrer l'ID exact de votre APP. Parce que cela cause une erreur (n'affiche pas le journal des erreurs, mais rien ne fonctionne bien à cause de cela)

xhinoda
la source
1
Je fais la même chose, en cours d'exécution sur l'appareil. Pas de succès
Andrea Mugnaini
4

Je peux confirmer que si vous créez une application dans iTunes Connect, vous obtenez votre ID d'application avant de la soumettre.

Donc..

itms-apps://itunes.apple.com/app/id123456789

NSURL *appStoreURL = [NSURL URLWithString:@"itms-apps://itunes.apple.com/app/id123456789"];
    if ([[UIApplication sharedApplication]canOpenURL:appStoreURL])
        [[UIApplication sharedApplication]openURL:appStoreURL];

Fonctionne un régal

user1641587
la source
4

La création d'un lien peut devenir un problème complexe lors de la prise en charge de plusieurs systèmes d'exploitation et plates-formes multiples. Par exemple, les WebObjects ne sont pas pris en charge sur iOS 7 (certains d'entre eux), certains liens que vous créez ouvriraient un autre magasin de pays, puis l'utilisateur, etc.

Il existe une bibliothèque open source appelée iLink qui pourrait vous aider.

Il y a des avantages de cette bibliothèque est que les liens seraient trouvés et créés au moment de l'exécution (la bibliothèque vérifierait l'ID d'application et le système d'exploitation sur lequel elle s'exécute et déterminerait quel lien devrait être créé). Le meilleur point est que vous n'avez pas besoin de configurer presque rien avant de l'utiliser, ce qui est sans erreur et fonctionnerait toujours. C'est très bien aussi si vous avez peu de cibles sur le même projet, vous n'avez donc pas à vous rappeler quel ID d'application ou lien utiliser. Cette bibliothèque inviterait également l'utilisateur à mettre à niveau l'application s'il y a une nouvelle version sur le magasin (celle-ci est intégrée et vous la désactivez par un simple indicateur) pointant directement vers la page de mise à niveau de l'application si l'utilisateur est d'accord.

Copiez les 2 fichiers de bibliothèque dans votre projet (iLink.h & iLink.m).

Sur votre appDelegate.m:

#import "iLink.h"

+ (void)initialize
{
    //configure iLink
    [iLink sharedInstance].globalPromptForUpdate = YES; // If you want iLink to prompt user to update when the app is old.
}

et à l'endroit où vous souhaitez ouvrir la page de notation, par exemple, utilisez simplement:

[[iLink sharedInstance] iLinkOpenAppPageInAppStoreWithAppleID: YOUR_PAID_APP_APPLE_ID]; // You should find YOUR_PAID_APP_APPLE_ID from iTunes Connect 

N'oubliez pas d'importer iLink.h sur le même fichier.

Il y a un très bon doc pour toute la bibliothèque et des exemples de projets pour iPhone et pour Mac.

Jameson
la source
4

Au moins iOS 9 et supérieur

  • Ouvrez directement dans l'App Store

Une application

itms-apps://itunes.apple.com/app/[appName]/[appID]

Liste des applications du développeur

itms-apps://itunes.apple.com/developer/[developerName]/[developerID]
Jakub Truhlář
la source
appNamen'est pas nécessaire.
DawnSong
4

Selon le dernier document d'Apple, vous devez utiliser

appStoreLink = "https://itunes.apple.com/us/app/apple-store/id375380948?mt=8"  

ou

SKStoreProductViewController 
Mihir Oza
la source
Pouvez-vous mettre à jour votre lien s'il vous plaît? Cela semble assez intéressant si cela ne fonctionne pas.
Rémy Virin
Le document lié ne mentionne pas itms:ou itms-apps:. Les liens utilisant ce schéma fonctionnent correctement sur mes appareils exécutant iOS 12.
Theo
4

Bien qu'il y ait beaucoup de réponses ici, aucune des suggestions de lien vers les applications des développeurs ne semble plus fonctionner.

Lors de ma dernière visite, j'ai pu le faire fonctionner en utilisant le format:

itms-apps://itunes.apple.com/developer/developer-name/id123456789

Cela ne fonctionne plus, mais la suppression du nom du développeur:

itms-apps://itunes.apple.com/developer/id123456789
Léon
la source
3

Si vous disposez de l'ID de l'App Store, il est préférable de l'utiliser. Surtout si vous pourriez à l'avenir changer le nom de l'application.

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

Si vous n'avez pas l'ID de l'App Store, vous pouvez créer une URL basée sur cette documentation https://developer.apple.com/library/ios/qa/qa1633/_index.html

+ (NSURL *)appStoreURL
{
    static NSURL *appStoreURL;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        appStoreURL = [self appStoreURLFromBundleName:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]];
    });
    return appStoreURL;
}

+ (NSURL *)appStoreURLFromBundleName:(NSString *)bundleName
{
    NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.com/app/%@", [self sanitizeAppStoreResourceSpecifier:bundleName]]];
    return appStoreURL;
}

+ (NSString *)sanitizeAppStoreResourceSpecifier:(NSString *)resourceSpecifier
{
    /*
     https://developer.apple.com/library/ios/qa/qa1633/_index.html
     To create an App Store Short Link, apply the following rules to your company or app name:

     Remove all whitespace
     Convert all characters to lower-case
     Remove all copyright (©), trademark (™) and registered mark (®) symbols
     Replace ampersands ("&") with "and"
     Remove most punctuation (See Listing 2 for the set)
     Replace accented and other "decorated" characters (ü, å, etc.) with their elemental character (u, a, etc.)
     Leave all other characters as-is.
     */
    resourceSpecifier = [resourceSpecifier stringByReplacingOccurrencesOfString:@"&" withString:@"and"];
    resourceSpecifier = [[NSString alloc] initWithData:[resourceSpecifier dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES] encoding:NSASCIIStringEncoding];
    resourceSpecifier = [resourceSpecifier stringByReplacingOccurrencesOfString:@"[!¡\"#$%'()*+,-./:;<=>¿?@\\[\\]\\^_`{|}~\\s\\t\\n]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, resourceSpecifier.length)];
    resourceSpecifier = [resourceSpecifier lowercaseString];
    return resourceSpecifier;
}

Réussit ce test

- (void)testAppStoreURLFromBundleName
{
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Nuclear™"].absoluteString, @"itms-apps://itunes.com/app/nuclear", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Magazine+"].absoluteString, @"itms-apps://itunes.com/app/magazine", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Karl & CO"].absoluteString, @"itms-apps://itunes.com/app/karlandco", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"[Fluppy fuck]"].absoluteString, @"itms-apps://itunes.com/app/fluppyfuck", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Pollos Hérmanos"].absoluteString, @"itms-apps://itunes.com/app/polloshermanos", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Niños and niñas"].absoluteString, @"itms-apps://itunes.com/app/ninosandninas", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Trond, MobizMag"].absoluteString, @"itms-apps://itunes.com/app/trondmobizmag", nil);
    STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"!__SPECIAL-PLIZES__!"].absoluteString, @"itms-apps://itunes.com/app/specialplizes", nil);
}
hfossli
la source
3

Toutes les réponses sont obsolètes et ne fonctionnent pas; utilisez la méthode ci-dessous.

Toutes les applications d'un développeur:
itms-apps://apps.apple.com/developer/developer-name/developerId

Application unique:
itms-apps://itunes.apple.com/app/appId

Karen Karapetyan
la source
1

cela ouvrira l'App Store directement

NSString *iTunesLink = @"itms-apps://itunes.apple.com/app/ebl- 
skybanking/id1171655193?mt=8";

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
Biswajit Banik
la source
0

Essayez de cette façon

http://itunes.apple.com/lookup?id= "votre ID d'application ici" renvoie json. À partir de là, recherchez la clé " trackViewUrl " et la valeur est l'URL souhaitée. utilisez cette URL (remplacez simplement https://paritms-apps:// ). Cela fonctionne très bien.

Par exemple, si l'ID de votre application est xyz, accédez à ce lien http://itunes.apple.com/lookup?id=xyz

Recherchez ensuite l'URL de la clé " trackViewUrl ". Il s'agit de l'URL de votre application dans l'App Store et pour utiliser cette URL dans xcode, essayez ceci.

NSString *iTunesLink = @"itms-apps://itunes.apple.com/us/app/Your app name/id Your app ID?mt=8&uo=4";
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

Merci

Tunvir Rahman Tusher
la source