Jak połączyć się z aplikacjami w App Store


700

Tworzę bezpłatną wersję mojej gry na iPhone'a. Chcę mieć przycisk w bezpłatnej wersji, który zabiera ludzi do płatnej wersji w sklepie z aplikacjami. Jeśli użyję standardowego linku

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

iPhone najpierw otwiera Safari, a następnie App Store. Korzystałem z innych aplikacji, które bezpośrednio otwierają sklep z aplikacjami, więc wiem, że jest to możliwe.

Jakieś pomysły? Jaki jest schemat adresów URL sklepu z aplikacjami?


1
W przypadku SWIFT 3.X i zlokalizowanych aplikacji ta odpowiedź może pomóc: stackoverflow.com/a/41765175/3143890
LukeSideWalker

Odpowiedzi:


771

Edytowano 02.02.2016

Począwszy od iOS 6 wprowadzono klasę SKStoreProductViewController . Możesz połączyć aplikację bez opuszczania aplikacji. Fragment kodu w Swift 3.x / 2.x oraz Objective-C jest tutaj .

Obiekt SKStoreProductViewController przedstawia sklep, który umożliwia użytkownikowi zakup innych mediów z App Store. Na przykład aplikacja może wyświetlać sklep, aby umożliwić użytkownikowi zakup innej aplikacji.


Z wiadomości i ogłoszeń dla programistów Apple .

Prowadź klientów bezpośrednio do swojej aplikacji w App Store za pomocą łączy iTunes Dzięki linkom iTunes możesz zapewnić swoim klientom łatwy dostęp do aplikacji w App Store bezpośrednio ze strony internetowej lub kampanii marketingowych. Utworzenie łącza do iTunes jest proste i można go skierować do jednej aplikacji, wszystkich aplikacji lub do konkretnej aplikacji o określonej nazwie firmy.

Aby wysłać klientów do określonej aplikacji: http://itunes.com/apps/appname

Aby wysłać klientów do listy aplikacji dostępnych w App Store: http://itunes.com/apps/developername

Aby wysłać klientów do określonej aplikacji z nazwą firmy zawartą w adresie URL: http://itunes.com/apps/developername/appname


Dodatkowe uwagi:

Można wymienić http://z itms://lub itms-apps://do przekierowania uniknąć.

Pamiętaj, że itms://wyśle ​​użytkownika do sklepu iTunes, a itms-apps://wraz z nim do App Store!

Aby uzyskać informacje na temat nazewnictwa, zobacz Apple QA1633:

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

Edytuj (od stycznia 2015):

Łącza itunes.com/apps należy zaktualizować do appstore.com/apps. Zobacz QA1633 powyżej, który został zaktualizowany. Nowy QA1629 sugeruje następujące kroki i kod do uruchomienia sklepu z aplikacji:

  1. Uruchom iTunes na swoim komputerze.
  2. Wyszukaj element, który chcesz połączyć.
  3. Kliknij prawym przyciskiem myszy lub kliknij z wciśniętym klawiszem Control nazwę elementu w iTunes, a następnie wybierz z menu podręcznego opcję „Kopiuj adres URL sklepu iTunes Store”.
  4. W aplikacji utwórz NSURLobiekt ze skopiowanym adresem URL iTunes, a następnie przekaż ten obiekt do metody UIApplication's openURL:, aby otworzyć swój element w App Store.

Przykładowy kod:

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

Szybki 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
Wskazówka: użyj itms: // zamiast http: //, a następnie otworzy się bezpośrednio w sklepie z aplikacjami. Na iPhonie spowoduje 2 (!) Przekierowania przy korzystaniu z HTTP i 1 przy korzystaniu z itms. Podczas korzystania ze starszych linków fobos (patrz wyżej) istnieje 0 przekierowań. Użyj identyfikatora z iTunes Connect, jeśli używasz linków fobos. Możesz przesłać aplikację bez uwzględnienia pliku binarnego. W ten sposób otrzymasz identyfikator przed przesłaniem rzeczywistego pliku binarnego. Nie próbowałem tego, ale słyszałem, że to działa.
quano

