1、APP跳转

2、APP功能跳转

3、系统功能跳转

1、APP跳转

  1、被打开方

    设置APP的URL Types(设置位置在 “项目 - TARGETS - APP icon - info - (拉到最下)URL Types ”)。

      URL Schemes:填上,你要给其他应用调用的URL地址(自定义)。并让其他调用者知道。

               如果是第三方分享,需要向 第三方开发者平台 申请(让其定义)。

               所以,一个APP有多个URL Schemes,可能会和别的APP重名情况。

  2、打开方

    比如打开微信:

      1)、设置微信白名单

        info.plist

          LSApplicationQueriesSchemes :

            item : weixin

      2)、打开APP

    // 判断是否能打开(有安装)if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"weixin://"]]) {// 再打开[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"weixin://"] options:@{} completionHandler:nil];}else{// 提示:请先安装 xx 客户端。}

    

      同理,如果,在“1、”设置了URL Schemes,别人要打开你的APP,1)需要知道你APP的URL Schemes;2)对方设置了你APP白名单。

2、APP功能跳转

  比如,打开微信扫描二维码功能(17-12-20测试,还可用):

    // 判断是否能打开(有安装)if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"weixin://"]]) {// 再打开[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"weixin://scanqrcode"] options:@{} completionHandler:nil];}else{// 提示:请先安装 xx 客户端。}

  

  被打开方:

    1、要在 AppDelegate.m 实现代理方法,并对 url 合法性、对方APP Bundle ID(可选),进行判断。

// 已废弃(适配),NS_DEPRECATED_IOS(4_2, 9_0)
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{NSLog(@"Wait Open Url = %@",url);NSLog(@"Form APP Bundle ID = %@",sourceApplication);return YES;
}// 新方法,NS_AVAILABLE_IOS(9_0);
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{}

    2、传值:如类似分享到朋友圈,用支付宝APP登录淘宝APP功能。

        可自定义 URL Schemes 传值通信格式,如:cnblogs_leonlincq://login:username=leonlincq&password=leonlincq 。

    3、功能使用完,如需进行回调,同理,用“1、APP跳转”。

      因为,被打开,只知道对方的Bundle ID,不知道对方的URL Schemes。

        1)、被打开方,可制定规则,如每次打开,可类似“2、传值”把打开方的 URL Schemes 传过来。

        2)、不过上面还是无法解决URL Schemes重名情况,所以这就是需要向微信申请开发者的原因。让其给你设置不重名的 URL Schemes 。

    备注:

    1、曲线方法:如知道“微信朋友圈”URL Schemes,不用安装SDK,不用向微信申请开发者。也可以直接打开调用。像上面打开“扫一扫”例子。

            不过,无法回调,用户体验差一点,且因为对方URL Schemes是私有的,随时可能会更改。

  

      

