Запуск App Store из приложения в Swift
Я создаю приложение, и у меня есть баннер, который продвигает мое другое приложение. Вот мой код:
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))
}
Однако, когда пользователь нажимает кнопку, он просто переносит их в магазин приложений, а не на конкретную страницу для моего приложения. Что я делаю не так?
8 ответов:
В вашем URL-адресе слишком много протоколов. Избавьтесь от
https:
, чтобы URL-адрес читался
itms-apps://itunes.apple.com/app/bars/id706081574
Просто следуя старым ответам, я не смог заставить его работать, поэтому здесь я публикую свое полное решение:
var url = NSURL(string: "itms-apps://itunes.apple.com/app/bars/id706081574") if UIApplication.sharedApplication().canOpenURL(url!) { UIApplication.sharedApplication().openURL(url!) }
Используйте только короткое " itms://".
Для Swift 3 это фрагмент:
UIApplication.shared.openURL(URL(string: "itms://itunes.apple.com/app/id" + appStoreAppID)!)
Я надеюсь, что это кому-то поможет.
Ура.
P.S. @Эрик Айя опередил время:)
Swift 3-XCode 8.2.1
UIApplication.shared.openURL(URL(string: "itms-apps://itunes.apple.com/app/id" + appStoreAppID)!)
У меня была такая проблема, но этот код просто работает на телефоне, а не на симуляторе. Поэтому проверьте этот код:
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") }
Просто вы можете использовать эти функции в структуре утилиты для goto app страницы в app store также вы можете goto rate app просмотреть напрямую:
static func gotoApp(appID: String, completion: ((_ success: Bool)->())? = nil) { let appUrl = "itms-apps://itunes.apple.com/app/id\(appID)" gotoURL(string: appUrl, completion: completion) } static func rateApp(appId: String, completion: ((_ success: Bool)->())? = nil) { //let appUrl = "itms-apps://itunes.apple.com/app/" + appId let appUrl = "https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=\(appId)&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8" //TODO: use &action=write-review for opening review directly print("app review URL: ", appUrl) gotoURL(string: appUrl, completion: completion) } static func gotoURL(string: String, completion: ((_ success: Bool)->())? = nil) { print("gotoURL: ", string) guard let url = URL(string: string) else { print("gotoURL: invalid url", string) completion?(false) return } if #available(iOS 10, *) { UIApplication.shared.open(url, options: [:], completionHandler: completion) } else { completion?(UIApplication.shared.openURL(url)) } }