2014-09-19 164 views
15

我正在创建一个应用程序,并且我有一个横幅广告宣传我的其他应用程序。这是我的代码:从Swift应用程序启动App Store

var barsButton : UIButton = UIButton(frame: CGRectMake((self.view.bounds.width/2) - 51, self.view.bounds.height - 100, 102, 30)) 
barsButton.setImage(UIImage(named: "Bars Icon 2.png"), forState: .Normal) 
barsButton.addTarget(self, action: "openBarsLink", forControlEvents: UIControlEvents.TouchUpInside) 

func openBarsLink() { 
    var barsLink : String = "itms-apps:https://itunes.apple.com/app/bars/id706081574?mt=8" 
    UIApplication.sharedApplication().openURL(NSURL.URLWithString(barsLink)) 
} 

然而,当用户按下按钮,它只是把他们带到App Store,而不是我的应用程序的特定页面。我究竟做错了什么?

回答

22

你的URL中有太多的协议。从它的架构(或ITMS: - 但我建议第一个选项,以避免重定向) - 摆脱https:所以网址读取你试图打开

itms-apps://itunes.apple.com/app/bars/id706081574

15

只需按照旧的答案,我不能让它工作,所以我在这里发布我的完整的解决方案:

var url = NSURL(string: "itms-apps://itunes.apple.com/app/bars/id706081574") 
if UIApplication.sharedApplication().canOpenURL(url!) { 
    UIApplication.sharedApplication().openURL(url!) 
} 
6

只使用短“ITMS://”。

对于斯威夫特3这是片段:

UIApplication.shared.openURL(URL(string: "itms://itunes.apple.com/app/id" + appStoreAppID)!) 

我希望这可以帮助别人。

干杯。

P.S. @Eric绫一度领先的时候:)

+0

@Eric d,谢谢。然而, 我正在使用XCode 8,beta 3,它只与“shared()” – Sasho 2016-07-29 14:54:22

+0

啊,对不起,我的坏。我很确定这个也改变了。我猜他们没有完成修改API。 :) – Moritz 2016-07-29 14:56:19

3

斯威夫特3 - 的XCode 8.2.1

UIApplication.shared.openURL(URL(string: "itms-apps://itunes.apple.com/app/id" + appStoreAppID)!) 
3

我有这个问题,但是这个代码只是工程上的电话不是模拟器。因此,检查这些代码:

if let url = URL(string: "itms-apps://itunes.apple.com/app/id" + APP_ID), 
    UIApplication.shared.canOpenURL(url){ 
    UIApplication.shared.openURL(url) 
}else{ 
    //Just check it on phone not simulator! 
    print("Can not open") 
} 
+0

很好的呼吁“打开它在真实的设备上”,我以为我疯了。 – thexande 2017-09-19 22:54:58

1

当的OpenURL从iOS的弃用10使用下面的代码:

UIApplication.shared.open((URL(string: "itms://itunes.apple.com/app/" + appStoreAppID)!), options:[:], completionHandler: nil) 
相关问题