背景: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.关闭电脑,去喝茶
以后按月整理文件就好了。正好避免自己乱写的文件,乱七八糟的。养成定期整理的习惯。