2014-09-19 10 views
15

Tworzę aplikację, a ja mam banner promujący moją drugą aplikację. To jest mój kod:Uruchamianie App Store z aplikacji w 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)) 
} 

Jednak, gdy użytkownik naciśnie przycisk, to po prostu bierze je do App Store, a nie konkretną stronę dla mojej aplikacji. Co ja robię źle?

Odpowiedz

22

Masz zbyt wiele protokołów w swoim adresie URL. Pozbądź https: tak URL czyta

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

1

link próbujesz otworzyć nie jest ważna - usunąć https: schemat od niego (lub itms: - ale proponuję pierwszą opcję, aby uniknąć przekierowania)

15

tylko postępując starszych odpowiedzi nie mogłem pracować, więc tutaj mogę napisać moje kompletne rozwiązania:

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

używać tylko krótkie „itms: //”.

Dla Swift 3 to urywek:

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

Mam nadzieję, że ktoś pomoże.

Pozdrawiam.

P.S. @Eric Aya była przed czasem :)

+0

@Eric D, dzięki. Jednak Używam XCode 8, beta 3 i idzie tylko z "shared()" – Sasho

+0

Ah, przepraszam, moje złe. Byłem całkiem pewien, że ten też się zmienił. Sądzę, że nie są one zakończone, modyfikując interfejsy API. :) – Moritz

3

Swift 3 - XCode 8.2.1

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

miałem ten problem, ale ten kod działa tylko na telefon nie symulator. Więc sprawdzić ten kod:

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

fajne wołanie "otwórz to na prawdziwym urządzeniu", myślałem, że zwariowałem. – thexande

1

Jak OpenURL jest nieaktualna od 10 iOS użycie poniżej kodu:

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