سؤال

أقوم بإنشاء نسخة مجانية من لعبة iPhone الخاصة بي.أريد الحصول على زر داخل الإصدار المجاني ينقل الأشخاص إلى الإصدار المدفوع في متجر التطبيقات.إذا كنت أستخدم رابطًا قياسيًا

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

يفتح iPhone Safari أولاً، ثم متجر التطبيقات.لقد استخدمت تطبيقات أخرى تفتح متجر التطبيقات مباشرةً، لذا أعلم أن ذلك ممكن.

أيه أفكار؟ما هو مخطط URL لمتجر التطبيقات؟

هل كانت مفيدة؟

المحلول

تم تحريره بتاريخ 2016-02-02

بدءًا من iOS 6 SKStoreProductViewController تم تقديم الفصل.يمكنك ربط تطبيق دون مغادرة تطبيقك.مقتطف الكود في سويفت 3.x/2.x و ج موضوعية يكون هنا.

أ SKStoreProductViewController يعرض الكائن متجرًا يسمح للمستخدم بشراء وسائط أخرى من متجر التطبيقات.على سبيل المثال ، قد يعرض تطبيقك المتجر للسماح للمستخدم بشراء تطبيق آخر.


من أخبار وإعلان لمطوري Apple.

دفع العملاء مباشرة إلى تطبيقك على متجر التطبيقات مع روابط iTunes مع روابط iTunes ، يمكنك تزويد عملائك بطريقة سهلة للوصول إلى تطبيقاتك على متجر التطبيقات مباشرة من موقع الويب الخاص بك أو حملات التسويق.يعد إنشاء رابط iTunes بسيطًا ويمكن صنعه لتوجيه العملاء إما إلى تطبيق واحد أو جميع تطبيقاتك أو تطبيق معين مع تحديد اسم شركتك.

لإرسال العملاء إلى تطبيق معين: http://itunes.com/apps/appname

لإرسال العملاء إلى قائمة التطبيقات التي لديك في متجر التطبيقات: http://itunes.com/apps/developername

لإرسال العملاء إلى تطبيق معين مع اسم شركتك المدرجة في عنوان URL: http://itunes.com/apps/developername/appname


ملاحظات إضافية:

يمكنك استبدال http:// مع 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، ثم اختر "نسخ عنوان URL لمتجر iTunes" من القائمة المنبثقة.
  4. في التطبيق الخاص بك، قم بإنشاء NSURL الكائن باستخدام عنوان URL المنسوخ لـ iTunes، ثم قم بتمرير هذا الكائن إليه UIApplication' س openURL:طريقة لفتح العنصر الخاص بك في متجر التطبيقات.

عينة من الرموز:

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

نصائح أخرى

إذا كنت تريد فتح التطبيق مباشرة إلى المتجر، يجب عليك استخدام:

وitms ل-التطبيقات: // ...

وهذه الطريقة أنها ستفتح مباشرة التطبيق المتجر في الجهاز، بدلا من الذهاب الى اي تيونز أولا، ثم فتح فقط المتجر (عند استخدام itms للتو: //)

وعلى أمل أن يساعد.


وتحرير: أبريل، 2017. itms ل-التطبيقات: // في الواقع يعمل من جديد في iOS10. اختبرته.

وتحرير: أبريل، 2013. هذا لم يعد يعمل في iOS5 والإصدارات أعلاه. مجرد استخدام

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

وليس هناك المزيد من الموجهات.

بدءًا من iOS 6، الطريقة الصحيحة للقيام بذلك هي باستخدام SKStoreProductViewController فصل.

سويفت 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")

يمكنك الحصول على معرف عنصر iTunes الخاص بالتطبيق مثل هذا:(بدلا من واحدة ثابتة)

سويفت 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 (معرف عنصر iTunes الخاص بالتطبيق) مثل هذا:(بدلا من واحدة ثابتة)

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

لصيف 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, لكن إذا كان الغرض من الرابط هو تحديث التطبيق الذي أنت فيه بالفعل:ربما يكون من الأفضل استخدام هذا النهج "القديم".

وأبل فقط أعلن appstore.com عناوين المواقع.

https://developer.apple.com/library/ios/ سؤال وجواب / qa1633 / _index.html

<اقتباس فقرة>   

وهناك ثلاثة أنواع من المتجر اختصار الروابط، في شكلين، واحد للدائرة الرقابة الداخلية التطبيقات، وآخر للتطبيقات ماك:

     

اسم الشركة

     

ودائرة الرقابة الداخلية: http://appstore.com/ للحصول على سبيل المثال، <وأ href = "HTTP: // أبستور كوم / تفاحة "يختلط =" noreferrer "> http://appstore.com/apple

     

وماك: http://appstore.com/mac/ للحصول على سبيل المثال، <أ href = على "HTTP : //appstore.com/mac/apple "يختلط =" noreferrer "> http://appstore.com/mac/apple

     

التطبيقات اسم

     

ودائرة الرقابة الداخلية: http://appstore.com/ للحصول على سبيل المثال، <وأ href = "HTTP: // أبستور كوم / الرئيسي "يختلط =" noreferrer "> http://appstore.com/keynote

     

وماك: http://appstore.com/mac/ للحصول على سبيل المثال، <أ href = على "HTTP : //appstore.com/mac/keynote "يختلط =" noreferrer "> http://appstore.com/mac/keynote

     

التطبيقات قبل شركة

     

ودائرة الرقابة الداخلية: http://appstore.com/ / على سبيل المثال، <وأ href = "HTTP: // appstore.com/apple/keynote "يختلط =" noreferrer "> http://appstore.com/apple/keynote

     

وماك: http://appstore.com/mac/ / على سبيل المثال، <وأ href = " http://appstore.com/mac/apple/keynote "يختلط =" noreferrer "> 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

وهذا الرمز يولد رابط المتجر على دائرة الرقابة الداخلية

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

واستبدال itms ل-التطبيقات ب http على نظام التشغيل Mac:

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

وURL فتح في دائرة الرقابة الداخلية:

[[UIApplication sharedApplication] openURL:appStoreURL];

وماك:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];

