URD协议

背景

为了提高App运营推广的灵活度,也即是app能够在任何地方、任何场景下被调起,以及调起指定的页面(已注册URI的页面),或多app之间传输数据,专为终端制定了一个URD协议,URD协议是App内及APP间页面跳转的核心通道。

URD支持跨平台,可实现端间跳转、端内跳转

协议

基于URI

URD协议将沿用URI的规范,即RFC 3986规范,文档地址:http://www.ietf.org/rfc/rfc3986.txt

RFC3986中指定了以下字符为保留字符:

! * ' ( ) ; : @ & = + $ , / ? # [ ]

uri格式为 scheme://authority/path?query#fragment

其中authority格式: user-info@host:port

例如:

http://user:pass@www.example.com:1234/path?query=true#fragment

弊端

有时客户端需要支持uri嵌套url,其中一个场景如:

doumi://string/http://www.doumi.com/index.html?arg1=data1&arg2=data2

从国际规范来看,其中arg1=data1&arg2=data2应该属于外层的doumi的uri,但是有时从人为的角度认为arg1=data1&arg2=data2归属于内层的http的需求。

URD协议

定义的URD协议如下:

urd格式为 scheme://action/path-encoding?query#fragment

1、需要对path部分进行url encode,这样子path部分可传任何字符串,path为页面的指定路径,若唯一可不填。针对端外跳端内,若某action下页面唯一,可不填,以避免路径泄露

2、scheme为doumi,在客户端实现中,一个scheme就是一个注册器

3、authority部分,也就是action用来指定行为动作。

string字段(通用类型):代表path部分为一个字符串,此字符串可以是任何的协议或字符串。转到到首页