通过按钮打开AppStore

80

你们能帮我把以下代码翻译成Swift吗?

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.apple.com/de/app/x-gift/id839686104?mt=8&uo=4"]];

(还是我必须使用此链接:itms://itunes.apple.com/app/id839686104?)


4
问题寻求作业帮助的必须包括你已经完成的工作摘要以解决问题,并描述你在解决问题时遇到的困难。我知道这不是作业问题,但你仍然需要展示一些尝试过的努力。 - Bryan Chen
16个回答

3

如果您想在应用商店中打开,请使用

 let appstoreUrl =  "https://itunes.apple.com/in/app/myapp-test/id11111111?mt=8"
 UIApplication.shared.openURL(URL(string: appstoreUrl)!)

如果你想在iTunes商店中使用,

  let ituneUrl =  "itms-apps://itunes.apple.com/in/app/myapp-test/id11111111?mt=8"
 UIApplication.shared.openURL(URL(string: ituneUrl)!)

3

SwiftUI

import StoreKit

struct StoreView: UIViewControllerRepresentable {

    let appID: String
 
     
    func makeUIViewController(context: UIViewControllerRepresentableContext<StoreView>) -> SKStoreProductViewController {
        let sKStoreProductViewController = SKStoreProductViewController()
        let parameters = [ SKStoreProductParameterITunesItemIdentifier : appID]
        sKStoreProductViewController.loadProduct(withParameters: parameters)
        return sKStoreProductViewController
    }

    func updateUIViewController(_ uiViewController: SKStoreProductViewController, context: UIViewControllerRepresentableContext<StoreView>) {

    }

}

//如何使用

.sheet(isPresented: $showAppAtStore){
StoreView(appID: "12345678") 
}

如果您想这样做来更新自己的应用程序,然而,在某些版本的iOS中,由于应用程序无法在加载时更新,因此会失败。遗憾。 - Garr Godfrey
2
这将失败 - SKStoreProductViewController 无法嵌入; 在 SwiftUI 中会收到断言崩溃。 - hbk

2

Swift 5

let url = "your app url"
if #available(iOS 10.0, *) {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
 } 
else {
    // Earlier versions 
    if UIApplication.shared.canOpenURL(url as URL) {
        UIApplication.shared.openURL(url as URL)
    }
}

2

针对新版AppStore,只需打开您应用的AppStore链接,并将https协议替换为itms-apps协议即可。 Swift 4示例:

if let url = URL(string: "itms-apps://itunes.apple.com/us/app/my-app/id12345678?ls=1&mt=8") {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

你可以在应用信息页面找到你的应用链接。最初的回答保留不变。

1

对我来说,这些答案中的一个都没有起作用。(Swift 4) 应用程序总是打开iTunes Store而不是AppStore。

我不得不按照苹果的这个Q&A所描述的方式将url更改为"http://appstore.com/%Appname%"。

例如像这样

private let APPSTORE_URL = "https://appstore.com/keynote"
UIApplication.shared.openURL(URL(string: self.APPSTORE_URL)!)

(从应用程序名称中删除空格)


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

Xcode 6.4


5
这与上面的答案完全相同,只是使用了不同的URL。 - Justin Vallely

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