وببساطة تغيير "اي تيونز" إلى "فوبوس" في الارتباط التطبيق.

http://phobos.apple.com/ أجسام الويب / MZStore.woa / وا / viewSoftware؟ ID = 300136119 & طن متري = 8

والآن فإنه سيتم فتح المتجر مباشرة

للحصول على رابط مباشر بدون إعادة توجيه:

  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

لقد نجح هذا الأمر بشكل مثالي باستخدام معرف التطبيق فقط:

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

عدد عمليات إعادة التوجيه هو صفر.

يقترح عدد من الإجابات استخدام "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.

إذا كنت تريد أن تصل إلى تطبيقات مطور واسم المطور لديها علامات الترقيم أو مسافات (على سبيل المثال شركة تطوير، LLC) تشكيل URL الخاصة بك مثل هذا:

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

وإلا فإنها ترجع "هذا الطلب لا يمكن معالجة" على دائرة الرقابة الداخلية 4.3.3

ويمكنك الحصول على وصلة لعنصر معين في المتجر اي تيونز أو عن طريق صانع الرابط التالي: http://itunes.apple.com/linkmaker/

وهذا هو العمل وربط مباشرة في نظام التشغيل iOS5

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

وهذه هي طريقة بسيطة وقصيرة لإعادة توجيه / وصلة أخرى التطبيقات الموجودة في متجر التطبيقات.

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

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

بالنسبة إلى Xcode 9.1 وSwift 4:

  1. استيراد StoreKit:
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")

ملحوظة:

من المهم جدًا إدخال المعرف الدقيق لتطبيقك.لأن هذا يسبب خطأ (لا يظهر سجل الأخطاء، ولكن لا شيء يعمل بشكل جيد بسبب هذا)

وأستطيع أن أؤكد أنه إذا قمت بإنشاء التطبيق في اي تيونز يوصلك الحصول على هوية التطبيق الخاص بك قبل تقديمه.

لذلك ..

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

ويعمل علاج

قد يصبح إنشاء رابط مشكلة معقدة عند دعم أنظمة تشغيل متعددة وأنظمة أساسية متعددة.على سبيل المثال، WebObjects غير مدعوم على نظام التشغيل iOS 7 (بعضها)، بعض الروابط التي تنشئها ستفتح متجرًا في بلد آخر ثم متجر المستخدم وما إلى ذلك.

هناك مكتبة مفتوحة المصدر تسمى ط ربط يمكن أن تساعدك.

هناك مزايا لهذه المكتبة هي ذلك سيتم العثور على الروابط وإنشائها في وقت التشغيل (ستتحقق المكتبة من معرف التطبيق ونظام التشغيل الذي تعمل عليه وستكتشف الرابط الذي يجب إنشاؤه).أفضل نقطة في هذا هو أنك لا تحتاج إلى تكوين أي شيء تقريبًا قبل استخدامه بحيث يكون خاليًا من الأخطاء وسيعمل دائمًا.يعد هذا أمرًا رائعًا أيضًا إذا كان لديك عدد قليل من الأهداف في نفس المشروع حتى لا تضطر إلى تذكر معرف التطبيق أو الرابط الذي تريد استخدامه.ستطالب هذه المكتبة أيضًا المستخدم بترقية التطبيق إذا كان هناك إصدار جديد في المتجر (هذا مضمن ويمكنك إيقاف تشغيله بعلامة بسيطة) مع الإشارة مباشرةً إلى صفحة ترقية التطبيق إذا وافق المستخدم.

انسخ ملفي المكتبة إلى مشروعك (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 وMac.

على الأقل iOS 9 وما فوق

  • افتح مباشرة في متجر التطبيقات

تطبيق

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

قائمة تطبيقات المطورين

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

ووفقا ل أبل أحدث وثيقة تحتاج إلى استخدام

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

أو

SKStoreProductViewController 

إذا كان لديك معرف المتجر أنك أفضل من استخدامه. خاصة إذا كنت في المستقبل قد تغيير اسم التطبيق.

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

إذا لم يكن لديك ثا المتجر معرف يمكنك إنشاء رابط استنادا إلى هذه الوثائق <لأ href = "https://developer.apple.com/library/ios/qa/qa1633/_index.html" يختلط = "نوفولو"> 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);
}

وعلى الرغم من أن يكون هناك الكثير من الإجابات هنا، فإن أيا من الاقتراحات لربط تطبيقات المطورين يبدو للعمل بعد الآن.

عند آخر زرت كنت قادرا على الحصول على عمل باستخدام الشكل:

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

وهذا لم يعد يعمل، ولكن إزالة اسم المطور يفعل:

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

جرب هذه الطريقة

http://itunes.apple.com/lookup?id="معرف التطبيق الخاص بك هنا" قم بإرجاع json.من هذا، ابحث عن المفتاح "com.trackViewUrl"والقيمة هي عنوان URL المطلوب.استخدم عنوان url هذا (فقط استبدل https:// مع itms-apps://).وهذا يعمل بشكل جيد.

على سبيل المثال، إذا كان معرف التطبيق الخاص بك هو xyz، فانتقل إلى هذا الرابطhttp://itunes.apple.com/lookup?id=xyz

ثم ابحث عن عنوان URL للمفتاح "com.trackViewUrl".هذا هو عنوان 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]];

شكرًا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top