Come collegarsi alle app su App Store


700

Sto creando una versione gratuita del mio gioco per iPhone. Voglio avere un pulsante all'interno della versione gratuita che porti le persone alla versione a pagamento nell'app store. Se uso un collegamento standard

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

l'iPhone apre prima Safari e poi l'app store. Ho usato altre app che aprono direttamente l'app store, quindi so che è possibile.

Qualche idea? Qual è lo schema URL per l'app store?


1
Per SWIFT 3.xe applicazioni localizzate questa risposta potrebbe aiutare: stackoverflow.com/a/41765175/3143890
LukeSideWalker

Risposte:


771

Modificato il 02-02-2016

A partire da iOS 6 è stata introdotta la classe SKStoreProductViewController . Puoi collegare un'app senza uscire dall'app. Lo snippet di codice in Swift 3.x / 2.x e Objective-C è qui .

Un oggetto SKStoreProductViewController presenta un negozio che consente all'utente di acquistare altri media dall'App Store. Ad esempio, la tua app potrebbe visualizzare il negozio per consentire all'utente di acquistare un'altra app.


Da notizie e annunci per gli sviluppatori Apple .

Indirizza i clienti direttamente sulla tua app sull'App Store con i collegamenti iTunes Con i collegamenti iTunes puoi fornire ai tuoi clienti un modo semplice per accedere alle tue app sull'App Store direttamente dal tuo sito Web o campagne di marketing. La creazione di un collegamento iTunes è semplice e può essere fatta per indirizzare i clienti verso una singola app, tutte le tue app o verso un'app specifica con il nome della tua azienda specificato.

Per inviare i clienti a un'applicazione specifica: http://itunes.com/apps/appname

Per inviare i clienti a un elenco di app presenti sull'App Store: http://itunes.com/apps/developername

Per inviare i clienti a un'app specifica con il nome della tua azienda incluso nell'URL: http://itunes.com/apps/developername/appname


Note aggiuntive:

È possibile sostituire http://con itms://o itms-apps://per evitare reindirizzamenti.

Si prega di notare che itms://invierà l'utente allo store di iTunes e itms-apps://con inviarlo all'App Store!

Per informazioni sulla denominazione, vedi Apple QA1633:

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

Modifica (da gennaio 2015):

I collegamenti itunes.com/apps devono essere aggiornati a appstore.com/apps. Vedi QA1633 sopra, che è stato aggiornato. Un nuovo QA1629 suggerisce questi passaggi e codice per l'avvio dello store da un'app:

  1. Avvia iTunes sul tuo computer.
  2. Cerca l'elemento che desideri collegare.
  3. Fai clic con il pulsante destro del mouse o fai clic tenendo premuto il tasto Ctrl sul nome dell'elemento in iTunes, quindi scegli "Copia l'URL di iTunes Store" dal menu a comparsa.
  4. Nell'applicazione, creare un NSURLoggetto con iTunes URL copiato, quindi passare questo oggetto per UIApplication's openURL: metodo per aprire il vostro articolo in App Store.

Codice di esempio:

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

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

161
Un suggerimento è di usare itms: // invece di http: //, quindi si aprirà direttamente nell'app store. Sull'iPhone eseguirà 2 (!) Reindirizzamenti quando si utilizza http e 1 quando si utilizza itms. Quando si utilizzano i collegamenti phobos precedenti (vedere sopra), ci sono 0 reindirizzamenti. Usa l'id di iTunes Connect se utilizzi i collegamenti phobos. Puoi scegliere di inviare un'app senza includere il binario. In questo modo otterrai l'id prima di inviare il file binario effettivo. Non l'ho provato, ma ho sentito che funziona.
quano,

11
Vedi: developer.apple.com/library/ios/#qa/qa1633/_index.html (lo spazio bianco deve essere rimosso.)
Nathan S.

8
Tranne ... qual è il valore corretto da utilizzare appname? È il "Nome visualizzato del bundle" dell'app? Non fa distinzione tra maiuscole e minuscole? Come vengono gestiti gli spazi vuoti, ecc.?
aroth,

14
Questo dovrebbe essere testato su un dispositivo reale.
Protocollo

7
Questo DOVREBBE essere testato su un dispositivo reale, sì! Ho lottato per non accadere nulla per circa un'ora prima di collegare l'iPad e testarlo lì. Geh.
Kalle

361

Se vuoi aprire un'app direttamente sull'App Store, dovresti usare:

itms-apps: // ...

