iOS - 跳转App Store下载 app 的两种方式

简介: iOS - 跳转App Store下载 app 的两种方式

一、第 1 种:直接跳转 demo



image.png

image.png

image.png

1.1、Swift 版本

/// 跳转
@objc func click1() {
   let url = URL(string: "itms-apps://itunes.apple.com/app/id 1142110895")
   // 注意: 跳转之前, 可以使用 canOpenURL: 判断是否可以跳转
   if !UIApplication.shared.canOpenURL(url!) {
       // 不能跳转就不要往下执行了
       return
   }
   if #available(iOS 10.0, *) {
       UIApplication.shared.open(url!, options: [:]) { (success) in
           if (success) {
               print("10以后可以跳转url")
           }else{
               print("10以后不能完成跳转")
           }
       }
    } else {
       // Fallback on earlier versions
       let success = UIApplication.shared.openURL(url!)
       if (success) {
           print("10以下可以跳转")
       }else{
           print("10以下不能完成跳转")
       }
    }
}


提示:上面 id429849944 中 id 后面的数字是app的唯一id,我们可以在app store 获取任意一个app的id


image.png

image.png

  • 如果app未上线我们可以登录apple开发者账号,点开自己创建的应用获取app唯一的id


  • 1.2、OC版本


- (void)click1 {
    NSURL *url = [NSURL URLWithString:@"itms-apps://itunes.apple.com/app/id1142110895"];
    if (@available(iOS 10.0, *)){
         [[UIApplication sharedApplication]openURL:url options:@{UIApplicationOpenURLOptionsSourceApplicationKey:@YES} completionHandler:^(BOOL success) {
             if (success) {
                 NSLog(@"10以后可以跳转url");
             }else{
                 NSLog(@"10以后不可以跳转url");
             }
         }];
     }else{
         BOOL success = [[UIApplication sharedApplication]openURL:url];
         if (success) {
              NSLog(@"10以前可以跳转url");
         }else{
              NSLog(@"10以前不可以跳转url");
         }
     }
 }


二、第 2 种: 应用内跳转 demo



image.png

image.png

image.png

  • 2.1、Swift 版本
  • 导入头文件 import StoreKit
  • 添加跳转


@objc func click2() {
  let storeProductVC = StoreKit.SKStoreProductViewController()
  storeProductVC.delegate = self
  let dict = [SKStoreProductParameterITunesItemIdentifier: "1142110895"]
  storeProductVC.loadProduct(withParameters: dict) { (result, error) in
     guard error == nil else {
          return
     }
   }
   present(storeProductVC, animated: true, completion: nil)
}
  • 实现协议回调


extension ViewController: SKStoreProductViewControllerDelegate {
    func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
         viewController.dismiss(animated: true, completion: nil)
    }
}
  • 2.2、OC版本
  • 导入头文件 #import <StoreKit/StoreKit.h>,遵守协议:<SKStoreProductViewControllerDelegate>
  • 添加跳转


//2:实现代理SKStoreProductViewControllerDelegate
SKStoreProductViewController *storeProductViewContorller = [[SKStoreProductViewController alloc] init];
storeProductViewContorller.delegate = self;
//加载一个新的视图展示
[storeProductViewContorller loadProductWithParameters: @{SKStoreProductParameterITunesItemIdentifier : @"1142110895"} completionBlock:^(BOOL result, NSError *error) {
    //回调
    if(error){
         NSLog(@"错误%@",error);
    }else{
        //应用界面
        [self presentViewController:storeProductViewContorller animated:YES completion:nil];
    }
}];
  • 实现协议(取消按钮监听)回调


- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController{
    [self dismissViewControllerAnimated:YES completion:nil];
}


目录
相关文章
|
1月前
|
Web App开发 开发框架 前端开发
移动端window.open跳转链接时,iOS没有反应的问题
【10月更文挑战第9天】在移动端使用 `window.open` 跳转链接时,iOS 可能无响应,原因是 iOS 的安全策略和弹出窗口阻止功能。解决方法包括:确保在用户交互后触发 `window.open`,将目标设置为 `_self`,使用锚点链接模拟跳转,或利用专门的移动端框架。需综合考虑这些方案以优化用户体验。
467 61
|
2月前
|
小程序 开发工具
app跳转微信小程序,使用明文scheme拉起
app跳转微信小程序,使用明文scheme拉起
403 4
|
3月前
|
iOS开发
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
184 0
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
|
3月前
|
开发工具 iOS开发
解决Flutter运行报错Could not run build/ios/iphoneos/Runner.app
解决Flutter运行报错Could not run build/ios/iphoneos/Runner.app
137 2
|
3月前
|
Android开发 iOS开发 C#
Xamarin:用C#打造跨平台移动应用的终极利器——从零开始构建你的第一个iOS与Android通用App,体验前所未有的高效与便捷开发之旅
【8月更文挑战第31天】Xamarin 是一个强大的框架,允许开发者使用单一的 C# 代码库构建高性能的原生移动应用,支持 iOS、Android 和 Windows 平台。作为微软的一部分,Xamarin 充分利用了 .NET 框架的强大功能,提供了丰富的 API 和工具集,简化了跨平台移动应用开发。本文通过一个简单的示例应用介绍了如何使用 Xamarin.Forms 快速创建跨平台应用,包括设置开发环境、定义用户界面和实现按钮点击事件处理逻辑。这个示例展示了 Xamarin.Forms 的基本功能,帮助开发者提高开发效率并实现一致的用户体验。
149 0
|
3月前
|
iOS开发
解决IOS上架App Store后显示语言为英文的问题
解决IOS上架App Store后显示语言为英文的问题
84 0
|
Web App开发 iOS开发 Python
iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示
iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示 本文介绍其简单使用: 第一步:在本地建立一个访问的服务端。   打开本地终端,在本地新建一个文件夹,在该文件夹中存放测试的html页面。    在终端输入一行代码:python -m SimpleHTTPServer   ---第二步:配置环境    打开safari,偏好设置->勾选 "在菜单栏中显示开发菜单",如下图所示。
780 0
|
1月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
109 1
|
4天前
|
安全 数据处理 Swift
深入探索iOS开发中的Swift语言特性
本文旨在为开发者提供对Swift语言在iOS平台开发的深度理解,涵盖从基础语法到高级特性的全面分析。通过具体案例和代码示例,揭示Swift如何简化编程过程、提高代码效率,并促进iOS应用的创新。文章不仅适合初学者作为入门指南,也适合有经验的开发者深化对Swift语言的认识。
19 9
|
4天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。