钉钉的统一跳转协议是指:钉钉客户端支持被唤起的一个scheme协议,当第三方开发者在其他app发起这个协议的时候,钉钉客户端会捕获指定格式URI跳转,并分析URI内容拿到页面描述信息,以此打开客户端本地页面。
这个能力可以支持一个如下场景:
一个第三方客户端app,在其页面内通过一个url跳转可以打开钉钉的客户端,同时钉钉会帮助其打开一个指定的url页面。代码示例如下:
Android 端代码如下:
```Java
/**
* 打开钉钉客户端 并在钉钉客户端打开传入的指定url
* @param context 安卓上下文环境,推荐Activity Context
* @param url 需要在钉钉客户端打开的页面地址
*/
private void startDingtalkApp(Context context , String url){
Intent intent = new Intent(Intent.ACTION_VIEW);
String jumpUrl = "dingtalk://dingtalkclient/page/link?url=" + URLEncoder.encode(url); //一定要对url做encode
Uri uri = Uri.parse(jumpUrl);
intent.setData(uri);
if (null != intent.resolveActivity(context.getPackageManager())) {
context.startActivity(intent);
}
}
```
iOS代码如下:
```Objective-C
+(BOOL)openDingTalkUrl:(NSString*) targetUrl{
if (targetUrl.length == 0) {
return false;
}
NSString *url = [NSString stringWithFormat:@"dingtalk://dingtalkclient/page/link?url=%@",
[targetUrl dt_urlEncode]];
return [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}
```
需要注意的是url后面的参数(即你希望钉钉打开的url页面地址)必须做urlencode。