11
Zobacz: developer.apple.com/library/ios/#qa/qa1633/_index.html (Białe spacje należy po prostu usunąć.)
Nathan S.

8
Z wyjątkiem ... jakiej wartości należy użyć appname? Czy to „Wyświetlana nazwa pakietu” aplikacji? Czy to nie rozróżnia wielkości liter? Jak obsługiwane są puste miejsca itp.?
aroth

14
Powinno to zostać przetestowane na prawdziwym urządzeniu.
Protokół

7
To NALEŻY przetestować na prawdziwym urządzeniu, tak! Przez około godzinę walczyłem z niczym, zanim podłączyłem iPada i tam go przetestowałem. Geh.
Kalle,

361

Jeśli chcesz otworzyć aplikację bezpośrednio w App Store, użyj:

itms-apps: // ...

W ten sposób otworzy bezpośrednio aplikację App Store na urządzeniu, zamiast najpierw przejść do iTunes, a następnie tylko App Store (przy użyciu tylko itms: //)

Mam nadzieję, że to pomaga.


EDYCJA: APR, 2017. itms-apps: // faktycznie działa ponownie w iOS10. Przetestowałem to.

EDYCJA: APR, 2013. To nie działa już w iOS5 i nowszych wersjach. Po prostu użyj

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

i nie ma już przekierowań.


2
@PEZ Na dzień dzisiejszy widzę dwa przekierowania przy użyciu http: // ... Odpowiedź działa dla mnie idealnie - itms-apps: // ... bezpośrednio otwiera aplikację App Store na urządzeniu, bez żadnych przekierowań.
Josh Brown

4
Rocotilos, czy jesteś pewien, że to już nie działa? Czy możesz opublikować link?
johndodo

8
Na iOS. itmsotwiera itunes. podczas gdy itms-appsotwiera App Store. Jest to kluczowa różnica, jeśli użytkownicy proszą o aktualizację! (iOS 10)
mcm

2
itms-appsotwiera dla mnie aplikację App Store openURL:w iOS 10.2. Wygląda na to, że nie ma problemu.
pkamb

1
Od 10.3 ta metoda działa, ale musi przejść przez wyskakujące okienko wyświetlacza „otworzyć ten adres URL w sklepie z aplikacjami”? Numer referencyjny: blog.branch.io/...
Gabry

51

Począwszy od iOS 6 właściwy sposób, aby to zrobić, używając klasy 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")

Możesz uzyskać identyfikator elementu itunes aplikacji w następujący sposób: (zamiast statycznego)

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

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

Możesz uzyskać kAppITunesItemIdentifier(identyfikator elementu itunes aplikacji) w następujący sposób: (zamiast statycznego)

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
w trybie szybkim nie zapomnij zaimportować i delegować: importuj klasę StoreKit RateMeViewController: UIViewController, SKStoreProductViewControllerDelegate {
djdance

To nadal działa, jednak po kliknięciu przycisku Napisz recenzję nie działa. Musisz kliknąć przycisk Store w górnym rogu, a następnie kliknąć Napisz recenzję. Ktoś zna obejście?
socca1157,

„Napisz recenzję” próbuje otworzyć inny modal i kończy się niepowodzeniem, prawdopodobnie dlatego, że już prezentujesz w modalu. Ale Apple to wymusza. Wygląda na to, że nie ma odpowiedniego sposobu, aby recenzje działały. unieważniając całą tę koncepcję.
AmitP

Ten json nie zawsze zwraca dane i zwraca czasami zero. Nie można uzyskać identyfikatora aplikacji przed przesłaniem.
Amber K

41

Od lata 2015 r. ...

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

zamień „id1234567890” na „id” i „twój dziesięciocyfrowy numer”

  1. Działa to doskonale na wszystkich urządzeniach .

  2. To idzie prosto do sklepu z aplikacjami, bez przekierowań.

  3. Jest OK dla wszystkich sklepów krajowych .

  4. To prawda, że ​​powinieneś przejść do korzystania loadProductWithParameters , ale jeśli celem tego linku jest aktualizacja aplikacji, w której faktycznie się znajdujesz: być może lepiej jest zastosować to „staromodne” podejście.


Ponadto do przekierowania na stronę programisty (jeśli chcesz pokazać użytkownikowi swój katalog aplikacji) możesz użyć: NSString * simple = @ "itms-apps: //itunes.com/apps/YOUR_COMPANY_NAME";
TheBestBigAl

2
Gdzie znajdę ten identyfikator?
mcfly soft

1
Lato 2015 ?! Jak cały świat mieszka w tym samym kraju. :(
nacho4d

39

Apple właśnie ogłosiło adresy URL appstore.com.

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

Istnieją trzy rodzaje krótkich linków App Store, w dwóch postaciach, jedna dla aplikacji na iOS, druga dla aplikacji na Maca:

Nazwa firmy

iOS: na przykład http://appstore.com/, na przykład http://appstore.com/apple

Mac: na przykład http://appstore.com/mac/, na przykład http://appstore.com/mac/apple

Nazwa aplikacji

iOS: http://appstore.com/ np http://appstore.com/keynote

Mac: http://appstore.com/mac/ np http://appstore.com/mac/keynote

Aplikacja według firmy

iOS: http://appstore.com/ / na przykład http://appstore.com/apple/keynote

Mac: http://appstore.com/mac/ / na przykład http://appstore.com/mac/apple/keynote

Większość firm i aplikacji ma kanoniczny krótki link do App Store. Ten kanoniczny adres URL jest tworzony przez zmianę lub usunięcie niektórych znaków (wiele z nich jest nielegalnych lub ma specjalne znaczenie w adresie URL (na przykład „&”)).

Aby utworzyć krótki link do App Store, zastosuj następujące zasady do nazwy firmy lub aplikacji:

Usuń wszystkie białe znaki

Konwertuj wszystkie znaki na małe litery

Usuń wszystkie prawa autorskie (©), znaki handlowe (™) i symbole zarejestrowanego znaku (®)

Zamień znaki ampersands („&”) na „i”

Usuń większość interpunkcji (zobacz zestaw 2)

Zastąp znaki akcentowane i inne „zdobione” (ü, å itp.) Ich żywiołowym charakterem (u, a itp.)

Pozostaw wszystkie pozostałe znaki bez zmian.

Wyświetlanie 2 znaków interpunkcyjnych, które należy usunąć.

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

Poniżej znajduje się kilka przykładów demonstrujących konwersję, która ma miejsce.

Sklep z aplikacjami

Przykłady nazw firm

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

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

Fotografia i oprogramowanie Chena => http://appstore.com/chensphotographyandsoftware

Przykłady nazw aplikacji

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

Gdzie jest moja Perry? => http://appstore.com/wheresmyperry

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


1
to właściwie jedyna rzecz, która nadal działa niezawodnie dla sklepu Mac
Radu Simionescu,

Warto o tym wiedzieć, ale niestety na iOS przekierowuje przez Safari (i wyświetla brzydki komunikat „Nie można zweryfikować tożsamości serwera”).
sudo dokonaj instalacji

NIE. Przeczytaj to - „Te krótkie linki do App Store są udostępniane dla wygody i nie gwarantuje się, że będą prowadzić do konkretnej aplikacji lub firmy”. Zasadniczo jest to losowe.
durazno

30

Ten kod generuje link App Store na iOS

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

Zamień itms-apps na http na Macu:

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

Otwórz URL na iOS:

[[UIApplication sharedApplication] openURL:appStoreURL];

Prochowiec:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];

To działa, ale musisz również usunąć znaki specjalne, takie jak myślniki, z nazwy aplikacji.
Macondo2Seattle

Dziękuję @ 3 obroty i @BlackRider
Ganesh Guturi

Czy możemy otworzyć i wyświetlić wszystkie aplikacje przesłane przez programistę na jednej stronie?
Imran

To było jedyne rozwiązanie typu drop-in, które działało dla mnie z minimalnymi przekierowaniami i maksymalną obsługą białych znaków nazwy aplikacji.
LordParsley

29

Aby mieć bezpośredni link bez przekierowania:

  1. Użyj narzędzia do tworzenia linków iTunes http://itunes.apple.com/linkmaker/, aby uzyskać prawdziwy bezpośredni link
  2. Wymień http://sięitms-apps://
  3. Otwórz link za pomocą [[UIApplication sharedApplication] openURL:url];

Uważaj, te linki działają tylko na rzeczywistych urządzeniach, a nie w symulatorze.

Źródło: https://developer.apple.com/library/ios/#qa/qa2008/qa1629.html


3
+1 dla itunes.apple.com/linkmaker, każdy testuje link w urządzeniu nie w symulatorze, traciłem czas na testowanie symulatora.
karthik

2
Dzięki za informacje o Symulatorze, dodam to do odpowiedzi
dulgan


18

Działa to dla mnie idealnie, używając tylko identyfikatora aplikacji:

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

Liczba przekierowań to ZERO.


13

Wiele odpowiedzi sugeruje użycie „itms” lub „itms-apps”, ale Apple nie zaleca tej praktyki. Oferują tylko następujący sposób otwarcia App Store:

Listing 1 Uruchamianie App Store z aplikacji na iOS

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

Zobacz https://developer.apple.com/library/ios/qa/qa1629/_index.html ostatnią aktualizację z marca 2014 r. Od tej odpowiedzi.

W przypadku aplikacji obsługujących system iOS 6 lub nowszy Apple oferuje mechanizm prezentacji aplikacji w 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
}];

