So verlinken Sie auf Apps im App Store

700

Ich erstelle eine kostenlose Version meines iPhone-Spiels. Ich möchte eine Schaltfläche in der kostenlosen Version haben, die die Leute zur kostenpflichtigen Version im App Store führt. Wenn ich einen Standardlink benutze

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

Das iPhone öffnet zuerst Safari und dann den App Store. Ich habe andere Apps verwendet, die den App Store direkt öffnen, daher weiß ich, dass dies möglich ist.

Irgendwelche Ideen? Was ist das URL-Schema für den App Store?

matt
quelle
1
Für SWIFT 3.X und lokalisierte Apps könnte diese Antwort hilfreich sein: stackoverflow.com/a/41765175/3143890
LukeSideWalker

Antworten:

771

Bearbeitet am 02.02.2016

Ab iOS 6 wurde die SKStoreProductViewController- Klasse eingeführt. Sie können eine App verknüpfen, ohne Ihre App zu verlassen. Code-Snippet in Swift 3.x / 2.x und Objective-C ist hier .

Ein SKStoreProductViewController- Objekt zeigt einen Store an, mit dem der Benutzer andere Medien im App Store kaufen kann. Beispielsweise kann Ihre App den Store anzeigen, damit der Benutzer eine andere App kaufen kann.


Von Nachrichten und Ankündigungen für Apple-Entwickler .

Mit iTunes-Links Kunden direkt zu Ihrer App im App Store führen Mit iTunes-Links können Sie Ihren Kunden eine einfache Möglichkeit bieten, direkt von Ihrer Website oder von Marketingkampagnen aus auf Ihre Apps im App Store zuzugreifen. Das Erstellen eines iTunes-Links ist einfach und kann durchgeführt werden, um Kunden entweder zu einer einzelnen App, allen Ihren Apps oder zu einer bestimmten App mit Ihrem angegebenen Firmennamen zu leiten.

So senden Sie Kunden an eine bestimmte Anwendung: http://itunes.com/apps/appname

So senden Sie Kunden an eine Liste von Apps, die Sie im App Store haben: http://itunes.com/apps/developername

So senden Sie Kunden an eine bestimmte App, deren Firmenname in der URL enthalten ist: http://itunes.com/apps/developername/appname


Zusätzliche Bemerkungen:

Sie können ersetzen http://mit itms://oder itms-apps://zu vermeiden Umleitungen.

Bitte beachten Sie, dass itms://der Benutzer zum iTunes Store und itms-apps://mit zum App Store gesendet wird!

Informationen zur Benennung finden Sie unter Apple QA1633:

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

Bearbeiten (Stand Januar 2015):

Die Links zu itunes.com/apps sollten auf appstore.com/apps aktualisiert werden. Siehe QA1633 oben, das aktualisiert wurde. Ein neuer QA1629 schlägt folgende Schritte und Codes zum Starten des Stores über eine App vor:

  1. Starten Sie iTunes auf Ihrem Computer.
  2. Suchen Sie nach dem Artikel, zu dem Sie einen Link erstellen möchten.
  3. Klicken Sie mit der rechten Maustaste oder bei gedrückter Ctrl-Taste auf den Namen des Elements in iTunes und wählen Sie im Popup-Menü die Option "iTunes Store-URL kopieren".
  4. Erstellen Sie in Ihrer Anwendung ein NSURLObjekt mit der kopierten iTunes-URL und übergeben Sie dieses Objekt an UIApplicationdie openURLMethode 's :, um Ihr Element im App Store zu öffnen.

Beispielcode:

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.
quelle
161
Ein Tipp ist, itms: // anstelle von http: // zu verwenden, dann wird es direkt im App Store geöffnet. Auf dem iPhone werden 2 (!) Weiterleitungen bei Verwendung von http und 1 bei Verwendung von itms ausgeführt. Bei Verwendung der älteren Phobos-Links (siehe oben) gibt es 0 Weiterleitungen. Verwenden Sie die ID von iTunes Connect, wenn Sie Phobos-Links verwenden. Sie können eine App einreichen, ohne die Binärdatei einzuschließen. Auf diese Weise erhalten Sie die ID, bevor Sie die eigentliche Binärdatei senden. Ich habe das nicht ausprobiert, aber ich habe gehört, dass es funktioniert.
Quano
11
Siehe: developer.apple.com/library/ios/#qa/qa1633/_index.html (Leerzeichen sollten nur entfernt werden.)
Nathan S.
8
Außer ... wofür ist der richtige Wert appname? Ist es der "Bundle Display Name" der App? Ist es unabhängig von Groß- und Kleinschreibung? Wie werden Leerzeichen usw. behandelt?
aroth
14
Dies sollte auf einem realen Gerät getestet werden.
Protocole
7
Dies sollte auf einem echten Gerät getestet werden, ja! Ich hatte ungefähr eine Stunde lang Probleme damit, dass nichts passierte, bevor ich das iPad anschloss und dort testete. Geh.
Kalle
361

