APP接入
版本:V2.1.0
总览
此文档介绍了如何接入滴滴开放平台,并使用滴滴开放平台的相关服务。
Android接入
接入SDK
- 下载官网最新 SDK 包
didi_sdk_v2.1.xxxx.aar
- 打开
Android Studio
- 将
aar
拷贝至接入工程libs
目录 - 在接入工程
build.gradle
中配置aar
加载目录repositories { flatDir { dirs 'libs' } }
- 在接入工程
dependencies
中添加SDK 的aar
依赖dependencies { compile(name: 'didi_sdk_v2.1.xxxx', ext: 'aar') }
注:
SDK中包 so
动态库,支持主流 cpu 架构,目前所有支持的ABI有:armeabi
、armeabi-v7a
、arm64-v8a
、x86
,为减少 SDK 体积,aar
中默认值包含 armeabi-v7a
架构 so,有需要其他架构 so 的用户,请自行从官网下载 SDK so 集合,将相应的架构 so 复制到接入工程 libs
目录下。
使用滴滴服务
注意 由于滴滴的服务依赖于定位,如果您没有主动传入定位信息则滴滴开放平台会自动定位,由于系统定位精度差定位速度慢,推荐您接入了第三方定位SDK。
在传入已有坐标时对应的maptype
参数如下表:
定位厂商 | 地图类型 | |
---|---|---|
腾讯soso | soso | |
高德 | soso | |
百度 | baidu | |
系统默认 | wgs84 |
需要传参数的的Map的key,value都为String,返回值都为Map的key,value都为String,在返回的Map中包含errorno
和errormsg
,其中errorno
为判断返回是否成功的标志,返回0为成功,具体返回值的含义需要根据服务器接口对应文档获取。
1.在入口Activity中调用
DIOpenSDK.registerApp(context,"appid","secret")
// appid和 secret 需要向开放平台申请
DIOpenSDK.setMapSdkType(DIOpenSDK.MapLocationType.*)(可选)
应在调用其他滴滴方法之前调用
2.直接调用打车业务
DIOpenSDK.showDDPage(Context,HashMap<String,String>);
Context参数尽量传Activity 其中HashMap为需要传给滴滴开放平台的参数
名称 | 类型 | 说明 | |
---|---|---|---|
fromlat | string | 出发地纬度 | |
fromlng | string | 出发地经度 | |
tolat | string | 目的地纬度 | |
tolng | string | 目的地经度 | |
biz | string | 默认选中的业务线类型。1打车,2专车 | |
fromaddr | string | 出发地地址 | |
fromname | string | 出发地名称 | |
toaddr | string | 目的地地址 | |
toname | string | 目的地名称 | |
phone | string | 乘客手机号,方便乘客登录使用,会默认补全到登录框中 | |
maptype | string | 经纬度类型 wgs84/baidu/soso |
3.使用滴滴openapi直接调用滴滴接口
在申请appid和secret时,可以同时申请通过滴滴开放平台sdk直接调用滴滴服务器相应接口(需要经过商务协商)或者直接通过服务器和开放平台服务器直接对接。
服务器和服务器对接:
通过在主线程中调用
DIOpenSDK.asynGetTicket(Context context, TicketType typeContext context, TicketType type, DDCallBack callBack)
或者在分线程中调用DIOpenSDK.syncGetTicket()
获取ticket,回传到第三方服务器用来服务器和服务器对接。直接调用滴滴服务器API
通过在分线程中调用
DIOpenSDK.syncCallDDApi(Context context, String apiname, Map<String, String> params)
或者在主线程中调用DIOpenSDK.asynCallDDApi(Context context, String apiname, Map<String, String> requestParams, DDCallBack callBack)
即可调用滴滴服务器api具体可以调用的API列表需要跟商务确认。直接调用滴滴功能页面
通过直接在主线程中调用
DIOpenSDK.openPage(Context context,String page, Map<String, String> extra)
即可打开滴滴提供的指定的功能性页面,比如登录、订单列表等,如果调用成功返回true调用失败返回false。调用滴滴司机电话
当您调用滴滴相应功能获取到司机的加密手机号后需要使用
DIOpenSDK.callPhone(Context context, String phone)
来拨打司机电话。
配置界面UI
SDK提供了自定义界面UI的接口,通过 DIOpenSDK.setUIOptions
设置 UI 参数:
UIOptions uiOptions = new UIOptions();
uiOptions.setCloseEnable(true); //设置是否显示关闭按钮
uiOptions.setProgressBarEnable(false);//设置进度条是否显示
uiOptions.setProgressBarStyle(R.style.Widget_AppCompat_ProgressBar);//设置进度条样式
uiOptions.setBackButtonTextColor(Color.RED);//设置返回按钮文字颜色
uiOptions.setCloseButtonTextColor(Color.BLACK);//设置关闭按钮文字颜色
uiOptions.setTitleTextColor(Color.YELLOW);//设置标题的文字颜色
uiOptions.setTitleBarBackgroundResource(R.color.holo_blue_bright);//设置标题栏背景
DIOpenSDK.setUIOptions(uiOptions);//设置UI参数
ReleaseNote
- v2.1
- 升级 openssl 库到 v1.1
- 解决多个安全漏洞
- 支持自定义UI
IOS
1 主功能配置
SDK依赖于微信支付,需要拉起微信,所以主工程中的plist中需要添加微信的schema。 framework需要使用定位权限,其中定位的提示文案可以自己设置。 工程Build Settings
里Other Linker Flags
需要添加 ObjC 项,以确保 .framework 里的类别能加载上
2 SDK注册
App启动后需要使用滴滴开发者中心申请的appid和secret注册SDK,调用方法如下:
[DIOpenSDK registerApp:@"your appId" secret:@"your secret"];
3 调起打车页面
/**
* 通过该方法调起滴滴页面
* @param parentController 需要调起叫车页面的controller
* @param animated 展现滴滴页面时是否需要动画
* @param optionParams 打开打车页面的可选参数,参数列表可以参见【参数列表】栏目
* @param delegate 扩展参数,后续用于SDK和app进行一些交互
*/
(void)showDDPage:(UIViewController *)parentController
animated:(BOOL)animated
params:(DIOpenSDKRegisterOptions *)optionParams
delegate:(id<DIOpenSDKDelegate>)delegate;