IOS 应用程序互相跳转

iOS 深度跳转(scheme、universal link) 网上看到这篇文章,觉得可以,这里转载记录一下。 一、前言 首先,我们先来聊一下深度跳转时什么,有哪些方面可以运用。 点击wap页面按钮,唤起对应APP,并且跳转到了相对于的目标页面。比如:微信里浏览商品,点击打开APP,会自动唤起手机里的对应APP,并且会进入到你刚才浏览的商品详情页。 这就是比较直观的:深度跳转 上面的这种情况我们称之为:一键直达(或者一链拉起等,你怎么称呼你开心就好😊) 如果,手机没有安装京东APP,是会先去下载页面,待用户下载完后,点击打开APP依然会跳转到刚 阅读详情

1. 应用场景

  1. 使用第三方用户登录,需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名"

  2. 应用程序推广,网易彩票,设置-推荐应用-有很多应用程序图标
    -如果本机已经安装过,会直接跳转到另外一个应用程序
    -软件的广告,推广结果,后续会有一些列的金钱上的结算

  3. 支付宝,第三方支付,淘宝,电话费充值。。。

2. 要打开本机上的其他应用程序,需要设置schemes,自定义的协议头,可以打开其他的应用程序

设置

步骤

  1. 定义需要跳转到的APP 的scheme
  2. 直接打开对应的scheme

iOS 9.0之前下面代码可以直接打开

之后需要设置一个白名单
在info.plist文件中添加LSApplicationQueriesSchemes 字段 ,是数组类型,将你想要跳转的app的schema加上去

跳转的代码如下:

- (IBAction)openWangyi:(id)sender
{
   // 跳转到其他应用程序
   // schemes: 网易的scheme wangyi
   NSURL *url = [NSURL URLWithString:@"wangyi://view?newsid=201410130001"];

   // 判断本机是否安装了目标程序
   if ([[UIApplication sharedApplication] canOpenURL:url]) {
       [[UIApplication sharedApplication] openURL:url];
   } else {
       NSLog(@"没有安装,可以再给定下载地址,前往");
   }
}

模仿微信

设置自己的url

截屏2020-05-28下午8.43.55.png

设置info.plist

截屏2020-05-28下午8.44.09.png
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
    {
        // 打电话 tel://  发短信  sms:// http://
        // 如果想要跳转到不同的APP , 就是打开对应的 URL(scheme, )
        let url = URL(string: "news://")
        // http: 协议
               // host
               // path
               // query
        
        if UIApplication.shared.canOpenURL(url!)
        {
          print("keyi")
            UIApplication.shared.openURL(url!)
            
        }else
        {
            print("没有安装news")
        }
    }

模仿新闻 设置同微信一样将scheme改一下

跳转到不同的界面

首先在跳转的app里面设置不同的url,

@IBAction func gotoFriend(_ sender: Any)
    {
        let url = URL(string: "weixin://friend?news")
        // http: 协议
               // host
               // path
               // query
        
        if UIApplication.shared.canOpenURL(url!)
        {
            UIApplication.shared.openURL(url!)
            
        }
    }
    @IBAction func gotoMessage(_ sender: Any)
    {
        let url = URL(string: "weixin://message?news")
        // http: 协议
               // host = message
               // path
               // query = news
        
        if UIApplication.shared.canOpenURL(url!)
        {
          print("keyi")
            UIApplication.shared.openURL(url!)
            
        }
    
    }

在被跳转的app的appDelegate里面来进行url的处理,识别host来进行跳转页面

  • app跳转过来会执行下面的方法
