ऐप स्टोर पर ऐप्स से लिंक कैसे करें


700

मैं अपने आईफोन गेम का मुफ्त संस्करण बना रहा हूं। मैं मुफ्त संस्करण के अंदर एक बटन रखना चाहता हूं जो लोगों को ऐप स्टोर में भुगतान किए गए संस्करण में ले जाए। अगर मैं एक मानक लिंक का उपयोग करता हूं

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

iPhone पहले Safari को खोलता है, और फिर ऐप स्टोर को। मैंने अन्य एप्लिकेशन का उपयोग किया है जो सीधे ऐप स्टोर खोलते हैं, इसलिए मुझे पता है कि यह संभव है।

कोई विचार? ऐप स्टोर के लिए URL स्कीम क्या है?


1
SWIFT 3.X और स्थानीय ऐप्स के लिए यह उत्तर मदद कर सकता है: stackoverflow.com/a/41765175/3143890
ल्यूकसाइडवल्कर

जवाबों:


771

2016-02-02 को संपादित

IOS 6 SKStoreProductViewController क्लास से शुरू किया गया था। आप अपने ऐप को छोड़े बिना किसी ऐप को लिंक कर सकते हैं। स्विफ्ट 3.x / 2.x और ऑब्जेक्टिव-सी में कोड स्निपेट है यहाँ

एक SKStoreProductViewController वस्तु प्रस्तुत एक दुकान है कि उपयोगकर्ता एप्लिकेशन स्टोर से अन्य मीडिया खरीद करने के लिए अनुमति देता है। उदाहरण के लिए, आपका ऐप उपयोगकर्ता को किसी अन्य ऐप को खरीदने की अनुमति देने के लिए स्टोर प्रदर्शित कर सकता है।


एप्पल डेवलपर्स के लिए समाचार और घोषणा से

ग्राहकों को सीधे ऐप स्टोर पर अपने ऐप पर सीधे iTunes लिंक के साथ ड्राइव करें iTunes लिंक के साथ आप अपने ग्राहकों को अपनी वेबसाइट या मार्केटिंग अभियानों से सीधे ऐप स्टोर पर पहुंचने के लिए एक आसान तरीका प्रदान कर सकते हैं। आईट्यून्स लिंक बनाना सरल है और ग्राहकों को किसी एक ऐप, आपके सभी ऐप या किसी विशिष्ट ऐप के लिए सीधे आपके द्वारा निर्दिष्ट वेब नाम के साथ निर्देशित किया जा सकता है।

ग्राहकों को एक विशिष्ट एप्लिकेशन पर भेजने के लिए: http://itunes.com/apps/appname

ऐप स्टोर पर आपके पास मौजूद ग्राहकों की सूची भेजने के लिए: http://itunes.com/apps/developername

URL में शामिल आपकी कंपनी के नाम के साथ एक विशिष्ट ऐप पर ग्राहकों को भेजने के लिए: http://itunes.com/apps/developername/appname


अतिरिक्त नोट्स:

आप बदल सकते हैं http://के साथ itms://या itms-apps://से बचने के रीडायरेक्ट करने के लिए।

कृपया ध्यान दें कि itms://उपयोगकर्ता को आईट्यून्स स्टोरitms-apps:// में भेज देगा और उन्हें ऐप स्टोर पर भेज देगा !

नामकरण की जानकारी के लिए, Apple QA1633 देखें:

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

संपादित करें (जनवरी 2015 तक):

itunes.com/apps लिंक को appstore.com/apps पर अपडेट किया जाना चाहिए। ऊपर QA1633 देखें, जिसे अपडेट किया गया है। एक नया QA1629 एक ऐप से स्टोर लॉन्च करने के लिए इन चरणों और कोड का सुझाव देता है:

  1. अपने कंप्यूटर पर iTunes लॉन्च करें।
  2. उस आइटम के लिए खोजें जिसे आप लिंक करना चाहते हैं।
  3. आइट्यून्स में आइटम के नाम पर राइट-क्लिक या कंट्रोल-क्लिक करें, फिर पॉप-अप मेनू से "कॉपी iTunes स्टोर यूआरएल" चुनें।
  4. अपने आवेदन में, एक बनाने NSURLकी नकल की iTunes URL के साथ वस्तु, तो इस वस्तु को पारित UIApplicationकी openURLApp स्टोर में अपने आइटम खोलने के लिए विधि:।

नमूना कोड:

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

