我正在创建iPhone游戏的免费版本。我希望在免费版本中有一个按钮,可以将人们带到应用商店中的付费版本。如果我使用标准链接
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8
iPhone首先打开Safari,然后是应用程序商店。我已经使用了其他直接打开应用程序商店的应用程序,所以我知道它是可能的。
有什么想法吗?应用商店的URL方案是什么?
答案 0 :(得分:737)
编辑于2016-02-02
从iOS 6 SKStoreProductViewController类开始介绍。您可以在不离开应用的情况下关联应用。 Swift 3.x / 2.x 和 Objective-C 中的代码段为here。
SKStoreProductViewController对象提供允许存储的商店 用户从App Store购买其他媒体。例如,您的应用 可能会显示商店以允许用户购买另一个应用程序。
来自News and Announcement For Apple Developers。
直接将客户引导至您的应用 在App Store上使用iTunes链接 使用iTunes链接,您可以提供 客户可以轻松访问 您的应用程序直接在App Store上 来自您的网站或营销 活动。创建iTunes链接是 简单,可以直接 客户要么是一个应用程序,所有 您的应用,或与特定的应用程序 指定了您的公司名称。
向客户发送具体信息 应用: http://itunes.com/apps/appname
发送 客户到您拥有的应用程序列表 在App Store上: http://itunes.com/apps/developername
将客户发送到特定应用 将您的公司名称包含在 网址: http://itunes.com/apps/developername/appname
附加说明:
您可以将http://
替换为itms://
或itms-apps://
以避免重定向。
有关命名的信息,请参阅Apple QA1633:
https://developer.apple.com/library/content/qa/qa1633/_index.html
编辑(截至2015年1月):
itunes.com/apps链接应更新为appstore.com/apps。见上面的QA1633,已经更新。新的QA1629建议了从应用启动商店的步骤和代码:
NSURL
对象,然后将此对象传递给UIApplication
的{{1}}:方法以在App Store中打开您的项目。< / LI>
醇>
示例代码:
openURL
Swift 3.0
NSString *iTunesLink = @"itms://itunes.apple.com/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
答案 1 :(得分:341)
如果您想直接在App Store中打开应用程序,请使用:
ITMS的应用程式:// ...
这样它会直接打开设备中的App Store应用程序,而不是先打开iTunes,然后只打开App Store(只使用itms://)
希望有所帮助。
编辑:APR,2017年。 itms-apps://实际上在iOS10中再次运行。我测试了它。
编辑:APR,2013年。 这不再适用于iOS5及更高版本。只需使用
https://itunes.apple.com/app/id378458261
并且没有更多重定向。
答案 2 :(得分:33)
Apple刚刚宣布了appstore.com网址。
https://developer.apple.com/library/ios/qa/qa1633/_index.html
有三种类型的App Store短链接,有两种形式,一种用于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短链接。此规范URL是通过更改或删除某些字符(其中许多字符非法或在URL中具有特殊含义(例如“&amp;”))来创建的。
要创建App Store短链接,请将以下规则应用于您的公司或应用程序名称:
删除所有空格
将所有字符转换为小写
删除所有版权(©),商标(™)和注册商标(®)符号
用“和”
替换&符号(“&amp;”)删除大多数标点符号(参见清单2中的集合)
将重音和其他“装饰”字符(ü,å等)替换为其元素字符(u,a等)
保留所有其他字符。
清单2必须删除的标点符号。
!¡“#$%'()* +, - /:;?&LT; =&GT;¿@ [] ^ _`{|}〜
以下是一些示例,用于演示发生的转换。
App Store
公司名称示例
Gameloft =&gt; http://appstore.com/gameloft
Activision Publishing,Inc。=&gt; http://appstore.com/activisionpublishinginc
陈的摄影&amp;软件=&gt; http://appstore.com/chensphotographyandsoftware
应用名称示例
Ocarina =&gt; http://appstore.com/ocarina
我的佩里在哪里? =&GT; http://appstore.com/wheresmyperry
Brain Challenge™=&gt; http://appstore.com/brainchallenge
答案 3 :(得分: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];
的Mac:
[[NSWorkspace sharedWorkspace] openURL:appStoreURL];
答案 4 :(得分:28)
只需在应用链接中将'itunes'更改为'phobos'即可。
http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8
现在它将直接打开App Store
答案 5 :(得分:26)
拥有没有重定向的直接链接:
http://
替换为itms-apps://
[[UIApplication sharedApplication] openURL:url];
请注意,这些链接仅适用于实际设备,而不适用于模拟器。
来源:https://developer.apple.com/library/ios/#qa/qa2008/qa1629.html
答案 6 :(得分:17)
这对我来说非常适合使用APP ID:
NSString *urlString = [NSString stringWithFormat:@"http://itunes.apple.com/app/id%@",YOUR_APP_ID];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
重定向的数量为零。
答案 7 :(得分:13)
许多答案建议使用&#39; itms&#39;或者&#39; itms-apps&#39;但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]];
有关此答案,请参阅2014年3月更新的https://developer.apple.com/library/ios/qa/qa1629/_index.html。
对于支持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中解决的错误。
答案 8 :(得分:12)
如果您想链接到开发者的应用,并且开发人员的名称有标点符号或空格(例如开发公司,LLC),请构成您的网址:
itms-apps://itunes.com/apps/DevelopmentCompanyLLC
否则,它会在iOS 4.3.3上返回“此请求无法处理”
答案 9 :(得分:11)
您可以通过以下链接制作商获取指向应用商店或iTunes中特定商品的链接: http://itunes.apple.com/linkmaker/
答案 10 :(得分:9)
这在ios5中正常工作并直接链接
NSString *iTunesLink = @"http://itunes.apple.com/app/baseball-stats-tracker-touch/id490256272?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
答案 11 :(得分:8)
这是在app store上重定向/链接其他现有应用程序的简单方法。
NSString *customURL = @"http://itunes.apple.com/app/id951386316";
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
}
答案 12 :(得分:5)
对于Xcode 9.1和Swift 4:
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)
}
openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")
注意:
输入您的APP的确切ID非常重要。因为这会导致错误(不显示错误日志,但因此没有任何效果)
答案 13 :(得分:4)
我可以确认,如果您在iTunes中创建应用,则会在提交之前获得应用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];
运作一种享受
答案 14 :(得分:4)
所有答案都已过时,无法使用;使用以下方法。
开发人员的所有应用:
itms-apps://apps.apple.com/developer/developer-name/developerId
单个应用:
itms-apps://itunes.apple.com/app/appId
答案 15 :(得分:4)
itms-apps://itunes.apple.com/app/[appName]/[appID]
itms-apps://itunes.apple.com/developer/[developerName]/[developerID]
答案 16 :(得分:4)
在支持多个操作系统和多个平台时,创建链接可能会成为一个复杂的问题。例如,iOS 7(其中一些)不支持WebObjects,您创建的某些链接将打开另一个国家/地区商店,然后是用户等。
有一个名为iLink的开源库可以帮助您。
这个库的优点是可以在运行时找到并创建链接(库会检查应用程序ID及其运行的操作系统,并找出应该是什么链接创建)。最好的一点是,在使用它之前不需要配置几乎任何东西,这样就没有错误,并且总能正常工作。如果您在同一个项目中的目标很少,那么这也很棒,因此您不必记住要使用的应用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的示例项目。
答案 17 :(得分:2)
如果您拥有应用商店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);
}
答案 18 :(得分:2)
根据Apple's latest document 你需要使用
appStoreLink = "https://itunes.apple.com/us/app/apple-store/id375380948?mt=8"
或
SKStoreProductViewController
答案 19 :(得分:2)
尽管这里有很多答案,但有关链接到开发人员应用程序的任何建议似乎都不再起作用。
上次访问时,我可以使用以下格式进行工作:
itms-apps://itunes.apple.com/developer/developer-name/id123456789
这不再起作用,但是删除开发人员名称可以:
itms-apps://itunes.apple.com/developer/id123456789
答案 20 :(得分:2)
我认为Apple为该应用程序链接提供了一个新链接: https://apps.apple.com/app/id1445530088或https://apps.apple.com/app/ {your_app_id}
答案 21 :(得分:1)
它将直接打开App Store
NSString *iTunesLink = @"itms-apps://itunes.apple.com/app/ebl-
skybanking/id1171655193?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
答案 22 :(得分:0)
试试这种方式
http://itunes.apple.com/lookup?id=“您的应用ID在这里”返回json。从此,找到键“ trackViewUrl ”,值是所需的网址。使用此网址(只需将https://
替换为itms-apps://
)。这样就可以了。
例如,如果您的应用ID是xyz,请转到此链接 http://itunes.apple.com/lookup?id=xyz
然后找到关键字“ trackViewUrl ”的网址。这是您的应用商店应用的网址,并在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]];
由于