iOS:URL Scheme(完结)(18-1-3更)
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更)相关推荐
- (0089)iOS开发之iOS应用间相互跳转(URL Scheme)
需求:假设有应用A和应用B两个应用,现在需要从应用A跳转到应用B中.如果手机中没有安装跳到下载页,如果已经安装直接打开APP. 认识URL Scheme URL Schemes是苹果给出的用来跳转到系 ...
- Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装
Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装 在移动应用开发中,经常需要判断一个app是否安装,iOS中有什么方式可以判断app是否安装呢? 这里介绍通过Url Sch ...
- 【iOS开发】—— 通过URL Scheme调用外部地图软件
写项目时,涉及到一个导航到球馆的功能,可以选择在app里加一个地图,但是这个方案接入要一定的时间,还会增加APP的内存占用:所以我选择了通过URL Scheme去调用手机已安装的导航软件来进行导航,这 ...
- ios中设置URL Scheme及如何跳转到其他APP中
URL Scheme的作用 我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的.但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便 ...
- android,ios配置scheme,react-native获取url
scheme协议定义 scheme 是一种页面之间跳转的协议,不仅可以用于app之间进行跳转,还可以用于 H5 页面跳转到app页面. 通过scheme协议,服务器可以定制化告诉App跳转那个页面,可 ...
- 设置IOS平台和Android平台APP的URL Scheme
URL Scheme的作用 APP可以向手机操作系统注册一个 URL scheme,该 scheme 用于从浏览器或其他应用中启动本应用. 设置IOS平台的URL Scheme IOS应用在info. ...
- iOS app url scheme跳转到淘宝商品详情页 唤醒app
最近涉及的一个业务,在app内的一个广告,点击打开webView,加载的是一个淘宝商品详情页,效果是打开该webView自动跳转至淘宝对应的页面,同时在自己的app仍然加载页面,点击评论等也同样能跳转 ...
- iOS 通过URL Scheme跳转到常用的App
微博开放的接口是最多的(在网上找了个遍) 打开微博: sinaweibo:// 打开微博个人主页: sinaweibo://userinfo?uid=xxxxxxxxx 打开具体某一条微博: sina ...
- 【iOS】—— URL Scheme
URL Scheme URL Scheme是一个非常炫酷的东西,用法很简单,在我们平时使用app的时候,经常一不小心就点入广告,打开了其他的app或者打开了浏览器的某个网站,这个东西就用到了URL S ...
- 即学即用- URL Scheme、Universal Links
首发地址 前言 在实际开发过程中,我们常会遇到微信分享.QQ分享.微博分享.微信支付.支付宝支付等诸如此类的需要唤醒第三方App的需求.但是在接入这些第三方SDK时,常见的两种手段,一种是使用URL ...
最新文章
- 2022图神经网络5篇最新的研究综述:双曲/图分类/联邦/等变/异质性
- Ubuntu创建新用户并增加管理员权限
- 类似wordpress的网站模板
- boost::pfr模块编写自己的 io-manipulator 进行打印的测试程序
- 计算机启动软件,计算机软件及应用启动会-20210703001237.pptx-原创力文档
- jQuery Mobile基础 学习笔记
- J2EE框架(四)核心设计模式
- 华为手机pc模式机型_哪些手机型号外接便携显示器能实现PC电脑模式
- 图神经网络学习笔记(2)——图滤波器
- 分布式基站中的BBU和RRU
- Gitee码云注册和提交代码
- 11.[STM32]PWM脉宽调制-呼吸灯
- 计算机桌面任务栏怎样显示输入法,计算机中任务栏的输入法无法切换怎么处理...
- 完美实现PC端软件控制手机(无需安装任何APK)(一)
- 新的开始,与大学告别
- C# Winform 仿Win10-计算器
- docker-e参数,顺利收获Offer
- 「多校联考」第三周二场
- 视频教程-SpringBoot2+Vue+AntV前后端分离开发项目实战-Java
- (B站动力节点老杜MySQL教程)MySQL课堂笔记-day01.txt
热门文章
- 用Java操作Office 2007
- 创业者都认为经营一家新公司最主要的目标是融资
- 数据结构与算法之排序(冒泡、选择、插入、希尔、归并、快速)
- VS2022编译项目出现““csc.exe”已退出,代码为 -1073741819”的错误解决办法
- puppeteer-firefox 开启扩展
- C++ 柔性数组(转载)
- vba 自动排序_Excel表格自动排序,神了!
- vb treeview icon 可以使用位图吗_table标签经典案例,综合使用行合并与列合并实现html网页表格【2020网页综合笔记03】...
- (day 52 - 递归 and 短路逻辑运算符的用法 ) 剑指 Offer 64. 求1+2+…+n
- mysql 5.6.14 winx64_MySQL-5.6.14-winx64的免安装配置方法