In questo modo aprirà direttamente l'app dell'App Store nel dispositivo, anziché andare prima su iTunes, quindi aprirà solo l'App Store (quando si utilizza solo itms: //)

Spero che aiuti.


EDIT: APR, 2017. itms-apps: // funziona di nuovo in iOS10. L'ho provato.

EDIT: APR, 2013. Questo non funziona più in iOS5 e versioni successive. Basta usare

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

e non ci sono più reindirizzamenti.


2
@PEZ Ad oggi, vedo due reindirizzamenti quando utilizzo http: // ... La risposta funziona perfettamente per me - itms-apps: // ... apre direttamente l'app App Store sul dispositivo, senza reindirizzamenti.
Josh Brown,

4
Rocotilos, sei sicuro che non funzioni più? Puoi postare un link?
johndodo,

8
Su iOS. itmsapre itunes. mentre itms-appsapre l'App Store. Questa è una differenza fondamentale se si richiede agli utenti di aggiornare! (iOS 10)
mcm

2
itms-appsapre l'app App Store per me tramite openURL:iOS 10.2. Sembra essere nessun problema.
pkamb,

1
Dal 10.3 questo metodo funziona ma deve passare attraverso un popup di visualizzazione intermedio "apri questo URL con app store"? Riferimento: blog.branch.io/…
gabry,

51

A partire da iOS 6 nel modo giusto per farlo utilizzando 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")

È possibile ottenere l'identificatore dell'elemento iTunes dell'app in questo modo: (anziché statico)

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

obiettivo-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];
}

È possibile ottenere kAppITunesItemIdentifier(identificativo elemento iTunes dell'app) in questo modo: (anziché statico)

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]];