//ios 9.0后过期
    func application(_ application: UIApplication, handleOpen url: URL) -> Bool
    {
        print("olde")
        jump(url: url)
    return true
    }
    //ios 9.0之后使用
    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool
    {
        print("xinde")
        jump(url: url)
        
     return true
    }


 func jump(url:URL)
    {
        let query = url.query
        backScheme = query
        guard let host = url.host else
        {
            return
        }
        print(host)
        //获取跟控制器
        let nav = window?.rootViewController as! UINavigationController
       //自动回到跟控制器 防止跳转层数过多
        nav.popToRootViewController(animated: false)
        
        //得到导航控制器分顶层控制器
        let rootVC  = nav.children[0]
        
        
        //根据实际情况跳转
        
        if host == "friend"
        {
            rootVC.performSegue(withIdentifier: "toFriend", sender: nil)
        }
        if host == "message"
        {
            rootVC.performSegue(withIdentifier: "toMessage", sender: nil)
        }
  • 如果需要点击回到原来的app
//delegate里面加一个参数
class AppDelegate: UIResponder, UIApplicationDelegate {

   var window: UIWindow?
   var backScheme : String?


//在需要回去的地方执行下面的方法
    @IBAction func backToAppAction(_ sender: Any)
   {
       let  appDelegate = UIApplication.shared.delegate as! AppDelegate
           let scheme = appDelegate.backScheme
           guard let myScheme = scheme else{ return}
       let url = URL(string: myScheme + "://")

         if UIApplication.shared.canOpenURL(url!)
         {
             UIApplication.shared.openURL(url!)
             
         }else
         {
             print("没有安装news")
         }
   }
iOS开发,两个app之间相互跳转(URL Scheme) iOS开发,两个app之间相互跳转(URL Scheme)并且带有类似于支付宝的回调处理 下面是我的简书地址,大家也可以通过简书向我提问 http://www.jianshu.com/users/e50ecd81ad38/latest_articles 立即下载

相关推荐

ios-app互相跳转通信.zip

两个APP之间相互通信, 前提必须相互持有, 模拟机上必须都运行之后. 添加对方的URL schema 在AppDelegate 中可以接受通信参数传递, 注意参数好像不能传中文 //跳转后调用接受参数(若无参数使用可注释不用) - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { NSString *receText = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"参数:%@ URL:%@",receText, url.absoluteString); return YES; }

IOS应用跳转URL scheme和Universal Links

IOS常见的跳转方式有URL scheme和Universal Links。这两个均可以实现App之间的跳转,以及通过网页实现跳转到对应的App内。通过本文章可以了解到两者的区别和具体的使用方法,以及参数的传递。应对常见的几种跳转需求。

shaobing32的博客 1万+

iOS中使用URL Scheme进行App跳转的教程

主要介绍了iOS中使用URL Scheme进行App跳转的教程,比如在应用内提示安装另一个应用时就以url打开safari然后打开app store那样,需要的朋友可以参考下

一文弄懂iOS应用间跳转的scheme和Universal Links两种方案

iOS应用间跳转,使用scheme还是Universal Links,这里就够了。

Xezun的博客 7669

iOS实现app间跳转功能

本文为大家分享了iOS实现app间跳转功能的具体代码,供大家参考,具体内容如下 我们通过系统的openURL方法,可以从当前的app跳转到其他任意app去,包括系统自带的、以及我们开发的app。 本文模拟A app跳转到 B app A app代码: // A app // ViewController.m // 程序跳转 // // Created by hhg on 15/10/23. // Copyright (c) 2015年 hhg. All rights reserved. // #import ViewController.h @interface ViewControll

告别手动操作!用Python脚本批量处理Siemens NX零件文件(导入/导出/移除参数)

本文详细介绍了如何利用Python脚本实现Siemens NX零件文件的批量处理,包括导入、导出和移除参数等操作。通过NX Open API和Python UF接口,工业设计师可以大幅提升工作效率,告别繁琐的手动操作。文章提供了完整的实战指南,涵盖环境配置、核心功能实现以及性能优化技巧,特别适合需要进行Siemens-NXUG二次开发的工程师参考。

weixin_28222493的博客 261

iOS scheme跳转机制

iOS scheme跳转机制简介注册URL Scheme方法一方法二使用1. 应用A跳转到应用B2. 跳转到指定界面3. 从DemoB返回到DemoA4. 通过URL传参5. 通过网址打开APP 简介 苹果手机中的APP都有一个沙盒,APP就是一个单独个体,信息独立,相互是不可以进行通信的.但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便App之间相互调用而设计的...

qq_30357519的博客 2108

powerdesigner导出sql将name放到comment注释上

【代码】powerdesigner导出sql将name放到comment注释上。

weixin_45947759的博客 1352

「Swift」跳转至第三方App|淘宝、天猫、京东、大众点评

【swift】跳转至淘宝、天猫、京东、大众点评等第三方App的方法汇总

danjiujiaohun的博客 6422

通过arcmap制作的第一张流域图

需要知道,识别河流依次需要填洼,流向,流量,栅格计算器,河流链接,河网分级.通过卫星图确定河流入口,在入口处画一个点,注意不要与其他河流相交。随后是进行对河流的筛选使用con函数,筛选流量大于100的河流。我们使用镶嵌工具-->镶嵌至新栅格 将两个数据合并。填洼后如图,随后进行流向的获得.使用流向工具。首先导入准备好的数据,可见两张图片并非一体。教程参考b站up:爱画地图的boney。惊醒栅格河网矢量化,进行河流分级。输入表面栅格数据,等待后如图。本次制作的是双峰县的流域图。输入流向数据,输出后如图。

pianmian1的博客 2229

FreeRTOS CLI实战:5分钟搞定GD32串口终端移植(附LED控制源码)

本文详细介绍了如何在GD32芯片上快速移植FreeRTOS CLI(Command Line Interface)终端,实现串口交互式调试。通过DMA+空闲中断配置和LED控制命令实战,开发者可在5分钟内构建高效嵌入式调试工具,显著提升现场维护效率。

weixin_28707365的博客 450

iOS开发app间相互跳转以及appStore和系统设置

1.app间相互跳转 (1)两个项目,这里我们暂且说项目A和项目B。 (2)项目A跳转到项目B。 步骤1:打开项目B工程 找到info 目录下的URL Types,点击+号进行添加,然后设置URL schemes。 (3)将项目B的URL schemes 记录下来,以便在项目A中使用。 如图:     (4)回到项目A,在你需要跳转的地方写上: NSURL *url

繁华褪却的博客 1628

自动驾驶仿真(六)—— SIL软件在环仿真测试

自动驾驶仿真六—— SIL软件在环仿真测试1. 在环仿真测试2. SIL软件在环仿真测试2.1 模型配置参数2.2 S function生成实现2.3 结果对比3. 参考学习的书目教材 博主前面的博文已经简要介绍了Carsim、Prescan 与 Simulink 在 “V”型开发流程的一些应用,现今成熟的汽车控制系统软件都是以(Model Based Design,MBD)来开发,它以图形化的方式表达复杂的逻辑、代码可读性、可移植性、开发调试便利程度都大大增强,同时利用成熟的代码生成工具链,也避免了手工代

zhudj08的博客 8654

iOS - (两个APP之间的跳转)

一个程序若要跳到另一个程序。需要在目标程序的plist文件里面修改: 打开info.plist,添加一项URL types 展开URL types,再展开Item0,将Item0下的URL identifier修改为URL Scheme 展开URL Scheme,将Item0的内容修改为 SecondApp(此为跳转的key)         话不多说,下面开始讲解步骤: ...

weixin_33788244的博客 479

Simulink仿真模块 -Scope

如果您将 Scope 模块放在具有锁定链接的库或者锁定的库中,当尝试打开示波器窗口时,Simulink 会显示错误。要显示某个库模块中的内部数据,请为库模块添加一个输出端口,然后将此端口连接到您模型中的 Scope 模块。当您在示波器内可视化多个基于帧的信号时,部分帧大小为 1 的信号采样可能不会显示。当在示波器内可视化多个基于帧的信号时,部分帧大小为 1 的信号采样可能不会显示。如果在仿真开始时波形视图关闭,则当在仿真后打开波形视图时,波形视图将显示附加的输入信号的仿真结果。

jk_101的博客 3792

爬虫反爬:一文掌握 BotBrowser 的原理和使用(能绕过很多验证码的指纹浏览器)

BotBrowser是使用经过修改的Chromium内核(修改Chromium的C++源代码)的隐形浏览器,可靠地绕过Cloudflare、Shape、PerimeterX、Datadome、Akamai、Kasada、hCaptcha和reCAPTCHA。BotBrowser是一个跨平台的自动化工具,它重新定义了web自动化。专为爬虫、RPA(机器人流程自动化)和 Web 测试设计。与 Puppeteer/Selenium 不同,它通过无头模式(Headless)和API 级控制。

数据知道的博客 1万+

两个APP之间实现跳转

已有应用程序 AppStore里面找到应用程序,点击应用程序下面的小三角图标,再选择”复制链接“,就可以获取此应用的链接了。 比如:itunes.apple.com/cn/app/bai-du-wen-kuhd/id483064532?mt=8然后将 https:// 替换为 itms:// 或者 itms-apps://:  itms://itunes.apple.com/gb/a

zhangmiaoping23的专栏 1763

解决Office 365 SMTP问题:C#邮件发送详解

本文介绍了如何在C#中使用Office 365 SMTP服务发送邮件。重点讲解了正确配置SMTP客户端的关键参数:必须使用587端口并启用TLS加密(EnableSsl=true),同时通过NetworkCredential进行身份验证。虽然SmtpClient已不推荐用于新项目,但本文提供的代码示例仍适用于临时项目或系统维护,并建议未来可考虑使用MailKit等现代邮件库。文章还包含了错误处理机制,确保程序健壮性。

2501_90323865的博客 141

电池管家程序内跳转

BOOL isCanOpen =  [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"xinshoubaodian://"]];         if(isCanOpen)         {             [[UIApplication sharedApplication] openUR

沸腾的泪水的专栏 864

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

两个程序之间的跳转机制

一个程序若要跳到另一个程序。需要在目标程序的plist文件里面修改: 打开info.plist,添加一项URL types 展开URL types,再展开Item1,将Item1下的URL identifier修改为URL Scheme 展开URL Scheme,将Item1的内容修改为myapp(此为跳转的key) 然后在原程序里面,要开始跳转的地方,可以为一个button的...

weixin_34128237的博客 126

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

程序间回调

点击一个按钮进行程序间调用,比如A程序想调用B程序,首先在Bc

世界SB来相会 703

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

应用程序互相跳转

应用程序互相跳转 http://mobiledevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html应用程序互相跳转,在目标程序中注册一个scheme, 其他程序调用这个,就可以通过opeURL跳过来了 ...

weixin_30384031的博客 92

app内部打开另一个app

帖子地址 http://www.cocoachina.com/bbs/read.php?tid-11573.html 假如你开发了2个App,怎么从其中一个App打开另一个呢?首先在自己要被打开的app的info.plist中自定义url types.如图所示   然后在另一个app中的响应事件中如此编写代码: NSURL *url = [NSURL URLWi

农家小炒的专栏 921

IOS的Safari浏览器跳转到应用程序和应用程序应用内跳转到手机应用程序

一个Safari跳转到应用程序 1,Safari浏览器跳转到第三方的应用程序,就需要在你的应用程序中定义一个特殊的标示,也就是一个URL协议,TARGETS - >信息 - > URL类型 - >添加一个URL协议 屏幕快照 其中URL方案字段就是你这个APP的特殊标示,而indentifier字段是这个URL协议的标示。(一个APP可以拥有多个URL协议) 下面的两个字段

Lea__DongYang的博客 5907

iOS App跟小程序之间跳转

移动应用拉起小程序是指用户可以通过接入该功能的第三方移动应用(APP)跳转至某一微信小程序的指定页面,完成服务后跳回至原移动应用(APP)。 App和小程序互相跳转: 1)App主动发起小程序卡片分享到微信,微信点击打开小程序,这时的小程序可以打开App。(同行的各位做过分享的应该对这个比较熟悉) 2)App主动发起打开小程序,这时的小程序可以打开App。 目前主要就这两种方式吧,严格来说互相跳转...

weixin_43780747的博客 7665
上一篇: IOS真机调试相关
下一篇: IOS 静态库.a 和.framework
I微微一笑I
博客等级 码龄11年 0粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值