ios تحميل - كيفية الربط بالتطبيقات في متجر التطبيقات




تعليق ماتتحمل (19)

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

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

تطبيق

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

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

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

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

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

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

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


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

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

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

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

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

إذا لم يكن لديك رقم تعريف لمتجر التطبيقات ، يمكنك إنشاء عنوان 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:@"[!¡\"#$%'()*+,-./:;<=>¿[email protected]\\[\\]\\^_`{|}~\\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);
}

بالنسبة لـ Xcode 9.1 و Swift 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")

ملحوظة:

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



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


لقد نجحت في ذلك تمامًا باستخدام معرّف APP فقط:

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

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


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

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

يمكنك الحصول على معرف عنصر 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)

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

الهدف- 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];
}

يمكنك الحصول على kAppITunesItemIdentifier (معرف عنصر itunes الخاص بالتطبيق) على 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]];

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

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

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

نسخ ملفات مكتبة 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 و Mac.


ليكون موجزة خارجى:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/appname"]];

إذا كنت ترغب في إرسال جميع التطبيقات لمطور ، استخدم

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/developername"]];

هذه الأعمال لنظام iOS 4.1

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

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.com/apps/DevelopmentCompanyLLC"]];

وإلا فسيرجع "يتعذر معالجة هذا الطلب" على نظام التشغيل iOS 4.3.3


أعلنت شركة Apple للتو عن عناوين urst appstore.com.

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

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

اسم الشركة

iOS: http://appstore.com/ على سبيل المثال ، http://appstore.com/apple

Mac: http://appstore.com/mac/ على سبيل المثال ، http://appstore.com/mac/apple

اسم التطبيق

iOS: http://appstore.com/ على سبيل المثال ، http://appstore.com/keynote

Mac: http://appstore.com/mac/ على سبيل المثال ، http://appstore.com/mac/keynote

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

iOS: http://appstore.com/ / على سبيل المثال ، http://appstore.com/apple/keynote

Mac: http://appstore.com/mac/ / على سبيل المثال ، http://appstore.com/mac/apple/keynote

تمتلك معظم الشركات والتطبيقات رابطًا أساسيًا لمتجر App Store Short. يتم إنشاء عنوان URL الأساسي هذا بتغيير أحرف معينة أو إزالتها (كثير منها غير قانوني أو له معنى خاص في عنوان URL (على سبيل المثال ، "&")).

لإنشاء رابط قصير لمتجر التطبيقات ، طبق القواعد التالية على اسم شركتك أو تطبيقك:

قم بإزالة كل المسافات البيضاء

تحويل جميع الشخصيات إلى حالة الأحرف الصغيرة

قم بإزالة كافة حقوق النشر (©) والعلامة التجارية (™) ورمز العلامة (®) المسجلة

استبدال علامات العطف ("&") بـ "و"

إزالة معظم علامات الترقيم (راجع القائمة 2 للمجموعة)

استبدل الأحرف المحذوفة وغيرها من الحروف "المزينة" (ü ، å ، إلخ) بأحرفها العنصرية (u ، a ، إلخ).

ترك جميع الشخصيات الأخرى كما هو.

قائمة 2 علامات الترقيم التي يجب إزالتها.

! ¡ "# $٪ '() * +، - / :؛ <=> ¿@ [] ^ _`.؟ {|} ~

فيما يلي بعض الأمثلة لإثبات التحويل الذي يحدث.

متجر التطبيقات

أمثلة عن اسم الشركة

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

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

Chen's Photography & Software => http://appstore.com/chensphotographyandsoftware

أمثلة على أسماء التطبيقات

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

أين بيري الخاص بي؟ => http://appstore.com/wheresmyperry

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


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

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

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

ثم ابحث عن عنوان url للمفتاح " 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]];

شكر


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


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

  1. استخدم رابط رابط iTunes http://itunes.apple.com/linkmaker/ للحصول على الرابط المباشر الحقيقي
  2. استبدال http:// with itms-apps://
  3. افتح الرابط باستخدام [[UIApplication sharedApplication] openURL:url];

كن حذرًا ، هذه الروابط لا تعمل إلا على الأجهزة الفعلية ، وليس في جهاز المحاكاة.

المصدر: https://developer.apple.com/library/ios/#qa/qa2008/qa1629.html


حررت على 2016-02-02

بدءً من iOS 6 تم عرض فئة SKStoreProductViewController . يمكنك ربط تطبيق دون مغادرة تطبيقك. يوجد مقتطف الرمز في Swift 3.x / 2.x و Objective-C here .

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

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

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

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

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

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

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

يمكنك استبدال http:// with 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. انقر بزر الماوس الأيمن أو انقر مع الضغط على مفتاح Control على اسم العنصر في iTunes ، ثم اختر "نسخ عنوان URL لمتجر iTunes" من القائمة المنبثقة.
  4. في التطبيق الخاص بك ، قم بإنشاء كائن NSURL بعنوان URL المنسوخ iTunes ، ثم مرر هذا الكائن إلى openURL : طريقة لفتح العنصر الخاص بك في App Store.

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

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

سويفت 3.0

   let urlStr = "itms://itunes.apple.com/us/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)!)
    }

يمكنني التأكيد على أنه في حالة إنشاء تطبيق في 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];

يعمل علاج


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

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

وإلا فسيرجع "يتعذر معالجة هذا الطلب" على نظام التشغيل iOS 4.3.3


هذا يعمل وربط مباشرة في ios5

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

إليك رمز تنفيذ محاذاة UIButton في الشفرة أيضًا: -

[myButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];




ios objective-c app-store