4
in fretta non dimenticare di importare e delegare: importare la classe StoreKit RateMeViewController: UIViewController, SKStoreProductViewControllerDelegate {
djdance

Funziona ancora, tuttavia quando vai e fai clic su Scrivi una recensione, non funziona. Devi fare clic sul pulsante Store nell'angolo in alto e quindi fare clic su Scrivi una recensione. Qualcuno sa una soluzione alternativa ??
socca1157,

"Scrivi una recensione" tenta di aprire un altro modale e non riesce, probabilmente perché stai già presentando in modale. Ma Apple lo costringe. Quindi sembra che non ci sia un modo corretto per far funzionare le recensioni. rendendo nullo l'intero concetto.
AmitP,

Quel json non sempre restituisce dati e restituisce a volte zero. Non affidabile per ottenere l'ID app prima dell'invio.
Ambra K

41

Per l'estate 2015 in poi ...

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

sostituisci "id1234567890" con "id" e "il tuo numero di dieci cifre"

  1. Funziona perfettamente su tutti i dispositivi .

  2. Va direttamente all'App Store, senza reindirizzamenti.

  3. Va bene per tutti i negozi nazionali .

  4. È vero che dovresti passare a utilizzare loadProductWithParameters , ma se lo scopo del link è aggiornare l'app in cui ti trovi effettivamente: è probabilmente meglio usare questo approccio "vecchio stile".


Inoltre, per indirizzare alla tua pagina degli sviluppatori (se vuoi mostrare all'utente il tuo catalogo di app) puoi usare: NSString * simple = @ "itms-apps: //itunes.com/apps/YOUR_COMPANY_NAME";
TheBestBigAl

2
Dove trovo questo ID?
mcfly soft

1
Estate 2015 ?! Come se il mondo intero vivesse nello stesso paese. :(
nacho4d,

39

Apple ha appena annunciato gli URL di appstore.com.

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

Esistono tre tipi di collegamenti brevi per App Store, in due forme, uno per le app iOS e un altro per le app Mac:

Nome della ditta

iOS: http://appstore.com/ ad esempio http://appstore.com/apple

Mac: http://appstore.com/mac/ ad esempio, http://appstore.com/mac/apple

Nome dell'applicazione

iOS: http://appstore.com/, ad esempio, http://appstore.com/keynote

Mac: http://appstore.com/mac/ ad esempio, http://appstore.com/mac/keynote

App per azienda

iOS: http://appstore.com/ / ad esempio, http://appstore.com/apple/keynote

Mac: http://appstore.com/mac/ / ad esempio, http://appstore.com/mac/apple/keynote

La maggior parte delle aziende e delle app dispone di un collegamento breve all'App Store canonico. Questo URL canonico viene creato modificando o rimuovendo determinati caratteri (molti dei quali sono illegali o hanno un significato speciale in un URL (ad esempio "&")).

Per creare un collegamento breve all'App Store, applica le seguenti regole alla tua azienda o al nome dell'app:

Rimuovi tutti gli spazi bianchi

Converti tutti i caratteri in minuscolo

Rimuovere tutti i simboli di copyright (©), marchio (™) e marchio registrato (®)

Sostituisci le e commerciali ("&") con "e"

Rimuovi la punteggiatura (vedi il Listato 2 per il set)

Sostituisci i caratteri accentati e altri "decorati" (ü, å, ecc.) Con il loro carattere elementare (u, a, ecc.)

Lascia tutti gli altri personaggi così come sono.

Elenco 2 caratteri di punteggiatura che devono essere rimossi.

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

Di seguito sono riportati alcuni esempi per dimostrare la conversione che ha luogo.

App Store

Esempi di nomi di società

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

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

Fotografia e software di Chen => http://appstore.com/chensphotographyandsoftware

Esempi di nomi di app

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

Dov'è il mio Perry? => http://appstore.com/wheresmyperry

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


1
questa è in realtà l'unica cosa che funziona ancora in modo affidabile almeno per Mac Store
Radu Simionescu,

Buono a sapersi, ma purtroppo su iOS questo reindirizza tramite Safari (e dà un brutto messaggio "Impossibile verificare l'identità del server").
sudo make install

NO. Leggi questo: "Questi brevi collegamenti all'App Store sono forniti per comodità e non è garantito il collegamento a una particolare app o società". Quindi in pratica viene dato in modo casuale.
Durazno,

30

Questo codice genera il link App Store su iOS

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

Sostituisci itms-app con http su Mac:

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

Apri URL su iOS:

[[UIApplication sharedApplication] openURL:appStoreURL];

Mac:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];

Funziona, ma devi anche rimuovere caratteri speciali come trattini dal nome dell'app.
Macondo2Seattle,

Grazie @ 3 giri e @BlackRider
Ganesh Guturi

Possiamo aprire e mostrare tutte le app caricate dallo sviluppatore in una pagina?
Imran,

Questa è stata l'unica soluzione drop-in che ha funzionato per me con reindirizzamenti minimi e massima gestione degli spazi bianchi dei nomi di app.
LordParsley

29

Per avere un collegamento diretto senza reindirizzamento:

  1. Usa il creatore di collegamenti iTunes http://itunes.apple.com/linkmaker/ per ottenere il vero collegamento diretto
  2. Sostituisci http://conitms-apps://
  3. Apri il link con [[UIApplication sharedApplication] openURL:url];

Fai attenzione, quei collegamenti funzionano solo su dispositivi reali, non nel simulatore.

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


3
+1 per itunes.apple.com/linkmaker, tutti testavano il collegamento nel dispositivo non nel simulatore, stavo perdendo tempo nel test del simulatore.
karthik,

2
Grazie per le informazioni su Simulator, aggiungerò questo alla risposta
dulgan,


18

Questo ha funzionato perfettamente per me utilizzando solo l'ID APP:

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

Il numero di reindirizzamenti è ZERO.


13

Numerose risposte suggeriscono di usare "itms" o "itms-app", ma questa pratica non è specificamente raccomandata da Apple. Offrono solo il seguente modo per aprire l'App Store:

Listato 1 Avvio dell'App Store da un'applicazione iOS

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

Vedi https://developer.apple.com/library/ios/qa/qa1629/_index.html ultimo aggiornamento marzo 2014 a partire da questa risposta.

Per le app che supportano iOS 6 e versioni successive, Apple offre un meccanismo in-app per presentare 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
}];

Si noti che su iOS6, il blocco di completamento potrebbe non essere chiamato in caso di errori. Questo sembra essere un bug che è stato risolto in iOS 7.


12

Se vuoi collegarti alle app di uno sviluppatore e il nome dello sviluppatore ha punteggiatura o spazi (ad es. Società di sviluppo, LLC) dal tuo URL in questo modo:

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

Altrimenti restituisce "Questa richiesta non può essere elaborata" su iOS 4.3.3


1
Se questo non funziona per te, prova la seguente sintassi: itms-apps: //itunes.com/apps/ChuckSmith/id290402113 sostituendo il mio nome con la tua azienda e il mio ID con il tuo ID artista che puoi ottenere dal link iTunes produttore: itunes.apple.com/linkmaker
Chuck Smith

Potresti anche provare a codificare quei caratteri "speciali" - cioè sostituire "." con "% 2E"
wzs

questa è la risposta perfetta!
Sam B


