windows同时连接内外网

作者:matrix 发布时间:2022 年 8 月 31 日 分类:command 零零星星

有些环境是内网使用网线连接,而外网需要通过wifi上网,不能同时连接内外网。

Windows本地环境:

172.27.9.1 # 外网网关     
172.27.9.64 # 外网IP
10.211.132.69 #内网ip 

route print

超管权限运行:

route print

图片5525-windows同时连接内外网

找到自己的有线网卡序号,这里为5

route add

route add -p 172.0.0.0 mask 255.0.0.0  172.27.9.64 if  5

按照自己本机ip,执行上面命令。
之后重启windows即可实现内外网同时可用。

最终效果

C:\Users\admin>route print
===========================================================================
接口列表
 14...a4 bb 6d 4a 0c 0a ......Realtek PCIe GbE Family Controller
 10...08 d2 3e 98 58 ec ......Microsoft Wi-Fi Direct Virtual Adapter
  9...0a d2 3e 98 58 eb ......Microsoft Wi-Fi Direct Virtual Adapter #2
  3...08 d2 3e 98 58 eb ......Intel(R) Wireless-AC 9462
 18...08 d2 3e 98 58 ef ......Bluetooth Device (Personal Area Network)
  1...........................Software Loopback Interface 1
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
          0.0.0.0          0.0.0.0       172.27.9.1      172.27.9.64     40
         10.0.0.0        255.0.0.0     10.211.132.1      172.27.9.64     41
         10.0.0.0        255.0.0.0    10.211.132.69      172.27.9.64     41
       10.211.0.0      255.255.0.0     10.211.132.1    10.211.132.69     26
     10.211.132.0    255.255.255.0            在链路上     10.211.132.69    281
    10.211.132.69  255.255.255.255            在链路上     10.211.132.69    281
   10.211.132.255  255.255.255.255            在链路上     10.211.132.69    281
        127.0.0.0        255.0.0.0            在链路上         127.0.0.1    331
        127.0.0.1  255.255.255.255            在链路上         127.0.0.1    331
  127.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
       172.27.9.0    255.255.255.0            在链路上       172.27.9.64    296
      172.27.9.64  255.255.255.255            在链路上       172.27.9.64    296
     172.27.9.255  255.255.255.255            在链路上       172.27.9.64    296
        224.0.0.0        240.0.0.0            在链路上         127.0.0.1    331
        224.0.0.0        240.0.0.0            在链路上     10.211.132.69    281
        224.0.0.0        240.0.0.0            在链路上       172.27.9.64    296
  255.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
  255.255.255.255  255.255.255.255            在链路上     10.211.132.69    281
  255.255.255.255  255.255.255.255            在链路上       172.27.9.64    296
===========================================================================


我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3ab5kpykd2ww0

IOS捷径 睡眠灯 sleep-lamp

作者:matrix 发布时间:2022 年 3 月 1 日 分类:零零星星

第一次编写快捷指令,不错。小小满足了我的ios应用需求 😆
我不喜欢太黑的环境入睡,所以想要个倒计时关闭的手电筒

图片5408-IOS捷径-睡眠灯

feat

  1. 支持列表选择时间
  2. 支持自定义倒计时时间
  3. 通知提示关闭时间
  4. 关闭时间动态判断(可手动修改缓存文件)
  5. 重复执行的覆盖提示

快捷指令

https://www.icloud.com/shortcuts/c83d1a4f15644e45a1410311cc84c715

ios手机直接在Safari浏览器中打开然后信任即可运行。

功能简单,但是里面执行步骤被我加到了50+ :捂脸:

从简单的循环倒计时修改,到支持列表选择、自动义倒计时时间、缓存关闭时间且支持动态判断(可手动更改缓存文件)真是鼓捣了一晚上。

很多可用功能都可以自己去搜索,也可以参照其他快捷指令

图片5429-IOS捷径-睡眠灯

执行过程

推荐感兴趣的同学来玩玩,没什么规范限制,能跑起来基本功能就行了,效果简单粗暴。

