You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何展示带有Done按钮的内嵌iOS App Store的UIViewController?

解决内嵌带Done按钮的App Store页面返回问题

嘿,我之前刚好踩过这个一模一样的坑!你遇到的问题根源在于用UIApplication.shared.open跳转App Store链接的方式——这种操作会直接把用户带到系统的App Store应用或者Safari里,相当于完全离开了你的App进程,所以点击返回自然回到的是那些外部应用,而非你的原App。

要实现带Done按钮、关闭后直接回到原App的内嵌App Store页面,Apple官方提供了合规的解决方案:使用SKStoreProductViewController,这是StoreKit框架里专门用来在App内展示App Store商品页面的组件,自带Done按钮,完全符合Apple的审核规范。

下面是具体的实现步骤:

  • 首先,导入StoreKit框架:

    import StoreKit
    
  • 让你的ViewController遵守SKStoreProductViewControllerDelegate协议,用来处理Done按钮的点击事件:

    class YourViewController: UIViewController, SKStoreProductViewControllerDelegate {
        // 你的现有代码...
    }
    
  • 添加打开内嵌App Store页面的方法,用目标App的ITunes Item ID来加载页面:

    func presentAppStorePage() {
        let storeVC = SKStoreProductViewController()
        storeVC.delegate = self
        
        // 替换成你要展示的App的ITunes Item ID,这里用你提供的375380948
        let productParams = [SKStoreProductParameterITunesItemIdentifier: 375380948]
        
        storeVC.loadProduct(withParameters: productParams) { [weak self] success, error in
            guard success else {
                print("加载App Store页面失败:\(error?.localizedDescription ?? "未知错误")")
                // 加载失败时可以给用户一个提示,比如弹个alert
                let alert = UIAlertController(title: "提示", message: "无法打开App Store页面", preferredStyle: .alert)
                alert.addAction(UIAlertAction(title: "确定", style: .default))
                self?.present(alert, animated: true)
                return
            }
            // 加载成功,present这个VC
            self?.present(storeVC, animated: true)
        }
    }
    
  • 实现代理方法,处理Done按钮的点击,关闭内嵌页面:

    func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
        dismiss(animated: true)
    }
    

这样实现后,用户点击Done按钮就会直接回到你的App里,完全不会出现跳去Safari的问题。而且这种方式是Apple官方推荐的,不用担心审核的问题。

内容的提问来源于stack exchange,提问作者esilver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:28:55