如何在应用商店上链接到应用


700

我正在创建iPhone游戏的免费版本。我想在免费版本中添加一个按钮,将人们带到应用商店中的付费版本。如果我使用标准链接

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
LukeSideWalker

Answers:


771

于2016-02-02编辑

从iOS 6开始,引入了SKStoreProductViewController类。您可以在不离开应用程序的情况下链接应用程序。代码片断在斯威夫特3.X / 2.XObjective-C的就是这里

一个SKStoreProductViewController对象提出了一个商店,允许用户从App Store购买其他媒体。例如,您的应用程序可能会显示商店,以允许用户购买其他应用程序。


摘自Apple开发者的新闻和公告

使用iTunes链接直接将客户吸引到App Store上的应用程序使用iTunes链接,您可以为客户提供一种直接从网站或市场营销活动直接访问App Store上的应用程序的简便方法。创建iTunes链接很简单,可以将客户定向到单个应用程序,所有应用程序或指定公司名称的特定应用程序。

要将客户发送到特定的应用程序:http : //itunes.com/apps/appname

要将客户发送到您在App Store上拥有的应用程序列表,请执行以下操作:http : //itunes.com/apps/developername

要将客户发送到URL中包含您的公司名称的特定应用程序:http : //itunes.com/apps/developername/appname


补充笔记:

您可以替换http://itms://itms-apps://避免重定向。

请注意,itms://将用户发送到iTunes商店,并itms-apps://与它们发送到应用程序商店!

有关命名的信息,请参阅Apple QA1633:

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

编辑(截至2015年1月):

itunes.com/apps链接应更新为appstore.com/apps。请参阅上面的QA1633,该文件已更新。新的QA1629建议了以下步骤和代码,用于从应用程序启动商店:

  1. 在计算机上启动iTunes。
  2. 搜索您要链接的项目。
  3. 右键单击或按住Control键单击iTunes中的项目名称,然后从弹出菜单中选择“复制iTunes Store URL”。
  4. 在您的应用程序中,NSURL使用复制的iTunes URL 创建一个对象,然后将该对象传递给UIApplicationopenURL:方法在App Store中打开您的项目。

样例代码:

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(!)重定向,使用itms时将进行1。使用较旧的phobos链接时(请参见上文),重定向为0。如果使用phobos链接,请使用iTunes Connect中的ID。您可以选择提交应用程序而不包含二进制文件。这样,您将在提交实际的二进制文件之前获取ID。我还没有尝试过,但是我听说它有效。
2010年

11
请参阅:developer.apple.com/library/ios/#qa/qa1633/_index.html(仅应删除空格。)
Nathan S.

8
除了...正确的值是appname什么?是应用程序的“捆绑包显示名称”吗?是否不区分大小写?如何处理空格等?
aroth 2011年

14
这应该在真实设备上进行测试。
Protocole'2

7
应该在真实设备上进行测试,是的!在将iPad插入并在那里进行测试之前,大约一个小时的时间我一直无所事事。GEH。
Kalle 2012年

361

如果要直接在App Store中打开应用程序,则应使用:

itms-apps:// ...

这样,它将直接在设备中打开App Store应用程序,而不是先转到iTunes,然后仅打开App Store(仅使用itms://时)。

希望能有所帮助。


编辑:2017年4月。itms-apps://实际上在iOS10中可以再次使用。我测试了

编辑:2013年4月。这不再适用于iOS5及更高版本。只需使用

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

并且没有更多的重定向。


2
@PEZ到今天为止,使用http:// ...时,我看到了两个重定向。答案对我来说非常好-itms-apps:// ...直接在设备上打开App Store应用程序,没有任何重定向。
乔什·布朗

4
罗科蒂洛,你确定这不再起作用了吗?您可以发布链接吗?
约翰多多

8
在iOS上。 itms打开iTunes。同时itms-apps打开App Store。如果提示用户进行更新,这是一个关键的区别!(iOS 10)
mcm

2
itms-appsopenURL:在iOS 10.2中为我打开App Store应用。似乎没有问题。
pkamb

1
从10.3开始,此方法有效,但必须通过中间显示弹出窗口“使用应用程序商店打开此URL”?参考:blog.branch.io/...
gabry

51

从iOS 6开始,使用SKStoreProductViewController类以正确的方式进行操作。

Swift 5.x

func openStoreProductWithiTunesItemIdentifier(_ identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.present(storeViewController, animated: true, completion: nil)
        }
    }
}
private func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
// Usage:
openStoreProductWithiTunesItemIdentifier("1234567")

