迫于“工作生活两不误”,需要双开微信,记录一下在iPhone上自签双开微信及推送消息的过程
机型: iPhone 16 Pro
系统: iOS 18.1
iOS主微信(商店): 8.0.53
iOS副微信(砸壳): 6.7.4 | 7.0.12 | | 7.0.13 | 7.0.14 | 8.0.24 | 8.0.28
安卓微信(转发) : 6.7.3 | 7.0.21 | 7.0.22
SideStore自签
由于系统版本太新,无法使用TrollStore,剩下的不花钱稳定可控的办法就是用个人账号自签(7天内要续签)。
AltStore 是一个出了多年的签名工具,签名需要将手机连接电脑(局域网 / 有线),这种方式比较稳定可靠,但是比较麻烦,出门容易焦虑。(顺带一提,AltStore在欧盟作为第三方商店运营)
安装SideStore
SideStore 是一个新出的签名工具,可以实现不连接电脑就签名,大概原理是存储了一个手机和电脑配对的认证文件,连接到中间服务器,利用这个文件与苹果签名服务器通信。 安装过程参照 官方说明 (需要先安装 AltStore )
有个注意点,安装AltStore需要先做完前面的步骤,信任证书之后才能看到开发者选项。
自建服务器
完成WireGuard和SideStore安装后,建议自建Anisette Server(中间服务器),据说官方服务器用的人多不稳定容易掉签。
自建完成后需要在软件内修改服务器地址,官方文档说可以在系统设置-app内找到,0.5.8版本没找到这个设置(疑似iOS18导致的Bug)。目前可用的修改方法是,在APP内的Anisette Servers选项中修改(填写服务器列表文件的URL),需要手动托管一个JSON文件(可以用github gist等托管),内容如下:
{
"servers": [
{
"name": "SideStore",
"address": "https://ani.sidestore.io"
},
{
"name": "SelfHost",
"address": "自建Anisette Servers地址"
}
]
}
Refresh刷新后选中自建服务器SelfHost。
自签IPA
按官方安装步骤装好WireGuard并导入配置后,先启动WireGuard VPN,进入SideStore,左上角+
从文件导入即可(过程比慢,可能需要1分钟,不要推出App)
个人账号能签10个App IDs,初次安装后,AltStore占用2个,SideStore占用2个。 App IDs无法手动删除,只能等待7天后自动过期,同一包名签名数量应该没有太大闲置,别太频繁就好。
微信修改
iOS18可用微信版本包含 6.7.4 - 7.0.14 和 8.0.22 之后。
经测试后,6.7.4 版本无法改成iPad登录,且容易闪退;7.0.x 版本占用小,更顺畅,但聊天和主界面切换有标题错位(灵动岛导致);8.0.x 版本体验完整,8.0.28开始支持应用内弹窗,但是比较臃肿。
最后选择了 7.0.12 版本,除了标题有点难受(较 .13 .14 版本好一些),其他都挺好。
可以下载我已经改好的ipa砸壳包,直接自签安装使用: Taosky/trollstore-self-signed-ipa-cn/releases/tag/fchat
也可以下载纯砸壳或带净化的版本(8版本带的净化支持改iPad登录),按下面的步骤自行操作: Taosky/trollstore-self-signed-ipa-cn/releases/tag/wechat
将下载的砸壳包解压缩后,修改info.plist
。
-删除Pluglns
和Watch
文件夹。
-修改包名,将com.tencent.xin
修改为com.tencent.fchat
。
-修改Url Scheme
,将wexin
修改为fchat
用来调起微信,删除其他的值避免分享等功能冲突。
-将压缩文件传送到iPhone,文件管理器内重新压缩并修改后缀为ipa
(PC端压缩后直接用SideStore签名会错误)。
-注入iPad登录插件(可选),实现和其他手机同时登录,用于消息通知的转发(见 #消息推送 )。
消息推送
修改包名 (Bundle ID) 后无法推送消息,目前有几种方案。
一是注入常驻后台发送本地通知的插件,比较费电,插件也不容易找到;二是 apn 推送插件 ,好处是推送体验和官方App一致,缺点是需要一台iPad挂后台,还需要"接收端需要使用带有推送权限的自签名证书",过于复杂,直接放弃。
SMSForwarder转发
剩下的比较好操作的方案就是通过在一个闲置安卓设备登录相同的微信,转发通知到iOS。
7.0.0 - 8.0.53 版本官方直链: DJB-Developer/wechat-android-history-versions
7.0.21 Play版: https://d.apkpure.com/b/APK/com.tencent.mm?versionCode=1782
6.7.3 Play版: https://www.52pojie.cn/thread-1240581-1-1.html
如果闲置设备是安卓手机(平板也可以),iOS的多开微信需要注入iPad登录插件变成iPad登录(已注入版本可在上一步链接下载),旧安卓设备可选择从 7.0.21 play版 降级 6.7.3 版本获得更流畅的体验(adb shell cmd package uninstall -k com.tencent.mm
保留数据卸载,重启后adb install
安装旧版本);
如果闲置设备是安卓平板,直接扫描平板二维码登录即可,安卓端支持平板登录的最低版本是7.0.22(可能无法直接登录,建议先下载 7.0.21 Play版 再升级安装)。
使用SMSForwarder,配置转发到iOS Bark,添加url参数,点击通知可跳转到双开的微信(UrlScheme: fchat://
)。
这种方案也存在弊端,就是打开微信后,消息仍在推送,多条消息不会被合并,每一条都会推送过来。
推送控制
为改善推送体验,写了一个简单的Flask服务器,用于SMSForwarder(WebHook),作为发送消息到Bark的 “中间商” ,控制推送暂停恢复,优化体验。(配合SMSforwader WebHook 和 快捷指令)
备份恢复
实测两个8版本微信双开之后(7、8版本搭配未测试),两个微信均无法通过电脑端微信备份和恢复聊天记录,会提示连接失败等错误。(猜测是电脑端微信识别到了同一设备有多个微信)
而一个微信通过注入iPad登录插件后,两个微信都可以正常备份恢复。
而双开版本换成6.7.4之后,可以通过电脑端备份恢复,无法通过同一网络平板手机迁移(提示网络复杂等错误)。