स्विफ्ट 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
एक टिप का उपयोग करने के लिए है itms: // के बजाय http: //, तो यह सीधे ऐप स्टोर में खुलेगा। IPhone पर, यह http का उपयोग करते समय 2 (!) रीडायरेक्ट करेगा और 1 itms का उपयोग करते समय। पुराने फ़ोबोस लिंक (ऊपर देखें) का उपयोग करते समय, 0 रीडायरेक्ट होते हैं। अगर फोबोस लिंक का उपयोग कर रहे हों तो आईट्यून्स कनेक्ट से आईडी का उपयोग करें। आप बाइनरी को शामिल किए बिना ऐप सबमिट करना चुन सकते हैं। इस तरह आपको वास्तविक बाइनरी जमा करने से पहले आईडी मिल जाएगी। मैंने यह कोशिश नहीं की है, लेकिन मैंने सुना है कि यह काम करता है।
क्वानो

11
देखें: developer.apple.com/library/ios/#qa/qa1633/_index.html (श्वेत स्थान अभी हटाया जाएगा।)
नाथन एस।

8
सिवाय ... के लिए उपयोग करने के लिए सही मूल्य क्या है appname? क्या यह ऐप का "बंडल प्रदर्शन नाम" है? क्या यह मामला असंवेदनशील है? रिक्त स्थान कैसे संभाले जाते हैं, आदि?
अरथ

14
यह एक वास्तविक डिवाइस पर परीक्षण किया जाना चाहिए।
प्रोटोकॉल

7
यह एक वास्तविक उपकरण पर परीक्षण किया जाना चाहिए, हाँ! मैं iPad में प्लग करने और वहां परीक्षण करने से पहले लगभग एक घंटे तक कुछ नहीं होने से जूझता रहा। Geh।
कलि

361

यदि आप सीधे ऐप स्टोर में एक ऐप खोलना चाहते हैं, तो आपको उपयोग करना चाहिए:

itms-क्षुधा: // ...

इस तरह यह डिवाइस में सीधे ऐप स्टोर ऐप को खोलेगा, पहले आईट्यून्स पर जाने के बजाय, फिर केवल ऐप स्टोर खोलें (जब केवल इट्स का उपयोग कर रहा हो: //)

उम्मीद है की वो मदद करदे।


EDIT: APR, 2017. itms-apps: // वास्तव में iOS10 में फिर से काम करता है। मैंने इसका परीक्षण किया।

EDIT: APR, 2013. यह अब iOS5 और इसके बाद के संस्करण में काम नहीं करता है। महज प्रयोग करें

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

और अधिक रीडायरेक्ट नहीं हैं।


2
@PEZ आज तक, मैं http: // ... का उपयोग करते समय दो रीडायरेक्ट देख रहा हूं ... जवाब मेरे लिए पूरी तरह से काम करता है - itms-apps: // ... सीधे डिवाइस पर ऐप स्टोर ऐप खोलता है, बिना किसी रीडायरेक्ट के।
जोश ब्राउन

4
Rocotilos, क्या आप सुनिश्चित हैं कि यह अब काम नहीं करता है? क्या आप एक लिंक पोस्ट कर सकते हैं?
जॉन्डोडो

8
IOS पर। itmsखुलना। itms-appsएप स्टोर खोलते समय । उपयोगकर्ताओं को अपडेट करने के लिए प्रेरित करने पर यह एक महत्वपूर्ण अंतर है! (iOS 10)
mcm

2
itms-appsopenURL:iOS 10.2 के माध्यम से मेरे लिए ऐप स्टोर ऐप खोलता है । कोई मुद्दा नहीं लगता है।
23 अक्टूबर को pkamb

1
10.3 के बाद से यह तरीका काम करता है, लेकिन इसे इंटरमीडिएट डिस्प्ले पॉपअप 'एप स्टोर के साथ इस URL को खोलें' से गुजरना पड़ता है? संदर्भ: blog.branch.io/…
gabry

51

IOS 6 से शुरू करके इसे SKStoreProductViewController क्लास का उपयोग करके सही तरीके से करना ।

स्विफ्ट 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")

स्विफ्ट 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")

आप एप्लिकेशन के आइट्यून्स आइटम पहचानकर्ता को इस तरह प्राप्त कर सकते हैं: (एक स्थिर के बजाय)

स्विफ्ट 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)

स्विफ्ट 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")

उद्देश्य-सी :

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

