- 首发:2023-08-28 21:24:45
- 随笔
- 8803
由于工作需要,长期以来我都是iPhone作为主力机,安卓作为备用机。经常出现iPhone在充电的时候需要接收验证码。为了实现备用机和主力机一致的功能体验,特地让AI帮我写了一个APP实现“iPhone短信自动转发到Android手机”。
众所周知,Android手机APP是可以可以申请读取短信内容权限的,实现Android短信自动转发或者自动识别验证码是比较容易的。但是目前为止,我并没有发现市面上存在IOS应用程序可以实现读取短信的。真的没有办法实现读取短信内容吗?带着疑问我让AI帮忙翻阅了Apple开发者文档,最后发现其实是可以实现这个功能的。
在Win11中使用新版Android Studio开发体验真的非常棒,在最新硬件的加持下,媲美IOS开发体验。
绝大部分代码由AI完成,否则我也无法在一天之内完整这个应用程序的开发。不过AI的Bug也是真的多,整个过程我真机测试调试了一百多次,发了一百多条短信。
最终在第二天凌晨1点左右完成了所有功能的开发。实现了我能想到的所有刚需功能。
最终实现的功能:
- 实时和iPhone通讯,接收iPhone端自动转发过来的短信。
- 展示Android和iPhone的实时连接状态,任意一端不在线,另一端可以收到离线提醒。例如iPhone放在书包无电量自动关机后,Android端将会显示离线状态。由此保障了只使用Android端的时候能确保收到短信。
- 复制及转发短信的功能,目前无法实现回复短信的功能。
- “已读”状态提示,Android读过的短信会自动在iPhone中标记已读状态。
- 实现了Android端的开机自动启动,“前台服务”功能,实现始终保活(保持后台运行,不会被系统强制自动关闭),由于整个应用只有一个简单的Service,内存占用极低,几乎不影响续航。Ios端和Android端开机自动连接。任意一端都可以随意开关机,实现整个转发过程是无感的。
- 当通过Android系统通知界面移除通知的时候,自动已读Ios端短信。在我的使用场景下,短信主要功能就是接收验证码,看完了通知就直接标记已读更省事
- 实现了一键已读全部和删除所有历史短信的功能。
我希望实现但暂时没有实现的功能:
- 通过WebRTC实现点对点音视频通话,从而实现Android端接听电话的功能。理论上是可以实现的,但是我用了其他替代方案,就没有去做了。借助CallKit可以实现无需事先启动iPhone端APP接听音视频,这个功能之前我在视频系统中实践过,用户体验极佳。另一种方法,可以通过呼叫转移实现主力机没有接听的时候转发到备用机,也可以通过APP自动设置,监测到Android手机被使用的时候,自动设置呼叫转接到备用机,如果Android手机3分钟没有使用,自动设置取消呼叫转移。当然还有其他方法,这里就不再赘述了。
- iPhone端已读短信后同步到Android端。这个功能由于Android端缺少写入默认短信应用信息的API而不得不放弃。
借助第三方实现的功能:
- 借助开源的短信转发器,可以实现安卓自动转发到iPhone。这样就是双方互相转发了。
- 实现了来电同时显示在iPhone和Android端,可以在任意一端接听,也可以在任意一端挂断后另一端同步挂断。
总结:
本来计划开源APP代码的,但是考虑到这个应用极有可能被不法分子利用,最终放弃开源。
由于精力限制,暂时没有进行APP备案和上架。
可以在iPhone锁屏状态下转发短信吗?
公司值班的同事找我要验证码登录系统,有时我在睡觉没看到,能否分享一下IPA文件
很抱歉,出于客观原因暂时无法分享。
大神,Apple开发者文档能不能获取手机蜂窝网络信息的方法,就是在拨号界面输入"3001#12345#"弹出的信息,包含Serving Cell Info(BAND,Cell ID,PCI等),通过开发一个app来获取这些信息,而不用每次输入拨号。
Apple的iOS SDK并未公开API来直接获取以"3001#12345#"访问的Field Test模式中的蜂窝网络信息。这类信息被认为是敏感且低级的,开发者通常是被阻止访问的。 一些私有API可能能提供这类信息,但是使用私有API的应用无法通过App Store的审核,因此这可能不是一个可行的解决方案。
如果只是为了收新短信,用树莓派应该也能做到转发功能。
苹果是不允许读取用户的短信内容,但是短信拦截功能是可以变相的做到。
https://developer.apple.com/documentation/sms_and_call_reporting/sms_and_mms_message_filtering
短信拦截API没有办法获取对方的手机号。
除了ios平台,其他平台要转发短信应该都挺容易的。
作者老哥,代码不开源。可以大致说一下实现思路吗😕
直接问AI吧😂
由于我使用的方案并不需要“快捷指令”等APP的配合。也无需任何系统权限。因此存在被滥用可能,请大家不要因为此事联系我,谢谢。
能提供一下思路吗,作者大大
像是借助蓝牙实现的功能?
感觉类似手表/carplay那种一样
有一个误区,需求是通过备用机读取主力机上的短信,其实并不需要通过短信转发,需要的是显示短信发送号码+短信内容,使用转发的方式需要消耗主力机的短信额度。可以将短信以文本方式存到云端,然后备用机读取即可。
感谢回复! Clang 在生成时沿用了 GCC 的版本号标识,我是不是可以理解为Clang 18.1.4生成时使用的就是GCC4.8,所以我后续使用gcc 9.4
gcov
就会有不兼容的问题抱歉,这块我也不太清楚,尝试寻求AI的帮助吧。
我在这个过程中遇到了各种问题- -,现在在UDC core: g_serial: couldn't find an available UDC卡住了,请问大佬有什么解决方案吗,还是说我前置的设置就错了呢,> 这个需求很特殊。是可以的,但是比较困难,需要修改驱动配置。
好思路呀!!
关于hex编辑器,网上没找到特别好用的(小白没办法),最后在vscode上扩展一搜hex,第一个安装一下就可以用vscode进行hex编译了