Hi%2C+%E6%88%91%E6%98%AF+%40JailbreakHum` 转换为 `Hi, 我是 @JailbreakHum
这些工具当然也可以反过来把我们常用的字符转换成可以在 URL 中使用的字符。
所以理论上,所有 URL 不支持的字符,都要编码。编码的任务也就是这么简单,把 URL 不支持的字符换位它支持的字符。既然如此,为什么有的时候不用编码?因为那些不用编码的时候,是 App 私下替你编了。
其中,基本 URL Schemes 是可以由你自己手动查询的,所有支持基本 URL Schemes 的 App 都可以用以下方法查到其基本 URL Schemes。而其它几种 URL Schemes 因为是写进代码中的,需要查询各 App 的文档,来参照例子根据自己的需求制作 URL。
- IOS: 基本 URL Schemes 的查找方法可以通过 App 中的
info.plist
来查询 - AOS: 在AndroidManifest.xml文件中查找
若想全知全能,唯有查询文档。
复杂 / 变形 / x-callback-URL 这三种类型的 URL Schemes 是写入代码中的,无法通过查询 .plist 文件来获取。但支持这三种 URL Schemes 的 App 的开发者将这些功能加入到自己 App 中一般是希望用户使用的,所以针对那些希望用户使用的功能都会专门写文档来告诉读者如何使用它们。
如果你想搜索任何一个 App 的复杂 / 变形 / x-callback-URL,你只要搜 App 名 URL Schemes
,一般就能找到该 App 的 URL Schemes 文档页面。同时,直接去这些 App 的官网查找相关网页也可以。
IOS9+支持通用链接,IOS用户可以点击指向您网站的链接,无需通过Safari即可无缝地重定向到已安装的应用。如果您的应用未安装,点击指向您网站的链接即可在Safari中打开您的网站。
通用链接为您提供了使用自定义URL方案时无法获得的几个主要优势。具体而言,通用链接是:
- 独特。与自定义网址方案不同,其他应用无法声明通用链接,因为它们使用指向您网站的标准HTTP或HTTPS链接。
- 安全。当用户安装您的应用时,IOS会检查您上传到网络服务器的文件,以确保您的网站允许您的应用代表其打开网址。只有您可以创建并上传此文件,因此您的网站与应用的关联是安全的。
- 灵活。即使您的应用未安装,通用链接也能正常工作。未安装您的应用时,点按指向您网站的链接会在用户期望的Safari中打开内容。
- 简单。一个URL适用于您的网站和您的应用。
- 私人的。其他应用可以与您的应用进行通信,而无需知道您的应用是否已安装。
Android不支持Universal Link。
- AOS中,由于不支持统一通用链接使用scheme,如果系统有安装应用则打开应用,否则无反应。
- IOS9+中,应用有通用链接的,则使用通用链接,如果系统有安装(系统自动识别)应用则打开应用,否则打开网页; 没有通用链接的以及不支持通用链接的IOS,则与AOS一致;
如何检测系统是否安装相应的应用?
关于这个H5并不能做到。
在不知道系统是否安装相应的应用的情况下如何实现上面的场景呢?
1、通过设置延时,浏览器尝试打开URL scheme并记录时间点t1,在2秒计时后,检查当前时间t2,如果t2-t1 > 2200ms,说明唤起app成功(唤起app会是浏览器的定时器延后执行),如果t2-t1 < 2200ms,可能没有安装app,可以引导用户进入下载页(IOS直接跳转APP Store, 如itms-apps://itunes.apple.com/cn/app/id477927812
)或者直接跳转与应用功能对应的web页面。
function openWithApp(){
var openTime = Date.now(),
timer = null,
appLink = "twitter://messages/compose?text=hello",
webLink = "https://twitter.com/messages/compose?text=hello",
appDownloadURL = "you app download page",
window.location.href = appLink;
timer = setTimeout(function () {
if (Date.now() - openTime < 2200) {
window.location.href = appDownloadURL;
}else{
clearTimeout(timer);
}, 2000);
2、在浏览器实际上是没有能力判断手机里是否安装了某个App的,所以只能够采取一种投机取巧的方式。
在JavaScript中判断页面是否进入后台来判断打开成功。Html5提供了下列事件和属性可以利用:
上面这些事件或者属性并不是所有浏览器都支持。下面是一个给出为id为openBtn 的按钮添加打开scheme或者下载事件的例子,但对于Android 4.4版本以下则不支持
function openWithApp(id) {
var scheme = "fb://",
iosDownloadURL = "https://www.baidu.com",
aosDownloadURL = "https://www.baidu.com",
ua = navigator.userAgent,
isIOS = !!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
isAOS = ua.indexOf("Android") > -1 || ua.indexOf("linus") > -1,
localDoc = document,
localLocation = window.location,
downloadTimer;
localLocation.href = scheme;
downloadTimer = setTimeout(function () {
if (isAOS) {
localLocation.href = aosDownloadURL;
} else if (isIOS) {
localLocation.href = iosDownloadURL;
}, 3000);
localDoc.addEventListener("visibilitychange webkitvisibilitychange", function () {
if (localDoc.hidden || localDoc.webkitHidden) {
clearTimeout(downloadTimer);
});
window.addEventListener("pagehide", function () {
clearTimeout(downloadTimer);
});
微信浏览器使用你自己APP的 url scheme 满足两个条件
-
使用腾讯开放平台的微下载服务,
在微信浏览器中使用应用宝的微下载,将当前页面重定向到应用宝的下载页面
-
该应用在平台必须是S级应用
将你的APP的Scheme添加到微信官方的白名单中
-
如果不符合以上两个条件,只有引导用户用其他浏览器打开
PS:对于下载apk这种,微信是屏蔽任何应用的,所以你想提供下载链接,都逃不过使用浏览器打开之中low的方式了.
- https://blog.csdn.net/u013517637/article/details/55251421
- https://www.jb51.net/html5/591158.html
- https://sspai.com/post/31500
- https://en.wikipedia.org/wiki/Uniform_Resource_Identifier
- https://www.jianshu.com/p/0ead88409212
1、记录使用过的URL Scheme
名称 | URL Scheme | 对应的普通链接 |
---|
Twitter发消息 | twitter://messages/compose?text=[yourText] | https://twitter.com/messages/compose?text=[yourText] |
Twitter发动态 | twitter://intent/tweet?text=[yourText] | https://twitter.com/intent/tweet?text=[yourText] |
打开Email | mailto:?body=[yourText] | |
给某人发Email | mailto:[emailAddress]?body=[yourText] | |
发短信SMS | sms:body=hello(AOS)sms:&body=hello(IOS) | |
whatsapp发消息 | whatsapp://send?text=[yourText] | |
fbmessenger发消息(分享链接) | fb-messenger://share/?link=[yourShareURL] | https://www.facebook.com/dialog/send?display=popup&app_id=[yourAppID]&link=[yourShareURL]&redirect_uri=[yourShareURL] |
fbmessenger发消息(指定对象) | fb-messenger://m.me/[yourPageID](通用) fb-messenger-public://user-thread/[yourPageID](IOS) | https://www.messenger.com/t/[yourPageID] / https://m.me/[yourPageID] |
fb打开相关主页 | fb://page/[yourPageID] | https://www.facebook.com/[yourPageID] |
Amazon打开产品详情页 | com.amazon.mobile.shopping://www.amazon.com/dp/[yourAsin] | https://www.amazon.com/dp/[yourAsin] |
打开App Store中应用详情页 | itms-apps://itunes.apple.com/cn/app/[yourAppID] | https://itunes.apple.com/cn/app/[yourAppID] |
打电话 | tel:[telephoneNumber] | |
2、系统默认应用
名称 | URL Scheme | Bundle identifier |
---|
Safari | http:// | |
maps | http://maps.google.com | |
Phone | tel:// | |
SMS | sms:// | |
Mail | mailto:// | |
iBooks | ibooks:// | |
App Store | itms-apps://itunes.apple.com | |
Music | music:// | |
Videos | videos:// | |
3、常用第三方软件
名称 | URL Scheme | Bundle identifier |
---|
QQ | mqq:// | |
微信 | weixin:// | |
腾讯微博 | TencentWeibo:// | |
淘宝 | taobao:// | |
支付宝 | alipay:// | |
微博 | sinaweibo:// | |
weico微博 | weico:// | |
QQ浏览器 | mqqbrowser:// | com.tencent.mttlite |
uc浏览器 | dolphin:// | com.dolphin.browser.iphone.chinese |
欧朋浏览器 | ohttp:// | com.oupeng.mini |
搜狗浏览器 | SogouMSE:// | com.sogou.SogouExplorerMobile |
百度地图 | baidumap:// | com.baidu.map |
Chrome | googlechrome:// | |
优酷 | youku:// | |
京东 | openapp.jdmoble:// | |
人人 | renren:// | |
美团 | imeituan:// | |
1号店 | wccbyihaodian:// | |
我查查 | wcc:// | |
有道词典 | yddictproapp:// | |
知乎 | zhihu:// | |
点评 | dianping:// | |
微盘 | sinavdisk:// | |
豆瓣fm | doubanradio:// | |
网易公开课 | ntesopen:// | |
名片全能王 | camcard:// | |
QQ音乐 | qqmusic:// | |
腾讯视频 | tenvideo:// | |
豆瓣电影 | doubanmovie:// | |
网易云音乐 | orpheus:// | |
网易新闻 | newsapp:// | |
网易应用 | apper:// | |
网易彩票 | ntescaipiao:// | |
有道云笔记 | youdaonote:// | |
多看 | duokan-reader:// | |
全国空气质量指数 | dirtybeijing:// | |
百度音乐 | baidumusic:// | |
下厨房 | xcfapp:// | |
PS: 更多URL Scheme可在下列链接中查找
- https://st3376519.huoban.com/share/1985010/VGi2N5Vf0C1MVnHCVWiBc8L9g15c9VGJbMGcFrb6/172707/list
- https://blog.csdn.net/dengchuanjiang/article/details/52554021
- https://blog.csdn.net/samuelltk/article/details/42290523
- https://mp.weixin.qq.com/s/p2-Fpua6tysgOZOml5Ywfw
Patientorienteddecision-makinginmedicaldomainscanenhancetheefficiencyofthemodernhealthcare recommender system provided the data scattered across different geographical regions is collected, mined and analyzed efficiently. Different sites, having Arbitrary Distributed Data (ADD) of healthcare services at various nodes can collaborate with each other to generate customer’s preference leading to mutualadvantageandovercomingoftheissuesrelatedtoinsufficientratingsofvariousmedicalservices. However,duetoprivacy,financialandlegalissues,differentpartiesdeferfromsharingtheirconfidential data. If the parties are assured of data confidentiality, they might agree for fruitful collaboration. Few existingstudiesproposedPrivacyPreservingCollaborativeFiltering(PPCF)onADD,butthesetechniques consideredonlytwoparties.Moreover,thecomputationcostofoff-linemodelgenerationprocessishigh since these techniques use homomorphic encryption techniques. To fill these gaps, this paper propose PPCF scheme on ADD based on multi-party random masking and polynomial aggregation techniques. In the proposal, two phases are considered namely as: off-line model generation and online prediction generation. Three protocols have been considered for privacy preservation so that analysis of each protocol is performed separately. The Paillier homomorphic encryption system is also used to calculate the length of vector X securely, so that only additive property of homomorphic encryption is used. Analysis of the proposed scheme has been done for security, accuracy, coverage and performance on healthcareandMovieslensdatasets.Ithasbeenexperimentallydemonstratedthattheproposedscheme maintains data owner’s confidentiality, and privacy measure so that it does not affect the accuracy of prediction generation on integrated data. Comparative analysis of the proposed scheme has also been done with other related schemes based on off-line and online computation overheads. The results obtaineddemonstratedthattheproposedschemehassignificantimprovementbyafactorof36%(approx) withrespecttotheaforementionedparameters.
该插件为 1.x默认主题增加了对 -color-scheme的支持。
yarn add vuepress-theme-default-prefers-color-scheme
npm i vuepress-theme-default-prefers-color-scheme
// .vuepress -> config.js
module . exports = {
theme : 'default-prefers-color-scheme'
overlayTheme(可选)
强迫用户进入特定主题,而忽略 。
H5跳转微信小程序,通过AccessToken获取URL Scheme,在vue页面通过location.href实现短信,微信,邮件,外部链接等方式跳转小程序,实现链接跳转小程序并传参
Linux 上的 SublimeText URL 处理程序(基于 Ubuntu)
启用 SublimeText 以打开 URL Scheme subl:// 和 txmt:// ,如下所示:
subl://open/?url=file:///etc/passwd&line=10&column=2
解压,然后:
cd sublime-url-handler-master
bash install
在浏览器上打开一个新选项卡并输入:subl://open/?url=file:///etc/hosts
蒂埃里 G. 为他的。
通过这样的链接启动您的应用程序: mycoolapp://
-此Apache Cordova问题导致Cordova-iOS 3.7.0出现问题:冷启动时未调用handleOpenURL函数。 使用高于或低于3.7.0的版本。
-从iOS 9.2开始,对话框Open in "mycoolapp"? 不再阻止JS,因此,如果您在打开应用商店时有短暂的超时,则用户将被带到商店,然后他们才有机会查看和回答该对话框。 请参阅下面的可用解决方案。
此插件可让您通过使用mycoolapp://path?foo=bar类的URL调用应用程序来启动您的应用程序
与Cordova Plugman兼容
在PhoneGap Build上提交并等待批准(更多信息)
iOS细节
不用使用config.xml定义URL方案。 该插件增加
在 h5 页面上唤醒app ,需要用到 scheme协议(由app端提供),但是在微信浏览器里scheme不起作用,因此需要先判断是否为微信浏览器,是微信浏览器的话,提示到浏览器打开,不是的话,再判断是Android端还是iOS端,然后尝试scheme协议唤醒app,如果唤醒失败再转向应用市场。
URL Scheme协议
URL Scheme是一种页面内跳转协议,通过这个协议可以比
判断 是否安装 app 移动端是ios、或者Android项目需求上方红框标记位置,APP内分享出去的文章那里要一个提示打开APP阅读内容的功能,点击之后跳转到APP该页面,没有提示下载主要目的是分享出去的文章/视频 h5页面 识别 是安卓还是 ios然后查看是否已经安装该app了 是就启动该app 否则就跳到下载地址第一点判断 移动端是ios、或者Androidvaru=navigat...
2.根据微信开放平台文档,按照步骤来。
在浏览器中打开 https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state...
一、网页启动APP由于安全隐私的原因,目前网页端无法通过js脚本直接判断某个APP是否已安装,只能首先通过js尝试性的启动app,然后再进入安装流程。web网页上启动app的方式有两种:1. schemaandroid与ios均支持自定义schema,通过访问自定义schema的url即可启动对应的app,如weixin://dl/scan这个url,这里的weixin就是自定义的schema。j...
工作可能有这样的需求,就是手机浏览器中加载一个h5页面,点击可以打开某一个APP,比如微信等。这时候通常都是采用URL Scheme的方式进行配置跳转。
那么什么是URL Scheme呢?
简单说:它是一个页面跳转协议。
2、 URL Scheme协议
URL Scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通...
今天接到需求!!!想要从浏览器,QQ等场景,用H5链接打开微信小程序!!!
如何实现的,一番查阅后,让我带你实现吧!
ps:适用于非个人主体,微信内部的浏览器好像不行,你们自己试试。
1、首先登录微信小程序后台:
微信小程序后台→工具→微信生成小程序URL Scheme,根据你的需要填写,启动query参数可为空;
2、生成后会获得一个链接
weixin://dl/news/?t=xxxxxxx
3、然后创建demo.html文件,建立页面,把weixin链接改成你上面得到的链接
<!DOCTYPE