आप kAppITunesItemIdentifierइस तरह से (ऐप के आइट्यून्स आइटम पहचानकर्ता) प्राप्त कर सकते हैं : (एक स्थिर के बजाय)

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
UIViewController, SKStoreProductViewControllerDelegate {: आयात StoreKit वर्ग RateMeViewController: स्विफ्ट में आयात करने के लिए और प्रतिनिधि मत भूलना
djdance

यह अभी भी काम करता है, हालांकि जब आप जाएं और समीक्षा लिखें पर क्लिक करें, तो यह काम नहीं करता है। आपको शीर्ष कोने में स्टोर बटन पर क्लिक करना होगा और फिर समीक्षा लिखें पर क्लिक करें। किसी को भी एक समाधान पता है ??
सोका 1157

"एक समीक्षा लिखें" एक और मोडल खोलने की कोशिश करता है और विफल रहता है, शायद इसलिए क्योंकि आप पहले से ही मोडल में प्रस्तुत कर रहे हैं। लेकिन Apple इसे बल देता है। इसलिए लगता है कि समीक्षा कार्य करने का कोई उचित तरीका नहीं है। इस पूरी अवधारणा को प्रस्तुत करना शून्य है।
अमित

उस जीन्स में हमेशा रिटर्निंग डेटा नहीं होता है और रिटर्न कभी-कभी शून्य गिना जाता है। प्रस्तुत करने से पहले ऐप आईडी प्राप्त करने के लिए विश्वसनीय नहीं है।
अंबर के

41

2015 की गर्मियों के लिए ...

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

'id1234567890' को 'id' और 'अपने दस अंकों की संख्या' से बदलें

  1. यह सभी उपकरणों पर पूरी तरह से काम करता है

  2. यह सीधे ऐप स्टोर पर जाता है, कोई रीडायरेक्ट नहीं।

  3. सभी राष्ट्रीय भंडारों के लिए ठीक है ।

  4. यह सच है कि आपको उपयोग करने के लिए स्थानांतरित करना चाहिए loadProductWithParameters, लेकिन यदि लिंक का उद्देश्य आपके द्वारा वास्तव में अंदर मौजूद ऐप को अपडेट करना है: तो संभवतः इस "पुराने जमाने" वाले दृष्टिकोण का उपयोग करना बेहतर है।


इसके अलावा, अपने डेवलपर पृष्ठ पर निर्देशित करने के लिए (यदि आप उपयोगकर्ता को अपने ऐप्स का कैटलॉग दिखाना चाहते हैं), जिसका आप उपयोग कर सकते हैं: NSString * simple = @ "itms-apps: //itunes.com/apps/YOUR_COMPANY_NAME";
TheBestBigAl

2
मुझे यह आईडी कहां मिलेगी?
मीकली सॉफ्ट

1
ग्रीष्मकालीन 2015 ?! जैसे पूरी दुनिया एक ही देश में रहती है। :(
nacho4d

39

Apple ने सिर्फ appstore.com यूआरएल की घोषणा की।

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

तीन प्रकार के ऐप स्टोर हैं लघु लिंक, दो रूपों में, एक iOS ऐप के लिए, दूसरा मैक ऐप के लिए:

कंपनी का नाम

iOS: http://appstore.com/ उदाहरण के लिए, http://appstore.com/apple

मैक: http://appstore.com/mac/ उदाहरण के लिए, http://appstore.com/mac/apple

एप्लिकेशन का नाम

iOS: http://appstore.com/ उदाहरण के लिए, http://appstore.com/keynote

मैक: http://appstore.com/mac/ उदाहरण के लिए, http://appstore.com/mac/keynote

कंपनी द्वारा ऐप

iOS: http://appstore.com/ / उदाहरण के लिए, http://appstore.com/apple/keynote

मैक: http://appstore.com/mac/ / उदाहरण के लिए, http://appstore.com/mac/apple/keynote

ज्यादातर कंपनियों और ऐप्स में एक कैनोनिकल ऐप स्टोर शॉर्ट लिंक होता है। यह कैनोनिकल URL कुछ वर्णों को बदलकर या हटाकर बनाया गया है (जिनमें से कई गैर-कानूनी हैं या URL में विशेष अर्थ हैं (उदाहरण के लिए, "&"))।

एक ऐप स्टोर शॉर्ट लिंक बनाने के लिए, अपनी कंपनी या ऐप के नाम पर निम्नलिखित नियम लागू करें:

सभी व्हाट्सएप को हटा दें

सभी वर्णों को निचले-मामले में कनवर्ट करें

सभी कॉपीराइट (©), ट्रेडमार्क (™) और पंजीकृत चिह्न (®) प्रतीकों को हटा दें

एम्परसेंड्स ("और") को "और" से बदलें

अधिकांश विराम चिह्न निकालें (सेट के लिए सूची 2 देखें)

उनके मौलिक चरित्र (यू, ए, आदि) के साथ उच्चारण और अन्य "सजाए गए" अक्षर (ü, å, आदि) बदलें।

अन्य सभी वर्णों को छोड़ें-जैसा है।

2 विराम चिह्नों की सूची जिन्हें हटाया जाना चाहिए।

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

नीचे दिए गए रूपांतरण को प्रदर्शित करने के लिए कुछ उदाहरण दिए गए हैं।

ऐप स्टोर

कंपनी का नाम उदाहरण

गेमलोफ्ट => http://appstore.com/gameloft

सक्रियण प्रकाशन, इंक => http://appstore.com/activisionpublishinginc

चेन की फोटोग्राफी और सॉफ्टवेयर => http://appstore.com/chensphotographyandsoftware

ऐप का नाम उदाहरण

ओकारिना => http://appstore.com/ocarina

मेरी पेरी कहाँ है? => http://appstore.com/wheresmyperry

ब्रेन चैलेंज ™ => http://appstore.com/brainchallenge


1
यह वास्तव में एकमात्र चीज है जो अभी भी मैक स्टोर के लिए कम से कम विश्वसनीय काम करती है
राडु सिमियोनेस्कु

इसके बारे में जानने के लिए अच्छा है, लेकिन दुर्भाग्य से आईओएस पर यह सफारी के माध्यम से रीडायरेक्ट करता है (और एक बदसूरत "सर्वर सत्यापित नहीं कर सकता" संदेश देता है)।
सूदो

नहीं। इसे पढ़ें - "ये ऐप स्टोर लघु लिंक एक सुविधा के रूप में प्रदान किए गए हैं और किसी विशेष ऐप या कंपनी से लिंक करने की गारंटी नहीं है।" तो मूल रूप से यह बेतरतीब ढंग से दिया जाता है।
दुराज़्नो

30

यह कोड iOS पर ऐप स्टोर लिंक बनाता है

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

मैक पर http के साथ itms-apps बदलें:

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

IOS पर URL खोलें:

[[UIApplication sharedApplication] openURL:appStoreURL];

मैक:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];

यह काम करता है, लेकिन आपको ऐप नाम से डैश जैसे विशेष वर्ण भी निकालने होंगे।
मैकेंडो 2 सिएटल

धन्यवाद @ 3 रेव्स और @ ब्लेक राइडर
गणेश गुटुरी

क्या हम डेवलपर द्वारा अपलोड किए गए सभी ऐप को एक पेज में खोल और दिखा सकते हैं?
इमरान

यह एकमात्र ड्रॉप-इन समाधान था जिसने मेरे लिए न्यूनतम रीडायरेक्ट और ऐप नाम व्हाट्सएप की अधिकतम हैंडलिंग के साथ काम किया।
लॉर्डपर्सले

29

पुनर्निर्देशन के बिना सीधा लिंक होने के लिए:

  1. ITunes लिंक निर्माता का उपयोग करें http://itunes.apple.com/linkmaker/असली प्रत्यक्ष लिंक प्राप्त करने के लिए का
  2. के http://साथ बदलेंitms-apps://
  3. के साथ लिंक खोलें [[UIApplication sharedApplication] openURL:url];

सावधान रहें, वे लिंक केवल वास्तविक उपकरणों पर काम करते हैं, सिम्युलेटर में नहीं।

स्रोत: https://developer.apple.com/library/ios/#qa/qa2008/qa1629.html


3
Itunes.apple.com/linkmaker,everyone के लिए +1 डिवाइस में लिंक का परीक्षण करें सिम्युलेटर में नहीं, मैं सिम्युलेटर परीक्षण में समय बर्बाद कर रहा था।
कार्तिक

2
सिम्युलेटर के बारे में जानकारी के लिए धन्यवाद, मैं इसे उत्तर में
जोड़ूंगा


18

यह मेरे लिए पूरी तरह से केवल एपीपी आईडी का उपयोग करके काम किया है:

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

रीडायरेक्ट की संख्या ZERO है।


13

कई उत्तर 'itms' या 'itms-apps' का उपयोग करने का सुझाव देते हैं, लेकिन यह अभ्यास विशेष रूप से Apple द्वारा अनुशंसित नहीं है। वे केवल ऐप स्टोर खोलने के लिए निम्नलिखित तरीके प्रदान करते हैं:

लिस्टिंग 1 iOS एप्लिकेशन से ऐप स्टोर लॉन्च करना

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

इस उत्तर के रूप में https://developer.apple.com/library/ios/qa/qa1629/_index.html अंतिम अपडेट मार्च, 2014 को देखें ।

IOS 6 और इसके बाद के संस्करण का समर्थन करने वाले ऐप्स के लिए, Apple ऐप स्टोर प्रस्तुत करने के लिए एक इन-ऐप मैकेनिज्म प्रदान करता है: 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
}];