我第一版是直接固定60秒的N次循环,最后执行手电筒关闭功能,当然要先把手电筒打开才行。用倒是能用,但是看了其他指令发现还可以做列表选择,还有配置缓存。

所以开始了功能升级,回过头来记录下大致的执行步骤

1.生成配置json文件

文件路径:~/iCloud云盘/Shortcuts/sleep-lamp/config.json

其中sleep-lamp/config.json 文件为自定义路径。得到关闭时间后会写入数据 类似

{"last-close-time":"2022年1月1日 00:00:00"}

2.列表选择

上面的config.json会初始化空白文件
之后会让选择时间列表

图片5418-IOS捷径-睡眠灯

选择列表中的时间或者其他自定义输入时间作为分钟数记录到变量$delay单位为分钟

图片5422-IOS捷径-睡眠灯

3.计算关闭时间写入配置

图片5424-IOS捷径-睡眠灯

关闭时间 = 当前时间 + delay

图片5425-IOS捷径-睡眠灯

写入配置文件

4.开启手电筒

5.轮训判断时间

图片5426-IOS捷径-睡眠灯

类似for循环进行处理。读取配置的关闭时间,如果时间已过,则关闭手电筒。

完美

PEACE~

SVN或者GIT远程双向同步

作者:matrix 发布时间:2021 年 9 月 3 日 分类:零零星星

现在我需要svn或者git的提交同步到其他远程仓库(svn或git),也就是同步操作。这里的同步最小单位为单次的提交commit。

配合之前的「使用git-svn管理svn仓库」可以完美解决这个问题,利用git来中转管理我们手上的仓库代码。

场景:

有多个相同代码的SVN仓库,我不想全部迁移到git。然而每次修改一个功能的代码就必须手动复制到其他的远程svn/git仓库上,代码相似但又不能直接替换。。。

之前使用git cherry-pick可以解决这个问题,但是要单独给svn用就会很麻烦。尝试用git svn中转试试!

1. 本地添加远程仓库

如果是svn仓库,先使用git svn clone svn://xxx.com/xxx克隆svn仓库到本地

2. 本地添加远程仓库

  • 添加远程SVN仓库:

没有找到命令行的方式添加远程仓库分支,但是可以修改 .git/config文件达到目的。

项目/.git/config文件中新增svn-remote配置:

[core]
    ...
[svn-remote "svn"]
    ...
[svn-remote "qingsui"]
     url = svn://xxxx/qingsui
     fetch = :refs/remotes/git-svn-qingsui

  • 添加远程git仓库:
    可以直接使用git命令添加:
 $ git remote add remote-repository-name https://git.weixin.qq.com/xxx.git

注意:remote-repository-name 为自定义的分支名

3. 拉取远程代码

  • 远程SVN仓库:
$ git svn fetch  qingsui

如果需要pull操作来自动更新合并执行命令git svn rebase

  • 远程git仓库:
$  git fetch remote-repository-name

4.新建对应的本地分支

  • 远程SVN仓库:
$ git checkout -b qingsui  remotes/git-svn-qingsui

$ git branch -a # 查看本地分支情况

  • 远程git仓库:
$  git checkout -b remote-repository-name remotes/remote-repository-name/master

5. 将commit提交合并到新分支

commit_id是需要同步到其他远程分支的commit id。

$ git cherry-pick  {commit_id}

6. 推送修改到远程仓库

  • SVN仓库:
$ git svn dcommit
  • git仓库:
$ git push

完美解决,实际上就是使用git来操作。

同步到远程svn仓库操作脚本

#!/bin/bash
#同步commit到其他远程仓库
#example:  shell.sh  dade,qingsui commitID1,commitID2
# dade,qingsui 为`git branch`本地分支名字
if [ ! $1 -o ! $2 ]; then
    echo -e "usage example:  \n $ shell.sh dade,qingsui commitID1,commitID2"
    exit
fi

