以编程方式打开Mac应用商店

28

我正在尝试通过编程方式在自定义的Mac应用程序中打开Mac App Store。我从下面的链接开始。

http://itunes.apple.com/us/app/angry-birds/id403961173?mt=12

我尝试了下面的代码,但它打开的是浏览器而不是 Mac 应用商店。

[[NSWorkspace sharedWorkspace] openURL:
 [NSURL URLWithString:@"http://itunes.apple.com/us/app/angry-birds/id403961173?mt=12"]];

你有什么建议可以帮助我完成这个任务吗?

4个回答

69

这种模式的URL可以打开Mac App Store:

macappstore://itunes.apple.com/app/id403961173?mt=12

那么在你的情况下:

[[NSWorkspace sharedWorkspace] openURL:
 [NSURL URLWithString:@"macappstore://itunes.apple.com/app/id403961173?mt=12"]];

将打开 MAS 并加载与 id #403961173(这里是 Angry Birds)相关联的产品页面。

如果只想加载 MAS,而没有特定的产品页面,请使用此 URL:

[[NSWorkspace sharedWorkspace] openURL:
 [NSURL URLWithString:@"macappstore://itunes.apple.com/"]];

1
确实是这样。 :) 它被称为 URI scheme。 ;) 你甚至可以为你的应用程序注册自己的URI scheme,特别适用于整合书签支持。 ;) - Regexident
Regexident,这个方法在沙盒环境下不起作用,你会得到"deny file-write-data /Applications/App Store.app"的错误信息。 - Jiulong Zhao
@DavidL:是的,在Xcode 4.5.2下,那个警告只会在调试阶段出现。 - Jiulong Zhao
很酷;仅仅启动/激活MAS似乎macappstore://甚至只有macappstore:就足够了(至少在OS X 10.8.3)。 - mklement0
有没有一种方法可以使用这种方法打开特定的开发者页面,列出所有开发者的应用程序? - inexcitus
我已经寻找了将近4年的答案,但仍然找不到可行的代码。 - Cezar Wagenheimer

7
如果您只想显示更新页面,可以使用此URL:macappstore://showUpdatesPage

0

这样怎么样:

[[NSWorkspace sharedWorkspace] launchApplication:@"/Applications/App Store.app"]

3
这只会打开MAS,但不能让你选择要用哪个产品页面来打开它。这就是URL scheme发挥作用的地方。 - Regexident
1
如果你想打开App Store里的特定应用程序,那么Regexident的回答更好。 - Marc Abramowitz

0

在UIWebView中打开网页。然后Webview将打开iTunes,或者至少要求打开iTunes。

这可能是针对iPhone的。但无论WebView是为Mac而设计的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接