3、系统功能跳转

  1、通用,没被苹果不断修改:

    1)、拨打电话:

      @"tel://xxxx-xxxxxxxx"(区号-座机号)

      @"tel://xxxxxxxxxxxx"(区号座机号)

      @"tel://13xxxxxxxxx"(手机电话)

    2)、发送短息

      @"sms://13xxxxxxxxx"(收方手机号)

    3)、用Safari打开页面

      @"http://google.com"(直接给网址)

    4)、打开苹果商店

      @"itms-apps://xxx"(把https替换掉就行)

  2、不通用,不断被苹果修改:

    iOS 11 ,只能打开

      1、手机设置(@"App-Prefs:"),无法跳到子页面。

      2、APP隐私设置(UIApplicationOpenSettingsURLString),如曾经用户拒绝 蜂窝网络、定位 ,可直接跳到当页,让用户再设置。

    iOS 10,能打开(是否iOS 10都能打开,还是只支持前面10.x的几个版本,没去试)

      通过(@"App-Prefs:root=General&path=About" )格式打开。

      @"App-Prefs:root=xxx&path=xxx"这类url,网上有很多,如要做适配低版本,提高用户体验,再去网上搜,这里不做记录。

      毕竟,是被淘汰掉的,随着新机iOS版本越高,就不需要再适配了。

    再早(只做了解)

      通过(@"prefs:root=General&path=About")格式打开

    url打开方法:

    比如,下面写法,

      iOS 11,只能跳到 系统设置 页面。

      iOS 10,可以跳到 通用 - 关于本机 页面

    NSURL *url = [NSURL URLWithString:@"App-Prefs:root=General&path=About"];if ([[UIApplication sharedApplication] canOpenURL:url]){if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) {// iOS 10后的方法[[UIApplication sharedApplication] openURL:url options:@{}completionHandler:nil];}else {// iOS 10前的方法[[UIApplication sharedApplication] openURL:url];}}

  

转载于:https://www.cnblogs.com/leonlincq/p/8067013.html

iOS:URL Scheme(完结)(18-1-3更)相关推荐

  1. (0089)iOS开发之iOS应用间相互跳转(URL Scheme)

    需求:假设有应用A和应用B两个应用,现在需要从应用A跳转到应用B中.如果手机中没有安装跳到下载页,如果已经安装直接打开APP. 认识URL Scheme URL Schemes是苹果给出的用来跳转到系 ...

  2. Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装

    Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装 在移动应用开发中,经常需要判断一个app是否安装,iOS中有什么方式可以判断app是否安装呢? 这里介绍通过Url Sch ...

  3. 【iOS开发】—— 通过URL Scheme调用外部地图软件

    写项目时,涉及到一个导航到球馆的功能,可以选择在app里加一个地图,但是这个方案接入要一定的时间,还会增加APP的内存占用:所以我选择了通过URL Scheme去调用手机已安装的导航软件来进行导航,这 ...

  4. ios中设置URL Scheme及如何跳转到其他APP中

    URL Scheme的作用 我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的.但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便 ...

  5. android,ios配置scheme,react-native获取url

    scheme协议定义 scheme 是一种页面之间跳转的协议,不仅可以用于app之间进行跳转,还可以用于 H5 页面跳转到app页面. 通过scheme协议,服务器可以定制化告诉App跳转那个页面,可 ...

  6. 设置IOS平台和Android平台APP的URL Scheme

    URL Scheme的作用 APP可以向手机操作系统注册一个 URL scheme,该 scheme 用于从浏览器或其他应用中启动本应用. 设置IOS平台的URL Scheme IOS应用在info. ...

  7. iOS app url scheme跳转到淘宝商品详情页 唤醒app

    最近涉及的一个业务,在app内的一个广告,点击打开webView,加载的是一个淘宝商品详情页,效果是打开该webView自动跳转至淘宝对应的页面,同时在自己的app仍然加载页面,点击评论等也同样能跳转 ...

  8. iOS 通过URL Scheme跳转到常用的App

    微博开放的接口是最多的(在网上找了个遍) 打开微博: sinaweibo:// 打开微博个人主页: sinaweibo://userinfo?uid=xxxxxxxxx 打开具体某一条微博: sina ...

  9. 【iOS】—— URL Scheme

    URL Scheme URL Scheme是一个非常炫酷的东西,用法很简单,在我们平时使用app的时候,经常一不小心就点入广告,打开了其他的app或者打开了浏览器的某个网站,这个东西就用到了URL S ...

  10. 即学即用- URL Scheme、Universal Links

    首发地址 前言 在实际开发过程中,我们常会遇到微信分享.QQ分享.微博分享.微信支付.支付宝支付等诸如此类的需要唤醒第三方App的需求.但是在接入这些第三方SDK时,常见的两种手段,一种是使用URL ...

最新文章

  1. 2022图神经网络5篇最新的研究综述:双曲/图分类/联邦/等变/异质性
  2. Ubuntu创建新用户并增加管理员权限
  3. 类似wordpress的网站模板
  4. boost::pfr模块编写自己的 io-manipulator 进行打印的测试程序
  5. 计算机启动软件,计算机软件及应用启动会-20210703001237.pptx-原创力文档
  6. jQuery Mobile基础 学习笔记
  7. J2EE框架(四)核心设计模式
  8. 华为手机pc模式机型_哪些手机型号外接便携显示器能实现PC电脑模式
  9. 图神经网络学习笔记(2)——图滤波器
  10. 分布式基站中的BBU和RRU
  11. Gitee码云注册和提交代码
  12. 11.[STM32]PWM脉宽调制-呼吸灯
  13. 计算机桌面任务栏怎样显示输入法,计算机中任务栏的输入法无法切换怎么处理...
  14. 完美实现PC端软件控制手机(无需安装任何APK)(一)
  15. 新的开始,与大学告别
  16. C# Winform 仿Win10-计算器
  17. docker-e参数,顺利收获Offer
  18. 「多校联考」第三周二场
  19. 视频教程-SpringBoot2+Vue+AntV前后端分离开发项目实战-Java
  20. (B站动力节点老杜MySQL教程)MySQL课堂笔记-day01.txt

热门文章

  1. 用Java操作Office 2007
  2. 创业者都认为经营一家新公司最主要的目标是融资
  3. 数据结构与算法之排序(冒泡、选择、插入、希尔、归并、快速)
  4. VS2022编译项目出现““csc.exe”已退出,代码为 -1073741819”的错误解决办法
  5. puppeteer-firefox 开启扩展
  6. C++ 柔性数组(转载)
  7. vba 自动排序_Excel表格自动排序,神了!
  8. vb treeview icon 可以使用位图吗_table标签经典案例,综合使用行合并与列合并实现html网页表格【2020网页综合笔记03】...
  9. (day 52 - 递归 and 短路逻辑运算符的用法 ) 剑指 Offer 64. 求1+2+…+n
  10. mysql 5.6.14 winx64_MySQL-5.6.14-winx64的免安装配置方法