ध्यान दें कि iOS6 पर, त्रुटि होने पर पूर्ण ब्लॉक नहीं कहा जा सकता है। यह एक बग प्रतीत होता है जिसे iOS 7 में हल किया गया था।


12

यदि आप किसी डेवलपर के ऐप्स से लिंक करना चाहते हैं और डेवलपर के नाम में विराम चिह्न या रिक्त स्थान हैं (जैसे विकास कंपनी, LLC) इसके लिए अपना URL बनाएं:

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

अन्यथा यह आईओएस 4.3.3 पर "यह अनुरोध संसाधित नहीं किया जा सकता" देता है


1
यदि यह आपके लिए काम नहीं करता है, तो निम्न सिंटैक्स आज़माएं: itms-apps: //itunes.com/apps/ChuckSmith/id290402113 अपनी कंपनी के साथ अपना नाम और मेरी आईडी को अपने आर्टिस्ट आईडी से बदल दें जो आप आईट्यून्स लिंक से प्राप्त कर सकते हैं निर्माता: itunes.apple.com/linkmaker
स्मिथ

आप उन "विशेष" वर्णों को प्रतिस्थापित करने का प्रयास भी कर सकते हैं - अर्थात प्रतिस्थापित करें। " "% 2E" के साथ
wzs

यह प्रीफेक्ट जवाब है!
सैम बी

