iOS双开微信的跳转授权问题

背景

最近TrollStore用得挺多,给自己也弄了两个微信。但是在微信读书授权的时候,唤起的微信登录,是A微信,不是B微信。目标是希望能唤起B微信。

具体过程

如果你不希望看原理,那么就直接跳到总结

顺带说下,A微信为官方的Bundle ID:com.tencent.xin

B微信是自己定义的一个:com.tencent.xinVan

Bundle ID是iOS App,唯一的身份标识,所以不能重复

  1. 结合第一性原理,去了解了一下iOS在开中是如何唤起另一个App的。找到了CFBundleURLSchemes这个参数。这个参数是被唤起的App,向iOS提交自己的资源名。

如果写wechat,那么wechat://xxx这样的schemes,就会请求唤起微信。

  1. 由于主动唤起的代码肯定是无法修改的(最多找到常量的配置地方,去修改,但是那样就需要静态分析什么的,比较麻烦),所以就想着简单点,直接修改被唤起App的scheme。
  2. 其实就是A、B两个App,都是同样的scheme,所以想着,把A的scheme配置去掉。于是乎,用Fliza找到A的info.plist文件,去掉了CFBundleURLSchemes相关的配置。

这个时候,我用Safari去调用B中写的任何一个scheme,都是可以成功唤起B,而不是A的。但是微信阅读依旧唤起的是A,而不是B……这个就很尴尬。

考虑到是不是系统缓存的问题,但是搜了一圈没搜到,也不想重启。于是乎,就卸载了A,修改了包中的info.plist文件,重新打包签名安装。

OK,搞定。

总结

对于多开应用的情况下,如果你想要唤起B,而不是A。

那么做如下几步:

  1. 安装签名后的B;
  2. 修改A的info.plist文件:找到CFBundleURLSchemes,删掉其中的数组配置;
  3. 打包安装签名后的A;

Leave a Reply

Your email address will not be published. Required fields are marked *