repo_arr=(`echo $1 | tr ',' ' '`) 
commit_arr=(`echo $2 | tr ',' ' '`) 

for repo in ${repo_arr[@]};do
    for commit_id in ${commit_arr[@]};do
         git checkout $repo
         git svn rebase #git pull操作
         git cherry-pick $commit_id
         git svn dcommit
         git checkout master
        echo -e "\n"
    done
done


说明:
如果自动合并有冲突会操作会失败,需要手动修改再提交&推送。

如果需要git-svn自动输入密码>> https://www.hhtjim.com/git-svn-save-password-credentials-from-input.html

参考:

https://coderwall.com/p/vfop7g/add-an-svn-remote-to-your-git-repo

https://superuser.com/questions/354819/git-svn-pass-password-on-command-line

commit同步到其他仓库

作者:matrix 发布时间:2021 年 7 月 31 日 分类:零零星星

不同的仓库可以互相同步其中任意提交的commit吗?可以的~

现有仓库enc,qsui,dada。三个的代码基本相同但是没有新建分支来区别。

本地会经常修改enc代码来提交到其远程仓库,但是其他仓库咋办?我不想每个再修改提交。

办法

大致思路就是本地仓库添加其他remote远程分支,本地抓取之后新建本地分支进行关联,再git cherry-pick合并提交到本地新的分支,之后push即可。

步骤

  • 1.enc本地添加远程
$ git remote add dada  https://git.weixin.qq.com/wx_wx8fffaa009d109aa1/dada.git

$ git remote  -v # 查看远程仓库分支

  • 2.抓取到本地
$ git fetch dada
  • 3.新建本地分支
$ git checkout -b dada dada/master #远程dada/master分支新建为本地分支「dada」,且当前分支切换到dada

$ git branch -a # 查看本地分支情况
    * dada
      master
      remotes/dada/master
      remotes/origin/master

  • 4.将commit提交合并到新分支
$ git cherry-pick d4df33b962910XXXX
  • 5.push推送
$ git push dada dada:master

一句话同步操作

$ git checkout qsui  &&  git cherry-pick dad6432037fcadcd35405aaa331dd367e58b1e2e   &&  git push qsui qsui:master 

多分支多commit操作脚本


#!/bin/bash #example: shell.sh dada,qsui commitID1,commitID2 # 同步commit到其他远程仓库 if [ ! $1 -o ! $2 ]; then echo -e "usage example: \n $ shell.sh dada,qsui commitID1,commitID2" exit fi repo_arr=(`echo $1 | tr ',' ' '`) commit_arr=(`echo $2 | tr ',' ' '`) for repo in ${repo_arr[@]};do for commit_id in ${commit_arr[@]};do git checkout $repo git pull git cherry-pick $commit_id git push $repo $repo:master echo -e "\n" done done git checkout master

参考:

https://www.bestyii.com/topic/40

https://blog.zengrong.net/post/bash_array/

https://blog.csdn.net/Jerry_1126/article/details/83930956

Pyinstaller打包程序提示Failed to execute script pyi_rth_certifi

作者:matrix 发布时间:2021 年 2 月 8 日 分类:零零星星

本地用miniconda创建的python环境,程序的打包和运行都是正常。但是搬到了其他电脑运行就是失败,死活报错Failed to execute script pyi_rth_certifi。尝试其他打包参数-p --datas --hidden-import,更换python版本和Pyinstaller的develop版本也一样。

图片5291-Pyinstaller打包提示Failed to execute script pyi_rth_certifi

最后还是在cmd命令行打开调试才显示具体信息。
删除dist/,build/目录再使用-c参数重新打包,之后从cmd执行程序才看到详细提示。

最终并不是依赖的问题,只是因为运行环境缺少dll文件导致。😂

解决办法

安装OpenSSL库

下载页面:https://slproweb.com/products/Win32OpenSSL.html

默认安装之后就可以了

参考:

https://bugs.python.org/issue39344

https://slproweb.com/products/Win32OpenSSL.html

