昨天在一个 App 中购买订阅(App 内购),当我点击用支付宝支付时,发现老是跳转到一个“云南移动”的 App,试了几次都不能成功,后面想了一下,应该是支付宝的 URL Scheme 被“云南移动”给注册了吧?于是把手机上的“云南移动”给卸载了,果然支付宝就支付成功了。
本来 iOS 的 URL Scheme 是为方便 App之间调用传参而设计的。我们可以通过一个 openURL 方法来打开指定的 app,并传递某些参数。但是苹果没有对 App 的身份进行任何验证,URL 中的参数也是明文传输的,这就导致一些流氓软件可以任意拦截系统传递给其它 App 的 URL Scheme 调用,比如“云南移动”之类的 App。如果这些 App 有意在 UI 上对要模拟的 App 进行一些模仿,用户很难知道自己的信息有没有被这些 App 所滥用和泄漏,细思极恐……