Wenn Sie eine App direkt im App Store öffnen möchten, sollten Sie Folgendes verwenden:

itms-apps: // ...

Auf diese Weise wird die App Store-App direkt auf dem Gerät geöffnet, anstatt zuerst zu iTunes zu wechseln und dann nur den App Store zu öffnen (wenn nur itms: // verwendet wird).

Ich hoffe, das hilft.


EDIT: APR, 2017. itms-apps: // funktioniert tatsächlich wieder in iOS10. Ich habe es getestet.

EDIT: APR, 2013. Dies funktioniert nicht mehr in iOS5 und höher. Benutz einfach

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

und es gibt keine Weiterleitungen mehr.

GeneCode
quelle
2
@PEZ Ab heute werden bei Verwendung von http: // ... zwei Weiterleitungen angezeigt. Die Antwort funktioniert perfekt für mich - itms-apps: // ... öffnet die App Store-App direkt auf dem Gerät, ohne Weiterleitungen.
Josh Brown
4
Rocotilos, bist du sicher, dass das nicht mehr funktioniert? Kannst du einen Link posten?
Johndodo
8
Unter iOS. itmsöffnet iTunes. während itms-appsöffnet den App Store. Dies ist ein wesentlicher Unterschied, wenn Benutzer zum Aktualisieren aufgefordert werden! (iOS 10)
mcm
2
itms-appsöffnet die App Store App für mich über openURL:in iOS 10.2. Scheint kein Problem zu sein.
pkamb
1
Seit 10.3 funktioniert diese Methode, muss aber ein Zwischen-Popup-Fenster "Diese URL mit App Store öffnen" durchlaufen? Referenz: blog.branch.io/…
gabry
51

Ab iOS 6 richtig mit der SKStoreProductViewController- Klasse.

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

Sie können die iTunes-Elementkennung der App wie folgt abrufen: (anstelle einer statischen)

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

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

Sie können kAppITunesItemIdentifier(iTunes Item Item ID) der App wie folgt erhalten: (anstelle einer statischen)

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
quelle
4
Vergessen Sie nicht, schnell zu importieren und zu delegieren: Importieren Sie die StoreKit-Klasse RateMeViewController: UIViewController, SKStoreProductViewControllerDelegate {
djdance
Dies funktioniert immer noch. Wenn Sie jedoch auf Bewertung schreiben klicken, funktioniert dies nicht. Sie müssen auf die Schaltfläche Speichern in der oberen Ecke klicken und dann auf Bewertung schreiben klicken. Kennt jemand eine Problemumgehung?
Socca1157
"Write a review" versucht, ein anderes Modal zu öffnen und schlägt fehl, wahrscheinlich weil Sie bereits in Modal präsentieren. Aber Apple erzwingt es. Es scheint also keinen richtigen Weg zu geben, um Bewertungen zum Laufen zu bringen. dieses ganze Konzept ungültig zu machen.
AmitP
Dieser JSON gibt nicht immer Daten zurück und gibt manchmal Null zurück. Es ist nicht zuverlässig, die App-ID vor der Übermittlung abzurufen.
Amber K
41

Ab Sommer 2015 ...

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

Ersetzen Sie 'id1234567890' durch 'id' und 'Ihre zehnstellige Nummer'.

  1. Dies funktioniert perfekt auf allen Geräten .

  2. Es geht direkt zum App Store, keine Weiterleitungen.

  3. Ist OK für alle nationalen Geschäfte .

  4. Es ist wahr, dass Sie zur Verwendung übergehen sollten loadProductWithParameters, aber wenn der Zweck des Links darin besteht, die App zu aktualisieren, in der Sie sich tatsächlich befinden: Es ist möglicherweise besser, diesen "altmodischen" Ansatz zu verwenden.

Joe Blow
quelle
Für die Weiterleitung zu Ihrer Entwicklerseite (wenn Sie dem Benutzer Ihren Katalog mit Apps anzeigen möchten) können Sie außerdem Folgendes verwenden: NSString * simple = @ "itms-apps: //itunes.com/apps/YOUR_COMPANY_NAME";
TheBestBigAl
2
Wo finde ich diese ID?
Mcfly Soft
1
Sommer 2015?! Wie die ganze Welt lebt im selben Land. :(
nacho4d
39

Apple hat gerade die URLs von appstore.com angekündigt.

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

Es gibt drei Arten von App Store-Kurzlinks in zwei Formen: eine für iOS-Apps und eine für Mac-Apps:

Name der Firma

iOS: http://appstore.com/, zum Beispiel http://appstore.com/apple

Mac: http://appstore.com/mac/, zum Beispiel http://appstore.com/mac/apple

App Name

iOS: http://appstore.com/ zum Beispiel http://appstore.com/keynote

Mac: http://appstore.com/mac/, zum Beispiel http://appstore.com/mac/keynote

App von Unternehmen

iOS: http://appstore.com/ / zum Beispiel http://appstore.com/apple/keynote

Mac: http://appstore.com/mac/ / zum Beispiel http://appstore.com/mac/apple/keynote

Die meisten Unternehmen und Apps haben einen kanonischen App Store Short Link. Diese kanonische URL wird durch Ändern oder Entfernen bestimmter Zeichen erstellt (von denen viele illegal sind oder in einer URL eine besondere Bedeutung haben (z. B. "&")).

Wenden Sie zum Erstellen eines App Store Short Links die folgenden Regeln auf Ihren Unternehmens- oder App-Namen an:

Entfernen Sie alle Leerzeichen

Konvertieren Sie alle Zeichen in Kleinbuchstaben

Entfernen Sie alle Copyright- (©), Marken- (™) und eingetragenen Markensymbole (®)

Ersetzen Sie das kaufmännische Und ("&") durch "und"

Entfernen Sie die meisten Satzzeichen (siehe Listing 2 für den Satz).

Ersetzen Sie akzentuierte und andere "dekorierte" Zeichen (ü, å usw.) durch ihr Elementarzeichen (u, a usw.).

Lassen Sie alle anderen Zeichen unverändert.

Listing 2 Interpunktionszeichen, die entfernt werden müssen.

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

Im Folgenden finden Sie einige Beispiele, um die Konvertierung zu demonstrieren.

Appstore

Beispiele für Firmennamen

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

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

Chens Fotografie & Software => http://appstore.com/chensphotographyandsoftware

Beispiele für App-Namen

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

Wo ist mein Perry? => http://appstore.com/wheresmyperry

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

Dev01
quelle
1
Dies ist eigentlich das einzige, was zumindest für Mac Store noch zuverlässig funktioniert
Radu Simionescu
Gut zu wissen, aber leider leitet dies unter iOS über Safari weiter (und gibt die hässliche Meldung "Serveridentität kann nicht überprüft werden" aus).
Sudo Make Install
NEIN. Lesen Sie dies - "Diese App Store Short Links werden als Annehmlichkeit bereitgestellt und es wird nicht garantiert, dass sie mit einer bestimmten App oder Firma verknüpft sind." Im Grunde ist es also zufällig gegeben.
Durazno
30

Dieser Code generiert den App Store-Link unter iOS

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

Ersetzen Sie itms-apps durch http auf dem Mac:

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

URL unter iOS öffnen:

[[UIApplication sharedApplication] openURL:appStoreURL];

Mac:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];
Tibidabo
quelle
Dies funktioniert, aber Sie müssen auch Sonderzeichen wie Bindestriche aus dem App-Namen entfernen.
Macondo2Seattle
Vielen Dank @ 3 Umdrehungen und @ BlackRider
Ganesh Guturi
Können wir alle vom Entwickler hochgeladenen Apps auf einer Seite öffnen und anzeigen?
Imran
Dies war die einzige Drop-In-Lösung, die für mich mit minimalen Weiterleitungen und maximaler Behandlung von Leerzeichen für App-Namen funktioniert hat.
LordParsley
29

So haben Sie einen direkten Link ohne Umleitung:

  1. Verwenden Sie den iTunes Link Maker http://itunes.apple.com/linkmaker/ , um den echten direkten Link zu erhalten
  2. Ersetzen Sie die http://durchitms-apps://
  3. Öffnen Sie den Link mit [[UIApplication sharedApplication] openURL:url];

Seien Sie vorsichtig, diese Links funktionieren nur auf tatsächlichen Geräten, nicht im Simulator.

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

Dulgan
quelle
3
+1 für itunes.apple.com/linkmaker, jeder testet den Link in einem Gerät, das sich nicht im Simulator befindet. Ich habe Zeit damit verschwendet, den Simulator zu testen.
Karthik
2
Vielen Dank für Informationen über Simulator, ich werde dies der Antwort hinzufügen
Dulgan
18

Dies funktionierte bei mir perfekt, wenn ich nur die APP-ID verwendete:

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

Die Anzahl der Weiterleitungen ist NULL.

Almas Adilbek
quelle
13

In einer Reihe von Antworten wird empfohlen, "itms" oder "itms-apps" zu verwenden. Diese Vorgehensweise wird jedoch von Apple nicht ausdrücklich empfohlen. Sie bieten nur die folgende Möglichkeit, den App Store zu öffnen:

Listing 1: Starten des App Store über eine iOS-Anwendung

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

Siehe https://developer.apple.com/library/ios/qa/qa1629/_index.html, zuletzt aktualisiert im März 2014 ab dieser Antwort.

Für Apps, die iOS 6 und höher unterstützen, bietet Apple einen In-App-Mechanismus zur Präsentation des App Store an: 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
}];