Pyinstaller打包报错Failed to execute script pyi_rth_pkgres

https://stackoverflow.com/questions/32093559/exe-file-created-by-pyinstaller-not-find-self-defined-modules-while-running

https://wiki.openssl.org/index.php/Binaries

快速清空超大数据表

作者:matrix 发布时间:2020 年 8 月 31 日 分类:Python 零零星星

第一次drop超过GB的数据表,没想到竟然会执行的这么慢。尝试过TRUNCATEDROP都不满意。
后来就直接找到数据库储存的文件来删除,这样比起使用sql语句操作会快得多,但也是危险操作,无法找回。

删除操作脚本

运行环境 python3.7,依赖pymysql,根据自身情况配置变量mysql_data_dir,db_config,table_names,condition_save

fast_drop_table.py

#codeing=utf-8
"""
快速清空超大数据表 保留想要数据
"""
import pymysql
import os

mysql_data_dir = '/mnt/mysql_data/db_name/' #数据库文件所在路径

# 数据库连接配置
db_config = {'host': '127.0.0.1', 'port': 3306, 'user': 'user', 'password': 'password', 'db': 'db_name', 'charset': 'utf8'}

# 需要清空操作的数据表
table_names = [
"com_hhtjim_badata_trades_eos_this_quarter",
"com_hhtjim_badata_trades_eth_this_quarter",
  ]

# 数据表保留的查询条件
condition_save = "timestamp  >  '2020-02-20T00:00:00Z'"
# condition_save = False# 不保留


class Db:
    '''
    简单数据库连接操作类
    '''
    def __init__(self,**kwargs):
        self.connection = pymysql.connect(**kwargs)
        self.cursor = self.connection.cursor()


if __name__ == "__main__":
  mysql = Db(**db_config)
  for table_name in table_names:
    os.link('{}{}.frm'.format(mysql_data_dir,table_name), '{}{}.frm.h'.format(mysql_data_dir,table_name))
    os.link('{}{}.ibd'.format(mysql_data_dir,table_name), '{}{}.ibd.h'.format(mysql_data_dir,table_name))


    mysql.cursor.execute('CREATE TABLE {0}_back like {0}'.format(table_name))
    mysql.connection.commit()


    if condition_save:
      mysql.cursor.execute("INSERT INTO {0}_back SELECT * FROM {0}  WHERE {1} ;".format(table_name,condition_save))
      mysql.connection.commit()


    mysql.cursor.execute("drop table {}".format(table_name))
    mysql.connection.commit()

    mysql.cursor.execute("alter table  {0}_back rename to  {0};".format(table_name))
    mysql.connection.commit()


    os.unlink('{}{}.frm.h'.format(mysql_data_dir,table_name))
    os.unlink('{}{}.ibd.h'.format(mysql_data_dir,table_name))

    print('succeed: {}'.format(table_name))

具体步骤

### 找到frm,ibd文件

根据数据库存储路径找到需要删除的表名的frm,ibd文件。

### 建立硬连接
$ ln mytable.ibd  mytable.ibd.h
$ ln mytable.frm  mytable.frm.h


### 备份表结构
CREATE TABLE mytable_back like mytable;

### 备份想要保留的数据
INSERT INTO mytable_back SELECT * FROM mytable  WHERE timestamp  >  '2020-02-27T00:00:00Z' ;

### 删除旧表
drop table mytable;

### 修改备份表名字
alter table  mytable_back rename to  mytable;


### 删除硬连接
$ rm -f  mytable.frm.h  mytable.ibd.h

参考:
https://blog.csdn.net/weixin_34034261/article/details/86250223

Evolution Host 免费VPS 申请

作者:matrix 发布时间:2020 年 7 月 2 日 分类:零零星星

图片5225-Evolution Host 免费VPS 申请

Evolution Host 官网

https://evolution-host.com/vps-hosting.php

