我正在创造自己的iPhone游戏的免费版本。我想在免费版本中添加一个按钮,引导用户进入应用商店中的付费版本。如果我使用标准链接
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8
iPhone首先打开Safari,然后打开应用商店。我使用过其他直接打开应用程序商店的应用程序,所以我知道这是可能的。
什么好主意吗?应用商店的URL方案是什么?
我正在创造自己的iPhone游戏的免费版本。我想在免费版本中添加一个按钮,引导用户进入应用商店中的付费版本。如果我使用标准链接
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8
iPhone首先打开Safari,然后打开应用商店。我使用过其他直接打开应用程序商店的应用程序,所以我知道这是可能的。
什么好主意吗?应用商店的URL方案是什么?
当前回答
编辑于2016-02-02
从ios6开始,SKStoreProductViewController类被引入。你可以在不离开你的应用程序的情况下链接一个应用程序。x和Objective-C在这里。
SKStoreProductViewController对象表示一个存储,该存储允许 用户可以从应用商店购买其他媒体。例如,你的应用程序 可能会显示商店以允许用户购买另一款应用。
来自苹果开发者的新闻和公告。
Drive Customers Directly to Your App on the App Store with iTunes Links With iTunes links you can provide your customers with an easy way to access your apps on the App Store directly from your website or marketing campaigns. Creating an iTunes link is simple and can be made to direct customers to either a single app, all your apps, or to a specific app with your company name specified. To send customers to a specific application: http://itunes.com/apps/appname To send customers to a list of apps you have on the App Store: http://itunes.com/apps/developername To send customers to a specific app with your company name included in the URL: http://itunes.com/apps/developername/appname
其他说明:
为了避免重定向,可以将http://替换为itms://或itms-apps://。
请注意,itms://会将用户发送到iTunes商店,itms-apps://会将用户发送到App store !
有关命名的信息,请参见Apple QA1633:
https://developer.apple.com/library/content/qa/qa1633/_index.html。
编辑(截至2015年1月):
Itunes.com/apps链接应更新为appstore.com/apps。见上文QA1633,已更新。新的QA1629建议从应用程序启动商店的步骤和代码:
在你的电脑上启动iTunes。 搜索要链接的项目。 在iTunes中右键单击或控制单击项目名称,然后从弹出菜单中选择“复制iTunes Store URL”。 在你的应用中,用复制的iTunes URL创建一个NSURL对象,然后将这个对象传递给UIApplication的openURL:方法来在App Store中打开你的项目。
示例代码:
NSString *iTunesLink = @"itms://itunes.apple.com/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
iOS10 +:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink] options:@{} completionHandler:nil];
斯威夫特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-apps”,但苹果并没有特别推荐这种做法。他们只提供以下方式打开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及以上版本的应用程序,苹果提供了一种应用内机制来呈现应用程序商店: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上,如果有错误,completion块可能不会被调用。这似乎是一个在iOS 7中解决的错误。
至少iOS 9及以上版本
直接在App Store打开
一个应用程序
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
这对我来说非常有效,只使用APP ID:
NSString *urlString = [NSString stringWithFormat:@"http://itunes.apple.com/app/id%@",YOUR_APP_ID];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
重定向的数量为0。
2015年夏天开始……
-(IBAction)clickedUpdate
{
NSString *simple = @"itms-apps://itunes.apple.com/app/id1234567890";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:simple]];
}
将'id1234567890'替换为'id'和'您的十位数'
这在所有设备上都能完美地工作。 它会直接进入应用商店,没有重定向。 对全国所有商店都是可以的。 的确,你应该转而使用loadProductWithParameters,但如果链接的目的是更新你实际所在的应用程序:使用这种“老式”方法可能更好。