App Store'daki uygulamalara nasıl bağlanır?


701

İPhone oyunumun ücretsiz bir sürümünü oluşturuyorum. Ücretsiz sürümün içinde, kullanıcıları uygulama mağazasındaki ücretli sürüme götüren bir düğme istiyorum. Standart bir bağlantı kullanırsam

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

iPhone önce Safari'yi ve ardından uygulama mağazasını açar. Doğrudan uygulama mağazasını açan diğer uygulamaları kullandım, bu yüzden mümkün olduğunu biliyorum.

Herhangi bir fikir? Uygulama mağazasının URL Şeması nedir?


1
SWIFT 3.X ve yerelleştirilmiş uygulamalar için bu yanıt yardımcı olabilir: stackoverflow.com/a/41765175/3143890
LukeSideWalker

Yanıtlar:


771

2016-02-02 tarihinde düzenlendi

İOS 6'dan başlayarak SKStoreProductViewController sınıfı tanıtıldı. Bir uygulamayı, uygulamanızdan ayrılmadan bağlayabilirsiniz. Kod bilgi parçacığı Swift 3.x / 2.x ve Objective-C olduğu burada .

Bir SKStoreProductViewController nesne hediyeler kullanıcı App Store'dan diğer medya satın almasına olanak veren bir mağaza. Örneğin, uygulamanız kullanıcının başka bir uygulama satın almasına izin vermek için mağazayı görüntüleyebilir.


Gönderen Haber ve Apple Geliştiriciler İçin Duyuru .

İTunes Bağlantıları ile Müşterileri Doğrudan App Store'daki Uygulamanıza Yönlendirin iTunes bağlantıları ile müşterilerinize App Store'daki uygulamalarınıza doğrudan web sitenizden veya pazarlama kampanyalarınızdan erişmenin kolay bir yolunu sağlayabilirsiniz. İTunes bağlantısı oluşturmak basittir ve müşterileri tek bir uygulamaya, tüm uygulamalarınıza veya şirket adınızın belirtildiği belirli bir uygulamaya yönlendirmek için yapılabilir.

Müşterileri belirli bir uygulamaya göndermek için: http://itunes.com/apps/appname

Müşterileri App Store'da bulunan bir uygulama listesine göndermek için: http://itunes.com/apps/developername

Müşterileri, şirket adınız URL'de bulunan belirli bir uygulamaya göndermek için: http://itunes.com/apps/developername/appname


Ek Notlar:

Yönlendirmelerden kaçınmak http://için itms://veya ile değiştirebilirsiniz itms-apps://.

Not edinitms:// kullanıcıyı gönderecek iTunes mağazası ve itms-apps://hiç gönderme onlarla App Store!

Adlandırma hakkında bilgi için Apple QA1633'e bakın:

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

Düzenleme (Ocak 2015 itibariyle):

itunes.com/apps bağlantıları appstore.com/apps olarak güncellenmelidir. Güncellenmiş olan QA1633'e bakın. Yeni bir QA1629 , mağazayı bir uygulamadan başlatmak için şu adımları ve kodu önerir:

  1. Bilgisayarınızda iTunes'u başlatın.
  2. Bağlanmak istediğiniz öğeyi arayın.
  3. İTunes'ta öğenin adını sağ tıklayın veya kontrol tuşunu basılı tutarak tıklayın, ardından açılır menüden "iTunes Store URL'sini Kopyala" yı seçin.
  4. Uygulamanızda, NSURLkopyalanan iTunes URL'sine sahip bir nesne oluşturun , ardından öğenizi App Store'da açmak için bu nesneyi UIApplication's openURL: yöntemine geçirin.

Basit kod:

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

Hızlı 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
İpucu, http: // yerine itms: // kullanmaktır, o zaman doğrudan uygulama mağazasında açılır. İPhone'da, http kullanılırken 2 (!) Ve itms kullanırken 1 yönlendirmeler yapacak. Eski fobos bağlantılarını kullanırken (yukarıya bakın), 0 yönlendirmeler vardır. Phobos bağlantıları kullanıyorsanız iTunes Connect'teki kimliği kullanın. İkili dahil etmeden bir uygulama göndermeyi seçebilirsiniz. Bu şekilde, gerçek ikili dosyayı göndermeden önce kimliği alırsınız. Bunu denemedim, ama işe yaradığını duydum.
quano

