mat*_*att 688 objective-c app-store ios
我正在创建我的iPhone游戏的免费版本.我希望在免费版本中有一个按钮,可以将人们带到应用商店中的付费版本.如果我使用标准链接
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8
iPhone首先打开Safari,然后打开应用程序商店.我使用过直接打开应用商店的其他应用,所以我知道这是可能的.
有任何想法吗?应用商店的URL方案是什么?
Nat*_* S. 755
编辑于2016-02-02
从iOS 6开始,介绍了SKStoreProductViewController类.您可以在不离开应用的情况下关联应用.在代码片段斯威夫特3.X/2.X和Objective-C的就是这里.
一个SKStoreProductViewController对象提出了一个商店,允许用户从App Store购买其他媒体.例如,您的应用可能会显示商店以允许用户购买其他应用.
使用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://避免重定向.
有关命名的信息,请参阅Apple QA1633:
https://developer.apple.com/library/content/qa/qa1633/_index.html.
编辑(截至2015年1月):
itunes.com/apps链接应更新为appstore.com/apps.见上面的QA1633,已经更新.新的QA1629建议从应用程序启动商店的这些步骤和代码:
itms://使用复制的iTunes URL 创建一个对象,然后将此对象传递给itms-apps://'s NSURL:方法以在App Store中打开您的项目.示例代码:
NSString *iTunesLink = @"itms://itunes.apple.com/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
Run Code Online (Sandbox Code Playgroud)
Swift 3.0
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)!)
}
Run Code Online (Sandbox Code Playgroud)
Gen*_*ode 353
如果要直接在App Store中打开应用程序,则应使用:
ITMS-应用:// ...
这样它将直接在设备中打开App Store应用程序,而不是首先进入iTunes,然后只打开App Store(仅使用itms://时)
希望有所帮助.
编辑:APR,2017.itms-apps://实际上在iOS10中再次运行.我测试了它.
编辑:APR,2013.这不再适用于iOS5及更高版本.只是用
https://itunes.apple.com/app/id378458261
Run Code Online (Sandbox Code Playgroud)
而且没有更多的重定向.
Ram*_*mis 49
从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")
Run Code Online (Sandbox Code Playgroud)
您可以像这样获取应用程序的itunes项标识符:(而不是静态的)
Swift 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)
Run Code Online (Sandbox Code Playgroud)
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")
Run Code Online (Sandbox Code Playgroud)
目标-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];
}
Run Code Online (Sandbox Code Playgroud)
你可以得到
kAppITunesItemIdentifier(app的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]];
Run Code Online (Sandbox Code Playgroud)
Fat*_*tie 41
-(IBAction)clickedUpdate
{
NSString *simple = @"itms-apps://itunes.apple.com/app/id1234567890";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:simple]];
}
Run Code Online (Sandbox Code Playgroud)
将"id1234567890"替换为"id"和"您的十位数"
这适用于所有设备.
它直接进入应用程序商店,没有重定向.
对所有国家商店都可以.
确实你应该转向使用 loadProductWithParameters,但如果链接的目的是更新你实际上在内的应用程序:使用这种"老式"方法可能更好.
Dev*_*v01 36
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 Short Link.此规范URL是通过更改或删除某些字符(其中许多字符是非法的或在URL中具有特殊含义(例如,"&"))来创建的.
要创建App Store短链接,请将以下规则应用于您的公司或应用程序名称:
删除所有空格
将所有字符转换为小写
删除所有版权(©),商标(™)和注册商标(®)符号
用"和"替换&符号("&")
删除大多数标点符号(参见清单2中的集合)
用他们的元素字符(u,a等)替换重音和其他"装饰"字符(ü,å等)
保留所有其他字符.
清单2必须删除的标点字符.
!¡"#$%'()*+, - ./ :; <=>¿@ [] ^ _`{|}〜
以下是一些示例,用于演示发生的转换.
应用商店
公司名称示例
Gameloft => http://appstore.com/gameloft
Activision Publishing,Inc.=> http://appstore.com/activisionpublishinginc
陈的摄影与软件=> http://appstore.com/chensphotographyandsoftware
应用名称示例
Ocarina => http://appstore.com/ocarina
我的佩里在哪里?=> http://appstore.com/wheresmyperry
Brain Challenge™=> http://appstore.com/brainchallenge
Tib*_*abo 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:@""]]];
Run Code Online (Sandbox Code Playgroud)
在Mac上用http替换itms-apps:
NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"http:/itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]];
Run Code Online (Sandbox Code Playgroud)
在iOS上打开网址:
[[UIApplication sharedApplication] openURL:appStoreURL];
Run Code Online (Sandbox Code Playgroud)
苹果电脑:
[[NSWorkspace sharedWorkspace] openURL:appStoreURL];
Run Code Online (Sandbox Code Playgroud)
mat*_*att 28
只需在应用链接中将"itunes"更改为"phobos"即可.
http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8
现在它将直接打开App Store
dul*_*gan 28
要有没有重定向的直接链接:
http://用itms-apps://[[UIApplication sharedApplication] openURL:url];请注意,这些链接仅适用于实际设备,而不适用于模拟器.
资料来源:https://developer.apple.com/library/ios/#qa/qa2008/qa1629.html
Alm*_*bek 18
这对我来说非常适合使用APP ID:
NSString *urlString = [NSString stringWithFormat:@"http://itunes.apple.com/app/id%@",YOUR_APP_ID];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
Run Code Online (Sandbox Code Playgroud)
重定向的数量是ZERO.
Ben*_*ynn 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]];
Run Code Online (Sandbox Code Playgroud)
请参阅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
}];
Run Code Online (Sandbox Code Playgroud)
请注意,在iOS6上,如果有错误,可能无法调用完成块.这似乎是在iOS 7中解决的错误.
And*_*rew 12
如果您想链接到开发人员的应用程序,并且开发人员的名称有标点符号或空格(例如Development Company,LLC),请构建您的URL,如下所示:
itms-apps://itunes.com/apps/DevelopmentCompanyLLC
Run Code Online (Sandbox Code Playgroud)
否则,它会在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]];
Run Code Online (Sandbox Code Playgroud)
所有的答案都过时了,不起作用;使用下面的方法。
开发者的所有应用:
itms-apps://apps.apple.com/developer/developer-name/developerId
单个应用程序:
itms-apps://itunes.apple.com/app/appId
这是在app store上重定向/链接其他现有应用程序的简单方法.
NSString *customURL = @"http://itunes.apple.com/app/id951386316";
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
}
Run Code Online (Sandbox Code Playgroud)
对于Xcode 9.1和Swift 4:
Run Code Online (Sandbox Code Playgroud)import StoreKit
2.符合协议
SKStoreProductViewControllerDelegate
Run Code Online (Sandbox Code Playgroud)
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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
3.1
func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
viewController.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")
注意:
输入APP的确切ID非常重要。因为这会导致错误(不显示错误日志,但因此无法正常工作)
小智 5
我可以确认,如果您在 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];
Run Code Online (Sandbox Code Playgroud)
工作款待
我认为 Apple 为应用链接提供了一个新链接: https : //apps.apple.com/app/id1445530088或https://apps.apple.com/app/{your_app_id }
| 归档时间: |
|
| 查看次数: |
672641 次 |
| 最近记录: |