前几天看到有免费vps可以申请,抱着诚恳的态度 😂 打开了Evolution Host。今天收到回复啦
evolution-host.com,成立也有4,5年时间了,主要做软件游戏和软件服务器。
申请的时候需要提交所有者网站,最后会要求网页上挂Evolution Host的链接。所以现在是专门介绍他们的网页。
看到一些信息,他们提供4档位的VPS来对应提交网站的流量,越大的话给你的配置也就越高。不支持违法站点使用。

期待真香~ 😛

Dallas, USA

第二天就收到了,他们处理的很快。所有信息全部在邮件里面,包括登录账户、密码、vps登录信息等。
选的达拉斯机房,速度一般。不过配置比起自己买的要高。选的HDD硬盘,其他的还没看 😂 香~

登录控制面板看到付费周期为一个月,估计要免费的话是需要邮件联系的。

图片5234-Evolution Host 免费VPS 申请

ios 自定义html页面发送到桌面图标

作者:matrix 发布时间:2020 年 6 月 26 日 分类:兼容并蓄 零零星星

经常用高德地铁图书签看地铁线路图
今天发现高德修改了scheme跳转规则,走到了测距界面。本来想重新设置个书签到桌面的,结果是找不到以前的方法了,干。

重新设置

高德地铁图url data数据