Należy pamiętać, że w iOS6 blok uzupełniający może nie zostać wywołany, jeśli wystąpią błędy. Wygląda to na błąd, który został rozwiązany w iOS 7.


12

Jeśli chcesz połączyć się z aplikacjami programisty, a nazwa programisty zawiera znaki interpunkcyjne lub spacje (np. Development Company, LLC), wpisz swój adres URL w następujący sposób:

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

W przeciwnym razie zwraca „To żądanie nie może być przetworzone” w iOS 4.3.3


1
Jeśli to nie zadziała, wypróbuj następującą składnię: itms-apps: //itunes.com/apps/ChuckSmith/id290402113 zastępując moje imię i nazwisko twoją firmą oraz mój identyfikator identyfikatorem wykonawcy, który można uzyskać za pomocą łącza iTunes producent: itunes.apple.com/linkmaker
Chuck Smith

Możesz także spróbować zakodować te „specjalne” znaki - tj. Zamień „.” z „% 2E”
wzs

to jest idealna odpowiedź!
Sam B


9

Działa to i łączy się bezpośrednio w ios5

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

8

Jest to prosty i krótki sposób na przekierowanie / połączenie innej istniejącej aplikacji w App Store.

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

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

6

W przypadku Xcode 9.1 i Swift 4:

  1. Importuj StoreKit:
import StoreKit

2. Wykonaj protokół

SKStoreProductViewControllerDelegate

3. Wdrożyć protokół

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. Jak używać:
openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")

Uwaga:

Bardzo ważne jest, aby wprowadzić dokładny identyfikator swojej aplikacji. Ponieważ powoduje to błąd (nie pokazuje dziennika błędów, ale nic nie działa z tego powodu)


1
Robię to samo, działając na urządzeniu. Bez powodzenia
Andrea Mugnaini,

4

Mogę potwierdzić, że jeśli utworzysz aplikację w iTunes Connect, otrzymasz identyfikator aplikacji przed przesłaniem.

W związku z tym..

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

Działa uczta


4

Utworzenie łącza może stać się złożonym problemem przy obsłudze wielu systemów operacyjnych i wielu platform. Na przykład obiekty WebObjects nie są obsługiwane w systemie iOS 7 (niektóre z nich), niektóre utworzone linki otworzyłyby inny sklep w kraju niż użytkownika itp.

Istnieje biblioteka open source o nazwie iLink, która może ci pomóc.

Zaletą tej biblioteki jest to, że linki zostałyby znalezione i utworzone w czasie wykonywania (biblioteka sprawdziłaby identyfikator aplikacji i system operacyjny, na którym działa, i wiedziała, jaki link powinien zostać utworzony). Najlepsze w tym jest to, że nie trzeba konfigurować prawie niczego przed użyciem, aby było wolne od błędów i zawsze działało. To świetnie, jeśli masz kilka celów w tym samym projekcie, więc nie musisz pamiętać, którego identyfikatora aplikacji lub linku użyć. Ta biblioteka poprosiłaby również użytkownika o aktualizację aplikacji, jeśli w sklepie jest nowa wersja (jest ona wbudowana i wyłączasz ją zwykłą flagą), bezpośrednio wskazując stronę aktualizacji aplikacji, jeśli użytkownik wyrazi na to zgodę.