11

आप लिंक निर्माता के माध्यम से ऐप स्टोर या आईट्यून्स में एक विशेष आइटम के लिए एक लिंक प्राप्त कर सकते हैं: http://itunes.apple.com/linkmaker/


यह मेरी मदद करता है, क्योंकि मेरे itunes-link में लिंक काम नहीं करता था, और जनरेटर में यह करता है। धन्यवाद
Dorad

9

यह ios5 में काम कर रहा है और सीधे लिंक कर रहा है

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

8

यह ऐप स्टोर पर अन्य मौजूदा एप्लिकेशन को पुनर्निर्देशित / लिंक करने का सरल और संक्षिप्त तरीका है।

 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 और स्विफ्ट 4 के लिए:

  1. आयात करें
import StoreKit

2. प्रोटोकॉल में सुधार करें

SKStoreProductViewControllerDelegate

3. प्रोटोकॉल को लागू करें

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. कैसे इस्तेमाल करे:
openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")

ध्यान दें:

अपने एपीपी की सटीक आईडी दर्ज करना बहुत महत्वपूर्ण है। क्योंकि यह त्रुटि का कारण है (त्रुटि लॉग नहीं दिखाता है, लेकिन इसके कारण कुछ भी ठीक नहीं है)


1
मैं एक ही काम कर रहा हूं, यंत्र पर चल रहा हूं। कोई सफलता नहीं
एंड्रिया मुगनैनी

4

मैं पुष्टि कर सकता हूं कि अगर आप iTunes में कोई ऐप बनाते हैं तो कनेक्ट होने से पहले आपको अपना ऐप आईडी मिल जाता है।

इसलिए ..

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

एक इलाज करता है


4

कई OS और एकाधिक प्लेटफ़ॉर्म का समर्थन करने पर लिंक बनाना एक जटिल मुद्दा बन सकता है। उदाहरण के लिए WebObjects iOS 7 (उनमें से कुछ) पर समर्थित नहीं है, आपके द्वारा बनाए गए कुछ लिंक किसी अन्य देश के स्टोर को खोलेंगे, फिर उपयोगकर्ता आदि।

आईलिंक नाम से एक ओपन सोर्स लाइब्रेरी है जो आपकी मदद कर सकती है।