Beachten Sie, dass unter iOS6 der Abschlussblock möglicherweise nicht aufgerufen wird, wenn Fehler auftreten. Dies scheint ein Fehler zu sein, der in iOS 7 behoben wurde.

Ben Flynn
quelle
12

Wenn Sie einen Link zu den Apps eines Entwicklers erstellen möchten und der Name des Entwicklers Satzzeichen oder Leerzeichen enthält (z. B. Development Company, LLC), bilden Sie Ihre URL wie folgt:

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

Andernfalls wird unter iOS 4.3.3 "Diese Anforderung kann nicht verarbeitet" zurückgegeben

Andrew
quelle
1
Wenn dies bei Ihnen nicht funktioniert, versuchen Sie die folgende Syntax: itms-apps: //itunes.com/apps/ChuckSmith/id290402113 Ersetzen Sie meinen Namen durch Ihr Unternehmen und meine ID durch Ihre Künstler-ID, die Sie über den iTunes-Link erhalten Hersteller: itunes.apple.com/linkmaker
Chuck Smith
Sie können auch versuchen, diese "speziellen" Zeichen zu codieren - dh "zu ersetzen". " mit "% 2E"
wzs
das ist DIE perfekte Antwort!
Sam B
11

Sie können einen Link zu einem bestimmten Artikel im App Store oder in iTunes über den Link Maker unter folgender Adresse erhalten : http://itunes.apple.com/linkmaker/