Swift 3.x

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.present(storeViewController, animated: true, completion: nil)
        }
    }
}

func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
// Usage:
openStoreProductWithiTunesItemIdentifier(identifier: "13432")

您可以像下面这样获取应用程序的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项目标识符):(而不是静态的)

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
迅速别忘了导入和委托:import StoreKit类RateMeViewController:UIViewController,SKStoreProductViewControllerDelegate {
djdance 2016年

这仍然有效,但是当您单击“撰写评论”时,它将不起作用。您必须单击右上角的“存储”按钮,然后单击“编写评论”。有人知道解决方法吗?
socca1157 '16

“写评论”试图打开另一个模式并失败,可能是因为您已经在模式中演示了。但是苹果公​​司强迫这样做。因此,似乎没有适当的方法可以使评论生效。使整个概念无效。
AmitP

该json并不总是返回数据,有时返回的计数为零。在提交之前获取应用ID不可靠。
Amber K

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
我在哪里可以找到这个编号?
mcfly soft

1
2015年夏天?就像全世界生活在同一个国家一样。:(
nacho4d

39

苹果刚刚宣布了appstore.com网址。

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

App Store短链接共有三种类型,有两种形式,一种用于iOS应用程序,另一种用于Mac应用程序:

公司名

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

大多数公司和应用都有规范的App Store短链接。通过更改或删除某些字符(其中许多字符是非法的或URL中具有特殊含义(例如,“&”))来创建此规范URL。

要创建App Store短链接,请将以下规则应用于您的公司或应用名称:

删除所有空格

将所有字符转换为小写

删除所有版权(©),商标(™)和注册商标(®)符号

用“和”替换与符号(“&”)

删除大多数标点符号(请参见清单2)

将重音符号和其他“装饰”字符(ü,å等)替换为其基本字符(u,a等)

保留所有其他字符不变。

清单2必须删除的标点符号

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

下面是一些示例来演示发生的转换。

应用商店

公司名称示例

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

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

陈的摄影与软件=> http://appstore.com/chensphotographyandsoftware

应用名称示例

陶笛=> http://appstore.com/ocarina

我的佩里在哪里?=> http://appstore.com/wheresmyperry

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


1
这实际上是至少对Mac Store仍然可靠的唯一东西
Radu Simionescu 2015年

很高兴知道这一点,但不幸的是,在iOS上,它会通过Safari重定向(并显示难看的“无法验证服务器身份”消息)。
sudo make install

没有。阅读此内容-“这些App Store短链接是为方便起见而提供的,不能保证链接到特定的应用程序或公司。” 因此,基本上是随机给出的。
durazno

30

此代码在iOS上生成App Store链接

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

在Mac上用http替换itms-apps:

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

在iOS上打开网址:

[[UIApplication sharedApplication] openURL:appStoreURL];

苹果电脑:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];

这可行,但是您还必须从应用程序名称中删除特殊字符,例如破折号。
Macondo2Seattle '04

谢谢@ 3转和@BlackRider
Ganesh Guturi

我们可以在一个页面中打开并显示开发人员上传的所有应用程序吗?
Imran 2014年

这是唯一对我有用的,最小重定向和最大处理应用程序名称空白的嵌入式解决方案。
LordParsley 2015年

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 +1,每个人都在设备中而不是模拟器中测试链接,我在浪费时间测试模拟器。
karthik 2013年

2
感谢有关模拟器的信息,我要添加该答案
dulgan


18

仅使用APP ID,这对我来说非常有效:

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

重定向数为零。


13

许多答案都建议使用“ itms”或“ itms-apps”,但是Apple并没有特别推荐这种做法。他们仅提供以下方式来打开App Store:

清单1 从iOS应用程序启动App Store

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年3月。

对于支持iOS 6及更高版本的应用,Apple提供了一种用于展示App Store的应用内机制: SKStoreProductViewController

- (void)loadProductWithParameters:(NSDictionary *)parameters completionBlock:(void (^)(BOOL result, NSError *error))block;

// Example:
SKStoreProductViewController* spvc = [[SKStoreProductViewController alloc] init];
spvc.delegate = self;
[spvc loadProductWithParameters:@{ SKStoreProductParameterITunesItemIdentifier : @(364709193) } completionBlock:^(BOOL result, NSError *error){ 
    if (error)
        // Show sorry
    else
        // Present spvc
}];

请注意,在iOS6上,如果有错误,则可能不会调用完成块。这似乎是iOS 7中已解决的错误。


12

如果要链接到开发人员的应用程序,并且开发人员的名称带有标点符号或空格(例如,Development Company,LLC),则形成您的URL,如下所示:

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

否则,它在iOS 4.3.3上返回“无法处理此请求”


1
如果这对您不起作用,请尝试以下语法:itms-apps://itunes.com/apps/ChuckSmith/id290402113用您的公司替换我的名字,并用您的iTunes链接中的艺术家ID替换我的ID制造商:itunes.apple.com/linkmaker
Chuck Smith,

您也可以尝试对那些“特殊”字符进行编码-即替换“”。与“%2E”
wzs 2012年

那是完美的答案!
Sam B


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

注意:

输入APP的确切ID非常重要。因为这会导致错误(不显示错误日志,但因此无法正常工作)


1
我正在做同样的事情,在设备上运行。没有成功
Andrea Mugnaini

4

我可以确认,如果您在iTunes connect中创建一个应用程序,则在提交应用程序之前先获取您的应用程序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];

