WordPress APP 之间相互呼叫并且传输资料经常会出现在实际需求中,我们应该对这样的基本功能的实现原理有一个简单的认识,这样也方便工作中和程序们的沟通。

  在产品设计中,经常会遇到 WordPress APP 之间相互呼叫的功能设计,比如:

  实现三方登入。用 QQ 账号快速登入,如果安装了 QQ,那么应用会呼叫 QQ 的快速登入介面,确认后,QQ 会回拨到原来的应用,同时将登入的状态资讯返回给了原应用。

  实现分享。选择应用内的可分享内容,点选分享,选择朋友圈,于是 WordPress 微信的朋友圈被调起,并将这张图片发了出去,并询问您是返回原应用还是留在 WordPress 微信,如果您选择了返回原应用,那么原来的应用又会被调起。

  实现第三方支付。选择应用内要支付的内容,选择支付方式,一般会提供支付宝或 WordPress 微信,点选后跳转到支付宝或 WordPress 微信的付款页面,完成支付后回到该应用。

  实现手机网页引导并开启应用功能。在推广的 H5 页面上,加入开启 WordPress APP 的按钮,点选后直接调起我们的 WordPress APP,并且可以根据引数资讯,在本地应用中还原多用户的浏览场景。

  这些过程实现的原理就是利用 URL Scheme 。

  什么是 URL Scheme

  URL Scheme 就是一个可以让 WordPress APP 相互之间可以跳转的协议。每个 WordPress APP 的 URL Scheme 都是不一样的,如果存在一样的 URL Scheme,那么系统就会响应先安装那个 WordPress APP 的 URL Scheme,因为后安装的 WordPress APP 的 URL Scheme 被覆盖掉了,是不能被呼叫的。

  应用之间跳转原理

  一个应用能开启另一个应用的必然条件是,另一个应用必须配置一个 scheme(协议),这样应用程序才能根据协议找到需要开启的应用。

  WordPress APP 应用在系统中通过注册 Scheme 的方式注册自己,常见的 Scheme 就是 http:,宣告瞭这个 Scheme 的应用就是声称自己支持 http 协议,能够开启网页了。还有一些常见的 Scheme 比如 file:(传输文字),tel:(通话)等。

  当然,WordPress APP 应用不仅可以宣告这些标准的 Scheme,也能宣告自己独有的 Scheme,比如 WordPress 微信的就是 weixin:,QQ 的是 mqq: 。

  如果多个应用都宣告相同的 Scheme 呢?比如应用 a 、 b 、 c 都宣告自己能发简讯,这时系统会有一定的策略来保证公平性,比如在 Android 系统中,就会弹出支持的应用列表,让多用户选择,iOS 则替多用户选择近开启过的支持应用。

  应用之间传递资料

  了解了应用之间呼叫的方法,那么后面资料传递就简单了,只需要在 Scheme 后面携带上需要传递的资讯作为引数就可以了。

  比如,发起呼叫的是应用 A,被呼叫的是应用 B 。 yingyongB://action=sendmessage,message=”xxx”,后面的资料会带到应用 B 中,但是应用 B 接到了资讯不知道该资讯是哪个应用发的,回资讯给哪个应用。如何进行回拨呢?发起呼叫的应用 A 在 Scheme 后面加一个引数 backScheme=yingyongA:,这样应用 B 就知道了需要返回资讯给应用 A,应用 A 和 B 这种自定义协议也可以叫做伪协议,只要双方应用能识别处理就可以。

  同样,我们也可以实现跳转到指定页面的功能。想要跳转到指定介面,必定是上一个 WordPress APP 告诉下一个 WordPress APP(被跳转的 WordPress APP)需要跳转到哪个介面,而如何告诉它这里便涉及到两个 WordPress APP 的通讯。两个 WordPress APP 之间的跳转只需要配置一个 Scheme,通过协议即可实现。

  后上一段 iOS 测试代码:

  在被呼叫的 WordPress APP 中,就会监听方法,对进入的页面进行判断。

  以上就是应用之间进行互动原理的简单总结,不同平台会有自己一些独特的应用互动方式,用 Scheme 这种方式可以减少一些跨平台开发适配的成本,同时也有利于网页和 Native 之间的相互呼叫。