11
Bakınız: developer.apple.com/library/ios/#qa/qa1633/_index.html (Beyaz boşluk kaldırılmalıdır.)
Nathan S.

8
Dışında ... kullanılacak doğru değer appnamenedir? Uygulamanın "Paket Görünen Adı" mı? Büyük / küçük harfe duyarlı değil mi? Boş alanlar nasıl ele alınır?
aroth

14
Bu gerçek bir cihazda test edilmelidir.
Protocole

7
Bu gerçek bir cihazda test edilmelidir, evet! İPad'i takmadan ve orada test etmeden önce yaklaşık bir saat boyunca hiçbir şey olmadı. Geh.
Kalle

361

Bir uygulamayı doğrudan App Store'a açmak istiyorsanız, şunu kullanmalısınız:

itms-uygulamalar: // ...

Bu şekilde, önce iTunes'a gitmek yerine App Store uygulamasını doğrudan cihazda açar, ardından yalnızca App Store'u açar (yalnızca itms: // kullanırken)

Umarım yardımcı olur.


EDIT: NİSAN, 2017. itms-apps: // aslında iOS10'da tekrar çalışıyor. Test ettim.

EDIT: Nisan, 2013. Bu artık iOS5 ve üstü sürümlerde çalışmaz. Sadece kullan

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

ve başka yönlendirme yok.


2
@PEZ Bugünden itibaren, http: // ... kullanırken iki yönlendirme görüyorum. Cevap benim için mükemmel çalışıyor - itms-apps: // ... herhangi bir yönlendirme olmadan doğrudan App Store uygulamasını açar.
Josh Brown

4
Rocotilos, bunun artık çalışmadığından emin misin? Bir bağlantı gönderebilir misiniz?
johndodo

8
İOS'ta. itmsitunes'ı açar. ise itms-appsApp Store'u açar. Kullanıcılardan güncelleme yapmaları isteniyorsa bu önemli bir farktır! (iOS 10)
mcm

2
itms-appsopenURL:iOS 10.2'de App Store uygulamasını benim için açar . Sorun yok gibi görünüyor.
Mayıs 17'de pkamb

1
10.3'ten beri bu yöntem işe yarıyor, ancak 'bu URL'yi uygulama mağazasında aç' ara bir ekran pop-up penceresinden geçmek zorunda mı? Referans: blog.branch.io/…
gabry

51

İOS 6'dan başlayarak SKStoreProductViewController sınıfını kullanarak bunu yapmanın doğru yolu .

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

Uygulamanın itunes öğe tanımlayıcısını şu şekilde alabilirsiniz: (statik yerine)

Hızlı 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")

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

Sen alabilirsiniz kAppITunesItemIdentifier(Uygulamanın itunes öğe tanımlayıcı) şöyle: (yerine statik birinin)

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
hızlı bir şekilde içe aktarmayı ve yetki vermeyi unutmayın: import StoreKit sınıfı RateMeViewController: UIViewController, SKStoreProductViewControllerDelegate {
djdance

Bu yine de çalışır, ancak Git ve Yorum Yaz'ı tıkladığınızda çalışmaz. Üst köşedeki Mağaza düğmesine ve ardından Yorum Yaz'a tıklayın. Herkes bir geçici çözüm biliyor ??
socca1157

"Bir inceleme yazın" başka bir yöntem açmaya çalışır ve muhtemelen zaten modda olduğunuz için başarısız olur. Ancak Apple bunu zorlar. Yani incelemelerin çalışması için uygun bir yol yok gibi görünüyor. bu kavramın tamamını geçersiz kılıyor.
AmitP

Bu json her zaman veri döndürmez ve bazen geri döner. Göndermeden önce uygulama kimliği almak güvenilir değil.
Amber K

41

2015 yazından itibaren ...

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

'id1234567890' yerine 'id' ve 'on haneli numaranızı' yazın

  1. Bu, tüm cihazlarda mükemmel çalışır .

  2. Doğrudan uygulama mağazasına gider , yönlendirmeler yoktur.

  3. Tüm ulusal mağazalar için sorun yok .

  4. Kullanmak için hareket etmeniz gerekir loadProductWithParameters, ancak bağlantının amacı aslında içinde olduğunuz uygulamayı güncellemekse: Bu "eski moda" yaklaşımı kullanmak daha iyidir.


Ayrıca, geliştirici sayfanıza yönlendirmek için (kullanıcıya uygulama kataloğunuzu göstermek istiyorsanız) şunları kullanabilirsiniz: NSString * simple = @ "itms-apps: //itunes.com/apps/YOUR_COMPANY_NAME";
TheBestBigAl

2
Bu kimliği nerede bulabilirim?
mcfly yumuşak

1
2015 yaz ?! Bütün dünya aynı ülkede yaşıyormuş gibi. :(
nacho4d

39

Apple, sadece appstore.com URL'lerini açıkladı.

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

Biri iOS uygulamaları için, diğeri Mac Uygulamaları için olmak üzere iki tür App Store Kısa Bağlantısı vardır:

Şirket Adı

iOS: http://appstore.com/ örneğin, http://appstore.com/apple

Mac: http://appstore.com/mac/ örneğin, http://appstore.com/mac/apple

Uygulama ismi

iOS: http://appstore.com/ örneğin, http://appstore.com/keynote

Mac: http://appstore.com/mac/ örneğin, http://appstore.com/mac/keynote

Şirkete Göre Uygulama

iOS: http://appstore.com/ / örneğin, http://appstore.com/apple/keynote

Mac: http://appstore.com/mac/ / örneğin, http://appstore.com/mac/apple/keynote

Çoğu şirket ve uygulamanın standart bir App Store Kısa Bağlantısı vardır. Bu standart URL, belirli karakterleri değiştirerek veya kaldırarak oluşturulur (birçoğu yasa dışıdır veya bir URL'de özel bir anlamı vardır (örneğin, "&")).

App Store Kısa Bağlantısı oluşturmak için şirketinize veya uygulama adınıza aşağıdaki kuralları uygulayın:

Tüm boşlukları kaldır

Tüm karakterleri küçük harfe dönüştür

Tüm telif hakkı (©), ticari marka (™) ve tescilli marka (®) sembollerini kaldırın

Ve işaretlerini ("&") "ve" ile değiştirin

Çoğu noktalama işaretini kaldırın (set için Liste 2'ye bakın)

Aksanlı ve diğer "süslü" karakterleri (ü, å, vb.) Temel karakterleriyle (u, a, vb.) Değiştirin.

Diğer tüm karakterleri olduğu gibi bırakın.

Liste 2 Kaldırılması gereken noktalama işaretleri.

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

Aşağıda, gerçekleşen dönüşümü gösteren bazı örnekler verilmiştir.

Uygulama mağazası

Şirket Adı örnekleri

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

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

Chen Fotoğrafçılık ve Yazılım => http://appstore.com/chensphotographyandsoftware

Uygulama Adı örnekleri

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

Perry'im nerede? => http://appstore.com/wheresmyperry

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


1
bu aslında en azından mac mağazası için hala güvenilir olan tek şey
Radu Simionescu

Bunu bilmek güzel, ama ne yazık ki iOS'ta bu Safari üzerinden yönlendiriyor (ve çirkin bir "Sunucu Kimliği Doğrulanamıyor" mesajı veriyor).
sudo make install

HAYIR. Bunu okuyun - "Bu App Store Kısa Bağlantıları kolaylık olması açısından sağlanmıştır ve belirli bir uygulama veya şirkete bağlanması garanti edilmez." Yani temelde rastgele verilir.
durazno

30

Bu kod iOS'ta App Store bağlantısını oluşturur

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

Mac'te itms uygulamalarını http ile değiştirin:

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

İOS'ta URL'yi aç:

[[UIApplication sharedApplication] openURL:appStoreURL];

Mac:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];

Bu işe yarar, ancak uygulama adından tire gibi özel karakterleri de kaldırmanız gerekir.
Macondo2Seattle

Teşekkür ederim @ 3 devir ve @BlackRider
Ganesh Guturi

Geliştirici tarafından yüklenen tüm uygulamaları tek bir sayfada açabilir ve gösterebilir miyiz?
İmran

Bu, minimum yönlendirmeler ve uygulama adı boşluğunun maksimum kullanımı ile benim için çalışan tek drop-in çözümüdür.
LordParsley

29

Yönlendirme olmadan doğrudan bir bağlantıya sahip olmak için:

  1. Gerçek doğrudan bağlantıyı almak için iTunes bağlantı oluşturucuyu http://itunes.apple.com/linkmaker/ kullanın
  2. Değiştir http://ileitms-apps://
  3. Bağlantıyı şununla aç: [[UIApplication sharedApplication] openURL:url];

Dikkatli olun, bu bağlantılar simülatörde değil, yalnızca gerçek cihazlarda çalışır.

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


3
İtunes.apple.com/linkmaker için +1, herkes simülatörde olmayan cihazdaki bağlantıyı test eder, test simülatöründe zaman harcıyordum.
karthik

2
Simulator hakkında bilgi için teşekkürler, bunu cevaba ekleyeceğim
dulgan


18

Bu benim için sadece APP ID kullanarak mükemmel çalıştı:

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

Yönlendirme sayısı SIFIR.


13

Bazı yanıtlar 'itms' veya 'itms-apps' kullanmanızı önerir, ancak bu uygulama Apple tarafından özellikle önerilmemektedir. App Store'u açmak için yalnızca aşağıdaki yolu sunarlar:

Liste 1 Bir iOS uygulamasından App Store'u başlatma

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

Bu yanıt için https://developer.apple.com/library/ios/qa/qa1629/_index.html en son Mart 2014 tarihinde güncellenmiştir konusuna bakın .

İOS 6 ve sonraki sürümleri destekleyen uygulamalar için Apple, App Store'u sunmak için bir uygulama içi mekanizma sunar: 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
}];

İOS6'da hata varsa tamamlama bloğunun çağrılmayabileceğini unutmayın. Bu, iOS 7'de çözülen bir hata gibi görünüyor.


12

Bir geliştiricinin uygulamalarına bağlantı vermek istiyorsanız ve geliştiricinin adında noktalama işaretleri veya boşluklar varsa (ör. Development Company, LLC) URL'nizi şu şekilde oluşturun:

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

Aksi takdirde iOS 4.3.3'te "Bu istek işlenemiyor" döndürüyor


1
Bu sizin için işe yaramazsa, aşağıdaki sözdizimini deneyin: itms-apps: //itunes.com/apps/ChuckSmith/id290402113 adımı şirketinizle ve kimliğimi iTunes bağlantısından alabileceğiniz Sanatçı Kimliğinizle değiştirme yapımcısı: itunes.apple.com/linkmaker
Chuck Smith

Ayrıca, bu "özel" karakterleri kodlamayı deneyebilirsiniz - yani "yerine geç". % 2E "ile
Mart'ta wzs

bu kaymakam cevap!
Sam B

11

: Bağlantı makinesi aracılığıyla uygulama mağazası veya iTunes'da belirli öğenin bağlantısını de alabilirsiniz http://itunes.apple.com/linkmaker/


Bu bana yardımcı oluyor, çünkü itunes-connect'ümdeki bağlantı işe yaramadı ve jeneratörde çalışıyor. teşekkür ederim
Dorad

9

Bu ios5'te çalışıyor ve doğrudan bağlantı kuruyor

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

8

Bu, uygulama mağazasındaki mevcut diğer uygulamaları yönlendirmek / bağlamak için basit ve kısa bir yoldur.

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

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

6

Xcode 9.1 ve Swift 4 için:

  1. İthalat Mağazası
import StoreKit

Protokole uyun

SKStoreProductViewControllerDelegate

3. Protokolü uygulayın

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. Nasıl kullanılır:
openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")

Not:

Uygulamanızın tam kimliğini girmek çok önemlidir. Bu hataya neden olduğundan (hata günlüğünü göstermez, ancak bu nedenle hiçbir şey iyi çalışmaz)


1
Aynı şeyi cihazda da yapıyorum. Başarı yok
Andrea Mugnaini

4

İTunes connect'te bir uygulama oluşturursanız, göndermeden önce uygulama kimliğinizi alacağınızı onaylayabilirim.

Bu nedenle ..

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

Bir tedavi çalışır


4

Bir bağlantı oluşturmak, birden fazla işletim sistemini ve birden çok platformu desteklerken karmaşık bir sorun haline gelebilir. Örneğin, WebObjects iOS 7'de (bazıları) desteklenmez, oluşturduğunuz bazı bağlantılar kullanıcının ardından başka bir ülke mağazasını açar.

Size yardımcı olabilecek iLink adlı açık kaynaklı bir kütüphane var.

Bu kütüphanenin avantajları , bağlantıların çalışma zamanında bulunması ve oluşturulmasıdır (kütüphane, uygulama kimliğini ve üzerinde çalıştığı işletim sistemini kontrol eder ve hangi bağlantının oluşturulması gerektiğini bulur). Buradaki en iyi nokta, hatasız ve her zaman işe yarayacak şekilde kullanmadan önce neredeyse hiçbir şeyi yapılandırmanıza gerek kalmamasıdır. Aynı projede çok az hedefiniz varsa harika bir şeydir, bu nedenle hangi uygulama kimliğini veya bağlantısını kullanacağınızı hatırlamanız gerekmez. Mağazada yeni bir sürüm varsa (bu yerleşiktir ve bunu basit bir bayrakla kapatırsanız), kullanıcı kabul ederse doğrudan uygulamanın yükseltme sayfasına yönlendiren bu kitaplık da kullanıcının uygulamayı yükseltmesini ister.

2 kütüphane dosyasını projenize kopyalayın (iLink.h & iLink.m).

AppDelegate.m dosyasında:

#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.
}

ve derecelendirme sayfasını açmak istediğiniz yerde, örneğin şunu kullanın:

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

İLink.h dosyasını aynı dosyaya aktarmayı unutmayın.

Orada tüm kütüphane için çok iyi bir belge ve iPhone ve Mac için örnek projeler var.


4

En az iOS 9 ve üstü

  • Doğrudan App Store'da açın

Bir uygulama

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

Geliştirici uygulamalarının listesi

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

appNamegerekli değil.
DawnSong

4

Apple'ın son belgesine göre kullanmanız gerekiyor

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

veya

SKStoreProductViewController 

Bağlantınızı güncelleyebilir misiniz lütfen? Bu işe yaramazsa oldukça ilginç görünüyor.
Rémy Virin

Bağlantılı belge itms:veya değerinden bahsetmiyor itms-apps:. Bu düzeni kullanan bağlantılar, iOS 12 çalıştıran cihazlarda iyi çalışıyor
Theo

4

Burada bir sürü cevap olmasına rağmen, geliştirici uygulamalarına bağlantı önerilerinin hiçbiri artık çalışmıyor gibi görünüyor.

En son ziyaret ettiğimde, biçimi kullanarak çalışmayı başardım:

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

Bu artık çalışmaz, ancak geliştirici adını kaldırmak şunları yapar:

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

3

App store kimliğiniz varsa bunu en iyi şekilde kullanabilirsiniz. Özellikle gelecekte uygulama adını değiştirebilirseniz.

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

Bu uygulama mağazası kimliğiniz yoksa bu belgeye dayalı bir URL oluşturabilirsiniz 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;
}

Bu testi geçiyor

- (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

Tüm cevaplar güncel değil ve çalışmıyor; aşağıdaki yöntemi kullanın.

Bir geliştiricinin tüm uygulamaları:
itms-apps://apps.apple.com/developer/developer-name/developerId

Tek uygulama:
itms-apps://itunes.apple.com/app/appId


1

App Store'u doğrudan açacak

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

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

0

Bu şekilde dene

http://itunes.apple.com/lookup?id= "burada uygulama kimliğiniz" json döndürür. Bundan sonra, " trackViewUrl " anahtarını bulun ve değer istenen url'dir . (sadece yerine bu URL'yi kullanmak https://ile itms-apps://) .Bu sadece para cezası çalışır.

Örneğin, uygulama kimliğiniz xyz ise, bu bağlantıya gidin http://itunes.apple.com/lookup?id=xyz

Daha sonra " trackViewUrl " anahtarının URL'sini bulun.Bu uygulama mağazasında uygulamanızın URL'sidir ve bu url'yi xcode'da kullanmak için bunu deneyin

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

Teşekkürler

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.