Octavio Berlanga
quelle
Dieser hilft mir, weil der Link in meinem iTunes-Connect nicht funktioniert hat und im Generator. Vielen Dank
Dorad
9

Dies funktioniert und ist in ios5 direkt verknüpft

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

Dies ist eine einfache und kurze Möglichkeit, andere vorhandene Anwendungen im App Store umzuleiten / zu verknüpfen.

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

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

Für Xcode 9.1 und Swift 4:

  1. StoreKit importieren:
import StoreKit

2.Konformieren Sie das Protokoll

SKStoreProductViewControllerDelegate

3. Implementieren Sie das Protokoll

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. Wie benutzt man:
openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")

Hinweis:

Es ist sehr wichtig, die genaue ID Ihrer APP einzugeben. Weil dies einen Fehler verursacht (das Fehlerprotokoll nicht anzeigen, aber aus diesem Grund funktioniert nichts einwandfrei)

Xhinoda
quelle
1
Ich mache das Gleiche und laufe auf dem Gerät. Kein Erfolg
Andrea Mugnaini
4

Ich kann bestätigen, dass Sie beim Erstellen einer App in iTunes Connect Ihre App-ID erhalten, bevor Sie sie senden.

Deshalb..

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

Arbeitet ein Vergnügen

user1641587
quelle
4

