自动转发安卓机短信到iPhone
Table of Contents
需求与工具
需求
现在很多人都是一台iPhone一台安卓机,而且很多人有2张或3张卡,而iPhone最多放两张卡,所以必定有一张卡(或两张卡)放在安卓机中,又或者虽然你只有两张卡,两张卡可以都放到iPhone中,但由于你安卓机也要上网也要用卡,所以还是选择把其中一张卡放到了安卓机中。
但是这样会造成一个问题,你出去拿个快递,但是快递信息都在安卓机中,但是你出去一般带iPhone出去(因为这是主用机),所以这就有点麻烦,所以我们希望能把安卓机中的短信转发到iPhone中。
另外有时候想转发安卓机某个app的消息通知(比如微信)到iPhone,本文介绍的工具也是可以做到的。
工具准备
- 1、短信转发器:在安卓手机上安装,它是开源app,github下载页面:SmsForwarder(建议直接在安卓手机浏览器上打开该链接下载);
- 2、Bark:在iPhone手机上安装,它是开源app,github:Finb/Bark,在AppStore中搜索“Bark”下载即可(开发者为“feng huan”),另有一个同类型的工具:chanify;
- 3、bark-server:Bark app的服务器端,非必须,但强烈建议有能力的朋友安装,它也是开源的,github:Finb/bark-server。
以上3个app(或工具)都是国人开发的,都是开源在github上的,其中2、3是同一个开发者开发的,毕竟它们是配套的。
短信转发原理:“短信转发器”自动监控并读取到短信,并把它转发到事先填写好的推送链接中,然后iPhone中的“Bark”app就会收到这个推送消息。
我的测试环境:
- 安卓机:Redmi Note 10 Pro, MIUI 13.0.8
- iPhone:iPhone 11, iOS 16.1
Bark设置
在iPhone AppStore中搜索并安装Bark app,安装好之后,要允许通知:在“iPhone系统设置”顶部搜索栏输入“Bark”搜索到Bark app,点它→通知→把所有通知权限都打开(当然这个也看你自己的需求)。
短信转发器的设置
系统设置
以我的红米手机MIUI 13.0.8为例,安装好“短信转发器”之后,点击:手机系统设置(齿轮图标)→应用设置→应用管理→搜索“短信”→找到“短信转发器”点进去:
- 1、自启动:打开“自启动”开关;
- 2、权限管理:把“发送短信、读取短信与彩信、通知类短信、读取通话记录”都设置为“始终允许”,其它权限看你的需求自行调整;
- 3、联网控制:WIFI、数据;
- 4、省电策略:无限制;
打开“短信转发器”,上滑进入任务管理→在任务管理中长按短信转发器→点击“锁”把它锁住(这样你清理任务的时候,不会把它清理掉,而是留在后台)
通用设置
打开“短信转发器”→点击底部最后一个按钮“通用设置”:
- 1、转发短信广播:开启;
- 2、转发通话记录:勾选一个或多个要转发的通知类型,然后开启开关(如果你不想转发来电通知,也可以不开启这个开关);
- 3、保活措施:开启“开机启动、忽略电池优化设置、不在最近任务列表中显示”这三个开关,“请求重试机制”,我设置的是重试1次,间隔1秒,超时10秒;
- 4、个性设置:设备名称、卡1名称、卡2名称 这三个自己写就行,在Bark
通过以上设置,理论上应该没啥问题了。
添加“发送通道”
点击“短信转发器”底部的“发送通道”→点击“右上角的+号”→选择“Bark”(红色图标):
- 1、通道名称/状态:你添加一个转发器肯定要有一个名称,我填的是“Bark”;
- 2、Bark-Server:打开iPhone中的Bark,默认打开的是服务器链接列表,你复制第一个链接,它是这样的
https://api.day.app/sdfdsSIJcddhr9qvmxgasdfLK/这里改成你自己的推送内容
你把后面那个中文删掉,变成下边这样,然后填到“Bark-Server”里即可(注意最后一定要/
结尾,否则会提示url格式错误)
https://api.day.app/sdfdsSIJcddhr9qvmxgasdfLK/
- 3、可选的全部留空不用填,最后的“通知级别”使用默认的“立即亮屏通知”;
- 4、标题模板:在iPhone中显示通知时,内容的顺序,它有:来源号码、卡槽信息、接收时间、设备名称 四个信息,这个可以留空,也可以根据自己的需求来调整顺序(主要调整在iPhone那边显示的顺序)。
测试:填好之后,点击右下角的“测试”,如果正常,“短信转发器”会提示“请求成功”,而iPhone那边的Bark app:
- 1、如果你正在Bark app界面中,它会弹出一个弹窗,上面有测试的短信内容(内容大概意思就是测试成功)和几个菜单;
- 2、如果你不在Bark app界面中,则会通过iPhone的通知弹出一条消息通知,通知内容大概就是测试成功;
测试没问题之后,点击中间的“保存”按钮保存即可。
添加“转发规则”
添加短信转发规则:
打开“短信转发器”app→点击底部的“转发规则”→选择“短信、通话、应用”三个选项卡中的“短信”→点击“右上角+号”:
- 1、发送通道:选择前面添加好的通道,我这边通道名称叫“Bark”(当然这个名称是你添加通道时填写的,你当时填的是什么,这边就会显示什么);
- 2、匹配卡槽:全部;
- 3、匹配字段:短信内容(如果希望转发所有短信,这里直接选“全部”,这样下边的4、5两点就不会显示,也不用选);
- 4、匹配模式:包含;
- 5、匹配的值:填“验证码”;
- 6、启用该条转发规则:开关打开;
- 7、启用自字义模板和启用正则替换内容,这两个开关我是没有打开,因为用不到;
- 8、点击右下角的“测试”按钮→测试模拟的来源号码可以随便填,测试模拟的短信内容也可以随便填,但必须要带“验证码”三个字,不然前面的规则就识别不到它,填好之后,点击“测试规则”,如果正常,iPhone那边就会收到一条消息提醒,提醒的内容就是你输入的内容;
- 9、点击“返回编辑”→点击底部的“保存”。
添加app消息通知转发规则:
打开“短信转发器”app→点击底部的“转发规则”→选择“短信、通话、应用”三个选项卡中的“应用”→点击“右上角+号”:
- 1、发送通道:选择前面添加好的通道,我这边通道名称叫“Bark”(当然这个名称是你添加通道时填写的,你当时填的是什么,这边就会显示什么);
- 2、匹配字段:看你的需求,如果你只是想转发某个app的通知,那就选择“app包名”;
- 3、匹配模式:看你的情况,我选“是”,代表“等于号”;
- 4、匹配的值:由于我是转发微信通知,所以我填“com.tencent.mm”,这是微信的包名(每个app的包名是啥,只能网上自己搜索了);
- 5、启用该条转发规则:开关打开;
- 7、启用自字义模板和启用正则替换内容,这两个开关我是没有打开,因为用不到,你用的到可以自己设置;
- 8、点击右下角的“测试”按钮→“测试模拟的app包名”就填第4点中的包名,通知标题和通知内容随便写,最后点“测试规则”,如果成功,底部会显示绿色的“请求成功”,说明测试通过;
- 9、点击“返回编辑”→点击底部的“保存”。
测试短信转发
- 1、把安卓机熄屏;
- 2、用iPhone向你的安卓机卡1或卡2发一条短信,短信内容记得包含“验证码”三个字;
- 3、如果一切正常,发送一会儿之后,你iPhone应该会收到一条消息通知(Bark app的通知),这条通知的内容,就是你刚刚发给你安卓机的内容,你也可以把安卓机和iPhone都熄屏,然后叫朋友(或者拿家里其它人的手机)给你安卓机发一条短信(注意短信内容包含“验证码”三个字),如果一切正常,你的安卓会收到这条短信,而iPhone也会通过Bark app的通知看到这条短信的内容。
缺点:极少数网站或app发验证码短信的时候,短信内容不包含“验证码”三个字,我特地看过我安卓机上的验证码短信,看到过一条验证码短信,内容中不带“验证码”三个字,这样的短信肯定是无法匹配规则,无法被转发到iPhone的,当然了,这样的验证码短信真的是极少,所以几乎可以忽略这个缺点。或者你干脆就设置成转发所有短信,这样就不会有这个问题了。
搭建自己的Bark-Server
搭建Bark-Server需要你懂Linux系统基础知识,会安装docker并懂docker的基础使用,会安装nginx以及能看懂nginx配置文件。
短信推送流程
- → 1、安卓机收到短信/app消息通知;
- → 2、“短信转发器”读取短信/app消息通知;
- → 3、“短信转发器”判断短信/app消息通知内容是否符合你添加的规则,比如是否带“验证码”三个字;
- → 4、如果符合规则,则把它推送到“Bark-Server”链接中(这个链接在添加“发送通道”时有填写) ;
- → 5、Bark-Server收到短信/app消息通知内容,并把它推送给苹果服务器;
- → 6、苹果服务器接收到消息通知后把它推送到你的iPhone手机上。
现在问题就在于第4点,“Bark-Server”链接是app默认提供的,这样相当于你把你的短信(可能是银行卡验证码)和手机号都转发到了Bark开发者的服务器上,这样肯定不太放心,所以我们要自己搭建。
搭建Bark-Server
直接看我在github上开源的bark-server-docker文档即可,已经写的非常详细了。
搭建好之后,把前面添加“发送通道”中的那个推送地址换成你自己的地址就行(还是要从Bark app中复制粘贴),注意最后一定要/
结尾,否则会提示url格式错误。