data:text/html;charset=UTF-8,%3Chtml%3E%20%20%20%20%20%20%20%20%3Chead%3E%20%20%20%20%20%20%20%20%3Cmeta%20content=%22yes%22%20name=%22apple-mobile-web-app-capable%22%20/%3E%20%20%20%20%20%20%20%20%3Cmeta%20content=%22text/html;%20charset=UTF-8%22%20http-equiv=%22Content-Type%22%20/%3E%20%20%20%20%20%20%20%20%3Cmeta%20name=%22viewport%22%20content=%22width=device-width,%20initial-scale=1.0,%20user-scalable=no%22%20%20%20%20%20%20%20%20/%3E%20%20%20%20%20%20%20%20%3Clink%20rel=%22apple-touch-icon-precomposed%22%20href=%22data:image/png;base64,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%22%3E%20%20%20%20%20%20%20%20%3C/link%3E%20%20%20%20%20%20%20%20%3Ctitle%3E%20%20%20%20%20%20%20%20%E5%9C%B0%E9%93%81%E5%9B%BE%20%20%20%20%20%20%20%20%3C/title%3E%20%20%20%20%20%20%20%20%3Cstyle%3E%20%20%20%20%20%20%20%20%20%20%20%20*%7Bmargin:0;padding:0%7D%20%20%20%20%20%20%20%20%20%20%20%20html,body%7Bheight:100%25;min-height:100%25%7D%20%20%20%20%20%20%20%20%20%20%20%20body%7Bbackground:%23eee;text-align:center;overflow:hidden%7D%20%20%20%20%20%20%20%20%20%20%20%20a%7Bdisplay:%20none%7D%20%20%20%20%20%20%20%20%20%20%20%20p%7Bfont-size:14px;line-height:200%25%7D%20%20%20%20%20%20%20%20%20%20%20%20.logo%7Bwidth:90px;margin-top:%2032px%7D%20%20%20%20%20%20%20%20%20%20%20%20section%7Bwidth:%20264px;height:%2078px;background:%23fff;position:absolute;bottom:%2020px;-webkit-border-radius:%203px;border-radius:%203px%7D%20%20%20%20%20%20%20%20%20%20%20%20section:before%7Bcontent:'';display:block;width:528px;height:156px;-webkit-transform:scale(0.5);-webkit-transform-origin:%20left%20top;border:1px%20solid%20%2389ccff;-webkit-border-radius:6px;border-radius:%206px;z-index:1%7D%20%20%20%20%20%20%20%20%20%20%20%20section:after%7Bcontent:'';display:block;width:36px;height:%2036px;border:%201px%20solid%20%2389ccff;background:%20%23fff;position:absolute;-webkit-transform:%20scale(0.5)%20rotate(45deg);bottom:%20-19px;left:113px;z-index:%202%7D%20%20%20%20%20%20%20%20%20%20%20%20div%7Bposition:%20absolute;top:%201px;right:%201px;bottom:0;left:1px;z-index:3;background:%23fff%7D%20%20%20%20%20%20%20%20%20%20%20%20div%20%3E%20p%7Bcolor:%20%23333%7D%20%20%20%20%20%20%20%20%20%20%20%20div%20%3E%20p:first-child%7Bmargin-top:8px%7D%20%20%20%20%20%20%20%20%20%20%20%20span%7Bdisplay:inline-block;width:%2017px;height:%2023px;background:%20url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAuCAMAAACRbICIAAABR1BMVEX///9+wv8UkP9ktv/j8v/S6v8lmf/Y7f90vv8Rj/8pl//s+P+a1P8smv8mmf/t+P+54/+Y0/+Z1P/q9/8Eif9fuP9Ssf9Usv/j8f/P6/8mlv8Dgv+Z0//p9/9Ssv9ovP/0/P/Z7f9TsP8qmv8Hgv/t+f9XtP/5/f/k9P/T7//9/v8IhP+k2f+W0f92w//4/v/U8P9Pr//X7f9Ep/9Vsf8pkf/y+f+m1f8pmv8qm/8tk/+Vzf8Sj//x+P+c0P8Rhf8Mjf96wP9PsP/X7P/9///8/v+IyP9nuP/U6//K5v+ey//w+P/W7P8VkP8hl/9zvv+73/8LjP/P7f90vf91vv9ktf9zwP9ksP+x2v8Ae/8Ag/8Ad/8AfP8Adv9it/8Ahv8LjP90wf8AhP8Ji/8Aev8AgP8Acv8Adf8Aav8imf+a0/8Tiv8AiP/+x5cfAAAAWXRSTlMAgeubHCzZJovt1RJk09kSRmZmFPufrascMNn7Zhatlwomq9X3EqcGGiwC91poiQYqryi7qdUMWNXV0WrtDmLt84WvKAICdpcqNGAOKOndi0TzMIuJm4ubTn6oYBsAAADXSURBVHhe7c1FVwNBEIXRNxODhIm7E0IUdXd3lx6JB///a1h0b2CoJbDIt3znnip8qeStgMwVfhulQaSrBpME8Myo7Xrj3ffzhZzerLHXl5Yf5gW2WGhHMqKxeGLAFKTSeiaLc20QV868GRkusLsi0Kc5gLJSHfkudvfGxsEFJianYBoXvN8V08qCaGiOi/lZMS0uLUNW+0Urq1ysrYtpQ9uE7Ka+bD9JkO2UsP0P0RP7zwe0wOHRMSlEfy96wk2Jk09xemYlujAkXLIOEXu8xs2ther+4QN2Dj6s1Wm3NwAAAABJRU5ErkJggg==)%20no-repeat%20center;background-size:%20contain;margin:%200%2010px;position:relative;top:3px%7D%20%20%20%20%20%20%20%20%3C/style%3E%20%20%20%20%20%20%20%20%3C/head%3E%20%20%20%20%20%20%20%20%3Cbody%3E%20%20%20%20%20%20%20%20%3Ca%20href=%22iosamap://openFeature?featureName=Subway&sourceApplication=applicationName&page=Subway%22%20id=%22qbt%22%3E%3C/a%3E%20%20%20%20%20%20%20%20%3Cnav%20id=%22nav%22%3E%3C/nav%3E%20%20%20%20%20%20%20%20%3C/body%3E%20%20%20%20%20%20%20%20%3Cscript%3E%20%20%20%20%20%20%20%20if%20(window.navigator.standalone%20==%20true)%20%7B%20%20%20%20%20%20%20%20%20%20%20%20var%20lnk%20=%20document.getElementById(%22qbt%22);%20%20%20%20%20%20%20%20%20%20%20%20var%20evt%20=%20document.createEvent('MouseEvent');%20%20%20%20%20%20%20%20%20%20%20%20evt.initMouseEvent('click');%20%20%20%20%20%20%20%20%20%20%20%20lnk.dispatchEvent(evt);%20%20%20%20%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%20%20%20%20%20%20%20var%20bodyWidth%20=%20document.body.clientWidth;%20%20%20%20%20%20%20%20%20%20%20%20var%20nav%20=%20document.getElementById(%22nav%22);%20%20%20%20%20%20%20%20%20%20%20%20nav.innerHTML%20=%20'%3Cimg%20class=%22logo%22%20src=data:image/png;base64,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%3E'%20+%20'%3Cp%3E%E6%B7%BB%E5%8A%A0%E5%BF%AB%E6%8D%B7%E6%96%B9%E5%BC%8F%E5%88%B0%E4%B8%BB%E5%B1%8F%E5%B9%95%3C/p%3E'%20+%20'%3Csection%20style=%22margin-left:'%20+%20((bodyWidth%20-%20264)%20%3E%3E%201)%20+%20'px%22%3E'%20+%20'%3Cdiv%3E'%20+%20'%3Cp%3E%E7%82%B9%E5%87%BB%E9%A1%B5%E9%9D%A2%E4%B8%8B%E6%96%B9%3Cspan%3E%3C/span%3E%E6%8C%89%E9%92%AE%3C/p%3E'%20+%20'%3Cp%3E%E5%9C%A8%E5%BC%B9%E5%87%BA%E8%8F%9C%E5%8D%95%E9%80%89%E6%8B%A9%E2%80%9C%E6%B7%BB%E5%8A%A0%E5%88%B0%E4%B8%BB%E5%B1%8F%E5%B9%95%E2%80%9D%3C/p%3E'%20+%20'%3C/div%3E'%20+%20'%3C/section%3E';%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%3C/script%3E%20%20%20%20%20%20%20%20%3C/html%3E