इस लाइब्रेरी के फायदे यह है कि लिंक मिल जाएंगे और रन टाइम पर बनाए जाएंगे जाएंगे (लाइब्रेरी ऐप आईडी और उस पर चलने वाले ओएस की जांच करेगी और यह पता लगाएगी कि क्या लिंक बनाया जाना चाहिए)। इसमें सबसे अच्छा बिंदु यह है कि आपको इसका उपयोग करने से पहले लगभग किसी भी चीज़ को कॉन्फ़िगर करने की आवश्यकता नहीं है, ताकि यह त्रुटि मुक्त हो और हमेशा काम करेगा। यह बहुत अच्छा है अगर आपके पास एक ही परियोजना पर कुछ लक्ष्य हैं तो आपको यह याद नहीं रखना है कि कौन सी ऐप आईडी या लिंक का उपयोग करना है। यह लाइब्रेरी उपयोगकर्ता को ऐप को अपग्रेड करने के लिए भी प्रेरित करेगी यदि स्टोर पर एक नया संस्करण है (यह में बनाया गया है और आप इसे एक साधारण ध्वज द्वारा बंद कर देते हैं) यदि उपयोगकर्ता सहमत हो तो ऐप के लिए अपग्रेड पेज पर सीधे इंगित करता है।

अपने प्रोजेक्ट के लिए 2 लाइब्रेरी फ़ाइलों को कॉपी करें (iLink.h & iLink.m)।

अपने 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.
}

और उस जगह पर जहां आप उदाहरण के लिए रेटिंग पेज खोलना चाहते हैं:

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

उसी फ़ाइल पर iLink.h आयात करना न भूलें।

वहाँ पूरे पुस्तकालय के लिए एक बहुत अच्छा डॉक्टर है और iPhone और मैक के लिए एक उदाहरण परियोजना है।


4

कम से कम iOS 9 और ऊपर

  • सीधे ऐप स्टोर में खोलें

एक ऐप

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

डेवलपर के ऐप्स की सूची

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

appNameइसकी आवश्यकता नही है।
डॉनसॉन्ग

4

Apple के नवीनतम दस्तावेज़ के अनुसार आपको उपयोग करने की आवश्यकता है

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

या

SKStoreProductViewController 

क्या आप कृपया अपना लिंक अपडेट कर सकते हैं? यह काफी दिलचस्प लगता है अगर यह काम नहीं करेगा।
रेमी वीरिन

लिंक किए गए दस्तावेज़ में उल्लेख नहीं है itms:या itms-apps:। उस योजना का उपयोग करने वाले लिंक iOS 12 पर चलने वाले मेरे उपकरणों पर ठीक काम करते हैं
Theo

4

यहां उत्तरों के भार होने के बावजूद, डेवलपर्स ऐप्स से लिंक करने के लिए कोई भी सुझाव अब काम नहीं करता है।

जब मैंने पिछली बार दौरा किया था तो मैं प्रारूप का उपयोग करके इसे प्राप्त करने में सक्षम था:

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

यह अब काम नहीं करता है, लेकिन डेवलपर नाम हटा रहा है:

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

3

यदि आपके पास ऐप स्टोर आईडी है तो आप इसका उपयोग कर सकते हैं। खासकर यदि आप भविष्य में आवेदन का नाम बदल सकते हैं।

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

यदि आपके पास tha ऐप स्टोर आईडी नहीं है, तो आप इस दस्तावेज़ के आधार पर एक url बना सकते हैं 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;
}

इस परीक्षा को पास करता है

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

सभी उत्तर पुराने हैं और काम नहीं करते हैं; नीचे दी गई विधि का उपयोग करें।

डेवलपर की सभी ऐप्स:
itms-apps://apps.apple.com/developer/developer-name/developerId

एकल ऐप:
itms-apps://itunes.apple.com/app/appId


1

यह सीधे ऐप स्टोर को खोलेगा

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

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

0

इस तरह आजमाएं

http://itunes.apple.com/lookup?id= "आपकी ऐप आईडी यहाँ" वापसी json.From, यह कुंजी " trackViewUrl " ढूंढें और मान वांछित यूआरएल है। इस url का उपयोग करें (बस के https://साथ बदलें itms-apps://)। यह ठीक काम करता है।

उदाहरण के लिए अगर आपकी ऐप आईडी xyz है तो इस लिंक http://itunes.apple.com/lookup?id=xyz पर जाएं

फिर कुंजी " TrackViewUrl " के लिए url ढूंढें । यह ऐप स्टोर में आपके ऐप के लिए url है और इस url को xcode में उपयोग करने का प्रयास करें

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

धन्यवाद

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.