9

Funziona e si collega direttamente in iOS5

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

8

Questo è un modo semplice e breve per reindirizzare / collegare altre applicazioni esistenti su app store.

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

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

6

Per Xcode 9.1 e Swift 4:

  1. Importa StoreKit:
import StoreKit

2.Conformare il protocollo

SKStoreProductViewControllerDelegate

3. Implementare il protocollo

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. Come usare:
openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")

Nota:

È molto importante inserire l'ID esatto della tua APP. Perché questo causa errore (non mostra il registro degli errori, ma nulla funziona bene per questo)


1
Sto facendo la stessa cosa, correndo sul dispositivo. Nessun successo
Andrea Mugnaini il

4

Posso confermare che se crei un'app in iTunes Connect ottieni il tuo ID app prima di inviarlo.

Perciò..

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];

Funziona a meraviglia


4

La creazione di un collegamento potrebbe diventare un problema complesso quando si supportano più sistemi operativi e piattaforme multiple. Ad esempio, WebObjects non è supportato su iOS 7 (alcuni di essi), alcuni collegamenti creati apriranno un altro archivio paese quindi l'utente ecc.

C'è una libreria open source chiamata iLink che potrebbe aiutarti.

I vantaggi di questa libreria sono che i collegamenti verrebbero trovati e creati in fase di esecuzione (la biblioteca verificherebbe l'ID app e il sistema operativo su cui è in esecuzione e capirebbe quale collegamento dovrebbe essere creato). Il punto migliore in questo è che non è necessario configurare quasi nulla prima di usarlo in modo che sia privo di errori e funzionerebbe sempre. È fantastico anche se hai pochi target sullo stesso progetto, quindi non devi ricordare quale ID app o link utilizzare. Questa libreria richiederebbe inoltre all'utente di aggiornare l'app se è presente una nuova versione nello store (questa è integrata e la disattivi con un semplice flag) che punta direttamente alla pagina di aggiornamento dell'app se l'utente accetta.

Copia i 2 file della libreria nel tuo progetto (iLink.h & iLink.m).

Sulla tua 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.
}

e sul posto in cui si desidera aprire la pagina di classificazione, ad esempio, basta usare:

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

Non dimenticare di importare iLink.h sullo stesso file.

C'è un ottimo documento per l'intera biblioteca lì e un esempio di progetti per iPhone e Mac.


4

Almeno iOS 9 e versioni successive

  • Apri direttamente nell'App Store

Una app

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

Elenco delle app per sviluppatori

itms-apps://itunes.apple.com/developer/[developerName]/[developerID]

appNamenon è necessario.
DawnSong,

4

Secondo l'ultimo documento di Apple è necessario utilizzare

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

o

SKStoreProductViewController 

Puoi aggiornare il tuo link per favore? Questo sembra abbastanza interessante se non funzionerà.
Rémy Virin,

Il documento collegato non menziona itms:o itms-apps:. I collegamenti che utilizzano questo schema funzionano perfettamente sui miei dispositivi con iOS 12.
Theo,

4

Nonostante ci siano molte risposte qui, nessuno dei suggerimenti per il collegamento alle app degli sviluppatori sembra funzionare più.

L'ultima volta che ho visitato sono stato in grado di farlo funzionare utilizzando il formato:

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

Questo non funziona più, ma rimuovere il nome dello sviluppatore fa:

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

3

Se hai l'ID app store, è meglio usarlo. Soprattutto se in futuro potresti cambiare il nome dell'applicazione.

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

Se non disponi dell'ID app store, puoi creare un URL basato su questa documentazione 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;
}

Passa questo 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);
}

3

Tutte le risposte sono obsolete e non funzionano; utilizzare il metodo seguente.

Tutte le app di uno sviluppatore:
itms-apps://apps.apple.com/developer/developer-name/developerId

App singola:
itms-apps://itunes.apple.com/app/appId


1

aprirà direttamente l'App Store

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

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

0

Prova in questo modo

http://itunes.apple.com/lookup?id= "ID della tua app qui" restituisce json. Da questo, trova la chiave " trackViewUrl " e il valore è l'URL desiderato. usa questo url (basta sostituirlo https://con itms-apps://). Funziona bene.

Ad esempio, se l'ID app è xyz, vai a questo link http://itunes.apple.com/lookup?id=xyz

Quindi trova l'URL per il tasto " trackViewUrl ". Questo è l'URL della tua app nell'App Store e per utilizzare questo URL in xcode prova questo

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]];

Grazie

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.