Skopiuj 2 pliki bibliotek do swojego projektu (iLink.h i iLink.m).

W Twojej aplikacji Delegate.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.
}

a na przykład w miejscu, w którym chcesz otworzyć stronę oceny, po prostu użyj:

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

Nie zapomnij zaimportować iLink.h do tego samego pliku.

Jest tam bardzo dobry dokument dla całej biblioteki i przykładowe projekty dla iPhone'a i Maca.


4

Co najmniej iOS 9 i nowszy

  • Otwórz bezpośrednio w App Store

Aplikacja

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

Lista aplikacji programisty

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

appNameto nie jest konieczne.
DawnSong

4

Zgodnie z najnowszym dokumentem Apple musisz użyć

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

lub

SKStoreProductViewController 

Czy możesz zaktualizować swój link? To wydaje się dość interesujące, jeśli to nie zadziała.
Rémy Virin,

Powiązany dokument nie wspomina itms:ani itms-apps:. Linki korzystające z tego schematu działają dobrze na moich urządzeniach z systemem iOS 12.
Theo

4

Pomimo wielu odpowiedzi tutaj, wydaje się, że żadna z sugestii dotyczących linkowania do aplikacji dla programistów nie działa.

Podczas mojej ostatniej wizyty byłem w stanie uruchomić go w formacie:

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

To już nie działa, ale usunięcie nazwy programisty powoduje:

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

3

Jeśli masz identyfikator sklepu z aplikacjami, najlepiej go użyć. Zwłaszcza jeśli w przyszłości możesz zmienić nazwę aplikacji.

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

Jeśli nie masz identyfikatora sklepu z aplikacjami, możesz utworzyć adres URL na podstawie tej dokumentacji 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;
}

Przechodzi ten 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

Wszystkie odpowiedzi są nieaktualne i nie działają; użyj poniższej metody.

Wszystkie aplikacje programisty:
itms-apps://apps.apple.com/developer/developer-name/developerId

Jedna aplikacja:
itms-apps://itunes.apple.com/app/appId


1

otworzy to App Store bezpośrednio

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

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

0

Wypróbuj w ten sposób

http://itunes.apple.com/lookup?id= „identyfikator aplikacji tutaj” zwraca json. Po tym znajdź klucz „ trackViewUrl ”, a wartością jest żądany adres URL. korzystanie z tego adresu (wystarczy wymienić https://z itms-apps://) .To działa dobrze.

Na przykład jeśli identyfikator aplikacji to xyz, przejdź do tego linku http://itunes.apple.com/lookup?id=xyz

Następnie znajdź adres URL klucza „ trackViewUrl ”. To jest adres URL Twojej aplikacji w App Store i aby użyć tego adresu URL w Xcode, wypróbuj to

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

Dzięki

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.