工作请客


4

当支持多个操作系统和多个平台时,创建链接可能会成为一个复杂的问题。例如,iOS 7不支持WebObjects(其中一些),您创建的某些链接会打开另一个国家/地区的商店,然后打开用户的国家/地区。

有一个名为iLink的开源库可以为您提供帮助。

该库的优点是可以在运行时找到并创建链接(该库将检查应用程序ID和正在运行的OS,并确定应创建哪个链接)。最好的一点是,在使用它之前,您几乎不需要配置任何东西,这样就不会出错,并且可以一直工作。如果您在同一项目中只有很少的目标,那也很棒,您不必记住要使用哪个应用程序ID或链接。如果用户同意,该库还将提示用户如果商店中有新版本(已内置,您可以通过简单的标记将其关闭)升级应用程序,则直接指向应用程序的升级页面。

将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的示例项目。


4

至少iOS 9以上

  • 直接在App Store中打开

一个应用

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

开发者应用列表

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

appName没有必要。
DawnSong

4

根据苹果公司的最新文件, 您需要使用

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

要么

SKStoreProductViewController 

您可以更新您的链接吗?如果那不起作用,这似乎很有趣。
雷米·维林(RémyVirin)

链接的文档中没有提及itms:itms-apps:。使用该方案的链接在运行iOS 12的设备上可以正常工作
Theo

4

尽管这里有很多答案,但似乎没有任何链接到开发人员应用程序的建议可以起作用。

上次访问时,我可以使用以下格式进行操作:

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

这不再起作用,但是删除开发人员名称可以:

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

3

如果您拥有应用商店ID,则最好使用它。特别是如果将来您可能会更改应用程序的名称。

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

如果您没有应用商店ID,则可以根据此文档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



0

试试这个

http://itunes.apple.com/lookup?id= “您的应用程序ID”返回json。从此,找到键“ trackViewUrl ”,值是所需的URL。使用这个网址(只需更换https://itms-apps://)。这工作得很好。

例如,如果您的应用程序ID为xyz,则请转到此链接 http://itunes.apple.com/lookup?id=xyz

然后找到键“ trackViewUrl ”的URL。这是您的应用在应用商店中的URL,要在xcode中使用此URL,请尝试以下操作

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

谢谢

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.