Das Erstellen eines Links kann zu einem komplexen Problem werden, wenn mehrere Betriebssysteme und mehrere Plattformen unterstützt werden. Zum Beispiel werden die WebObjects unter iOS 7 nicht unterstützt (einige davon). Einige von Ihnen erstellte Links öffnen einen anderen Länderspeicher als den des Benutzers usw.

Es gibt eine Open-Source-Bibliothek namens iLink , die Ihnen helfen könnte.

Die Vorteile dieser Bibliothek bestehen darin, dass die Links zur Laufzeit gefunden und erstellt werden (die Bibliothek überprüft die App-ID und das Betriebssystem, auf dem sie ausgeführt wird, und ermittelt, welcher Link erstellt werden soll). Das Beste daran ist, dass Sie vor der Verwendung fast nichts konfigurieren müssen, damit es fehlerfrei ist und immer funktioniert. Das ist auch dann großartig, wenn Sie nur wenige Ziele für dasselbe Projekt haben, sodass Sie sich nicht merken müssen, welche App-ID oder welchen Link Sie verwenden möchten. Diese Bibliothek fordert den Benutzer auch auf, die App zu aktualisieren, wenn eine neue Version im Store vorhanden ist (diese ist integriert und wird durch ein einfaches Flag deaktiviert), die direkt auf die Aktualisierungsseite für die App verweist, wenn der Benutzer zustimmt.

Kopieren Sie die 2 Bibliotheksdateien in Ihr Projekt (iLink.h & iLink.m).

Auf Ihrer 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.
}

und an der Stelle, an der Sie die Bewertungsseite öffnen möchten, verwenden Sie einfach:

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

Vergessen Sie nicht, iLink.h in dieselbe Datei zu importieren.

Es gibt dort ein sehr gutes Dokument für die gesamte Bibliothek und ein Beispiel für Projekte für iPhone und Mac.

Jameson
quelle
4

Mindestens iOS 9 und höher

  • Öffnen Sie direkt im App Store

Eine App

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

Liste der Entwickler-Apps

itms-apps://itunes.apple.com/developer/[developerName]/[developerID]
Jakub Truhlář
quelle
appNameist nicht nötig.
DawnSong
4

Laut Apples neuestem Dokument müssen Sie verwenden

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

oder

SKStoreProductViewController 
Mihir Oza
quelle
Können Sie Ihren Link bitte aktualisieren? Das scheint ziemlich interessant zu sein, wenn das nicht funktioniert.
Rémy Virin
Das verknüpfte Dokument erwähnt itms:oder nicht itms-apps:. Links, die dieses Schema verwenden, funktionieren auf meinen Geräten mit iOS 12 einwandfrei.
Theo
4

Obwohl es hier viele Antworten gibt, scheint keiner der Vorschläge für die Verknüpfung mit den Entwickler-Apps mehr zu funktionieren.

Bei meinem letzten Besuch konnte ich es mit dem folgenden Format zum Laufen bringen:

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

Dies funktioniert nicht mehr, aber das Entfernen des Entwicklernamens bewirkt Folgendes:

itms-apps://itunes.apple.com/developer/id123456789
Leon
quelle
3

Wenn Sie die App Store-ID haben, verwenden Sie sie am besten. Insbesondere, wenn Sie in Zukunft den Namen der Anwendung ändern könnten.

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

Wenn Sie nicht über die App Store-ID verfügen, können Sie anhand dieser Dokumentation eine URL erstellen: 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;
}

Besteht diesen 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
quelle
3

Alle Antworten sind veraltet und funktionieren nicht. Verwenden Sie die folgende Methode.

Alle Apps eines Entwicklers:
itms-apps://apps.apple.com/developer/developer-name/developerId

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

Karen Karapetyan
quelle
1

Der App Store wird direkt geöffnet

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

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

Versuchen Sie es auf diese Weise

http://itunes.apple.com/lookup?id= "Ihre App-ID hier" gibt json zurück. Suchen Sie hier den Schlüssel " trackViewUrl " und der Wert ist die gewünschte URL. Benutze diese URL (nur ersetzen https://mit itms-apps://) .Dieses funktioniert gut.

Wenn Ihre App-ID beispielsweise xyz lautet, rufen Sie diesen Link http://itunes.apple.com/lookup?id=xyz auf

Suchen Sie dann die URL für den Schlüssel " trackViewUrl ". Dies ist die URL für Ihre App im App Store. Um diese URL in xcode zu verwenden, versuchen Sie dies

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

Vielen Dank

Tunvir Rahman Tusher
quelle