2014-09-19 24 views
15

Tôi đang tạo ứng dụng và tôi có biểu ngữ quảng bá ứng dụng khác của mình. Đây là mã của tôi:Khởi chạy App Store từ Ứng dụng trong 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)) 
} 

Tuy nhiên, khi người dùng nhấn nút, nó sẽ đưa họ đến App Store chứ không phải trang cụ thể cho ứng dụng của tôi. Tôi đang làm gì sai?

Trả lời

22

Bạn có quá nhiều giao thức trong URL của mình. Thoát khỏi https: nên URL đọc

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

1

liên kết bạn đang cố gắng để mở là không hợp lệ - loại bỏ https: schema từ nó (hoặc itms: - nhưng tôi đề nghị tùy chọn đầu tiên, để tránh chuyển hướng)

15

chỉ cần bằng cách làm theo câu trả lời cũ tôi không thể làm cho nó hoạt, vì vậy ở đây tôi gửi giải pháp hoàn chỉnh của tôi:

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

Sử dụng chỉ là "itms: //" ngắn.

Đối Swift 3 đây là đoạn:

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

Tôi hy vọng điều này sẽ giúp một ai đó.

Chúc mừng.

P.S. @ Eric Aya đã đi trước thời điểm đó :)

+0

@ Eric D, cảm ơn. Tuy nhiên Tôi đang sử dụng XCode 8, beta 3 và nó chỉ đi với "shared()" – Sasho

+0

Ah, xin lỗi, xấu của tôi. Tôi đã khá chắc chắn điều này cũng thay đổi. Tôi đoán họ không hoàn thành việc sửa đổi các API. :) – Moritz

3

Swift 3 - XCode 8.2.1

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

Tôi có vấn đề này nhưng mã này chỉ hoạt động trên điện thoại không Simulator. Vì vậy, kiểm tra mã này:

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

cuộc gọi tốt đẹp cho "mở nó trên một thiết bị thực sự", tôi nghĩ rằng tôi đã phát điên. – thexande

1

Như openURL bị phản đối từ iOS 10 sử dụng mã dưới đây:

UIApplication.shared.open((URL(string: "itms://itunes.apple.com/app/" + appStoreAppID)!), options:[:], completionHandler: nil) 
Các vấn đề liên quan