markdown app 的URL Scheme

背景:markdown软件bear很是让我喜欢,但是我自己有一个记录日记的自己开发的网络笔记本(我早就放弃了有道云笔记和印象笔记),我想同步bear的内容到我的网络笔记本里。

bear的开发对接文档
https://bear.app/xurlbuilder/open_note/
bear的APP文档里一个类似url但是不是http开头的数据串引起了我的好奇。

bear://x-callback-url/open-note?id=2B807D-FF09A2-1D83B2&title=Test&header=Header%20Test&exclude_trashed=no&new_window=yes&float=yes&show_window=yes&pin=yes&edit=yes

我生成了这个,丢在Safari里的确就启动了软件,丢在chrome的url也有作用,可以启动bear.app的软件

bear:// 这种格式叫URL Scheme
常用的URL Scheme 有tel:// mailto://

mailto://大概最最常见的,用来打开邮件软件。

手机软件也可以调用这个来打开appstore 或者打开微信

微信的URL Scheme weixin://

这个文件格式早就存在,今天app流行了,所以被用在APP的相互切换上,可以在app之间传送数据。

本来想用JS来读取的,结果整个互联网都搜不到资料,说明我不能这么做。如果开发个简单的APP,就能读取数据了。

写一段JS代码,可以顺利启动app

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery.min.js"></script>	
</head>
<body>
<input type="button" id="btn1" value="click me ">
<div id="msg">msg content</div>
</body>
</html>
 
<script>
 
function schemeUrl(url,callbak){
    var ifr = document.createElement("iframe");
    ifr.id = "myframe";
    ifr.src = url; /***打开app的协议,如zhe800://goto_home***/
    ifr.style.display = "";
    document.body.appendChild(ifr);
    //app没反应1s后执行另外的方法
    window.setTimeout(function(){
      //document.body.removeChild(ifr);
      if(typeof callbak == 'function'){callbak();}
    },1000)
};
 
var url = 'bear://x-callback-url/open-note?id=FDA8A257-5E6B-491B-83DD-025A1FC09BB8-27227-000102304E94DC58';
 
schemeUrl(url,function(){
	console.log('open');
	var ifr = $("myframe");
	console.log(ifr);
	console.log(ifr.protocol);
	console.log(ifr.host);
	console.log(ifr.href);
});
 
 
//因为bear://这个是跨域的行为,所以ajax无效。
var msg = $("#btn1").val();
console.log(msg);
$("#btn1").click(function(){
	console.log("hi");
	  $.get(url,function(data,status){
	    $("#msg").html(data);
	    console.log("hi");
	  });
});
 
 
</script>

//https://www.w3.org/TR/app-uri/

1. JS 能否读取app url scheme 返回的内容
2. 原生Xcode的代码是可以的。
3. 跨APP数据传送是存在的。Bear 的接口https://bear.app/faq/X-callback-url%20Scheme%20documentation/#open-note已经返回了了数据,所以一定存在

思考,找到大量的H5和native交互数据的例子,不过H5是在APP内部,所以靠网页浏览器的H5,可能无法读取App的内容,最多启动了。回调的数据都是空

监控浏览器的network 打开以后出来的跳转显示bear的url为红色,失败了。

查找google baidu整个互联网,几乎没有人有这个需求,所以我的需求可能是伪需求。我不过想调用bear的数据接口,这种调用,用Xcode开发个软件,即可了。(Xcode的高手,也许分分钟搞定,但是我对Xcode算入门,好几年不更新xcode软件了。)

我思考的问题
问题1. python 等语言能否编译mac软件
问题2. java能否编译mac软件
问题3. java 能否读取url scheme.
写了个JAVA的代码,似乎不通,google有个代码可以,但是看着太复杂了。

不折腾,绕过困难,解决问题
折腾一圈,认定这个玩意用于app来传送数据,网页是没戏得到数据,不过网页是可以打开bear并可以设置自动输入内容的。程序员的好奇,抵不过我的时间,花了一个周日没搞定。我想起了我的目的,最终快速解决了问题。

bear里可以方便的导出文件为txt,或者md,我本来想着把这些文件写个java读取传送到我的网络笔记本,最后我用5分钟解决这个问题

1.导出bear的所有文件为md文件
2.按月压缩
3.传到百度云
4.关闭电脑,去喝茶

以后按月整理文件就好了。正好避免自己乱写的文件,乱七八糟的。养成定期整理的习惯。


This entry was posted in WEB前端, Xcode and tagged , , . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/app-url-scheme/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.
2020.03.24 评论已经全局关闭,有事加QQ聊天