说明:

其中核心位置为 iosamap://的scheme a标签跳转。

iosamap://openFeature?featureName=Subway&sourceApplication=applicationName&page=Subway

顺便再记录下官方原版不可用的scheme:

iosamap://openFeature?featureName=Mine&page=ToolBox&item=Subway

item参数失效,所以就默认跳转到了测距界面。

使用

复制顶部的url data代码,在safair地址栏中打开,使用下方的分享发送按钮发送到桌面快捷键即可。

到这里就解决了问题。
下面是简化和修改操作,各位没必要看了。

自定义以及精简

上面的大段官方代码主要是css样式、图标等信息,其实可直接简化。

代码中可以任意修改。设置为其他任意界面,样式,图标,标题,以及打开的跳转页面和预览窗口都可以。要求为data:text/html形式。

如果理解一些html,可简化html为如下形式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        window.location.href = 'iosamap://openFeature?featureName=Subway&sourceApplication=applicationName&page=Subway';
    </script>
</head>
<body>
</body>
</html>

最终的url data数据:

data:text/html;charset=UTF-8,%3c!DOCTYPE%20html%3e%0d%0a%3chtml%20lang%3d%22en%22%3e%0d%0a%3chead%3e%0d%0a%20%20%20%20%3cmeta%20charset%3d%22UTF-8%22%3e%0d%0a%20%20%20%20%3ctitle%3eTitle%3c%2ftitle%3e%0d%0a%20%20%20%20%3cscript%20%3e%0d%0awindow.location.href%20%3d%20%27iosamap%3a%2f%2fopenFeature%3ffeatureName%3dSubway%26sourceApplication%3dapplicationName%26page%3dSubway%27%3b%0d%0a%20%20%20%20%3c%2fscript%3e%0d%0a%3c%2fhead%3e%0d%0a%3cbody%3e%0d%0a%3c%2fbody%3e%0d%0a%3c%2fhtml%3e

说明:

注意!需要以data:text/html;charset=UTF-8,形式开头。切记,后面字符全部为url编码数据,空格字符编码为%20,非+字符。

schma参考:

https://lbs.amap.com/api/amap-mobile/guide/ios/subway