1. 使用说明
欢迎使用“AICC”的移动端开发者工具套件(SDK)。我们分别为Android和iOS平台提供SDK,通过SDK,可以在您的APP中快速集成拨打电话的功能。
2. 技术原理
下图展示在app中实现接入SDK语音通话的基本工作流程:
3. Android开发文档
版本: 10.2.8.6
3.1. 简介
适配android6.0以上,即:SdkVersion 23以上适配androidx。 为什么要适配androidx? 从 API 28(Android 9.0,Pie)开始,Google 推荐开发者从原来的各种支持库转移到一个新版本的名为 AndroidX 的支持库。 它相比老支持库有着无需操心版本控制、实时更新的优点。原有的支持库将被保留并且可以继续使用,但接下来所有新的支持都将发布在 AndroidX 上。
3.2. 接入SDK
3.2.1. 本地接入
将SDK aar文件 复制到项目的libs中,并且要在model的build.gradle中添加以下代码
implementation files('libs/xxx.aar')
implementation("com.koushikdutta.async:androidasync:3.1.0")
implementation("org.slf4j:slf4j-api:1.7.30")
implementation("org.webrtc:google-webrtc:1.0.32006")
implementation("org.java-websocket:Java-WebSocket:1.5.3")
3.2.2. 添加权限
<!-- 录音所需权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 限制在 Android 12 以下的系统才申请这个蓝牙权限-->
<uses-permission android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30" />
<!-- 适配 Android 12 的蓝牙机制,申请与已配对的蓝牙设备通讯-->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<!-- 网络访问所需权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission
android:name="android.permission.INJECT_EVENTS"
tools:ignore="ProtectedPermissions" />
3.2.3. 动态申请权限
Manifest.permission.RECORD_AUDIO
当编译的 targetSDK 高于 31 (Android 12)时,还需要额外动态申请蓝牙通讯权限才可以使用蓝牙耳机
Manifest.permission.BLUETOOTH_CONNECT
3.4. 实现拨打电话功能
3.4.1. 初始化
初始化 SDK,在整个应用程序全局只需要调用一次, 建议在Application继承类中调用。
参数说明:
参数 | 说明 |
---|---|
Context |
Application类的Context |
示例代码:
/**
* 初始化 SDK,在整个应用程序全局只需要调用一次, 建议在Application继承类中调用。
*
*/
TiPhone.init(context);
3.4.2. 座席上线
使用员工编号密码
通过 员工编号(crmId) + 员工密码(crmIdPassword) 上线
参数说明:
参数 | 类型 | 说明 |
---|---|---|
strPlatformUrl |
String |
平台地址 |
enterpriseId |
String |
企业id 例如:7000002 |
crmId |
String |
员工工号 例如:10001 |
crmIdPassword |
String |
员工密码 例如: xxxxxx |
bindTel |
String |
座席绑定的手机号 例如:138xxxxxxxx |
showName |
String |
显示名称例如:"xx商家",默认无名称 |
isTelExplicit |
boolean |
配置是否需要手机号外显。true 为使用手机号外显,false 为使用固话外显,默认为 false。(提示:外显是被叫在接听时所看到的来电号码) |
tiPhoneManagerCallBacks |
TiPhoneManagerCallBacks |
回调监听 |
示例代码:
/**
* 座席上线接口
*
* @param strPlatformUrl 平台url
* @param enterpriseId 企业编号
* @param crmId 员工工号
* @param crmIdPassword 员工密码
* @param bindTel 绑定手机号
* @param showName 显示名称
* @param isTelExplicit 是否需要手机号外显
* @param tiPhoneManagerCallBacks 参数回调
*/
TiPhone.getInstance().loginTiPhone(strPlatformUrl,enterpriseId,crmId,crmIdPassword,bindTel,showName,isTelExplicit, new TiPhoneManagerCallBacks() {
@Override
public void onError(String eventMessage) {
}
@Override
public void onNext(LoginResultBean loginResultBean) {
}
});
回调参数LoginResultBean对象说明:
字段 | 类型 | 说明 |
---|---|---|
code |
int |
状态码 |
message |
String |
状态说明 |
cnoNum |
String |
座席号 |
状态码对照表:
状态值 |
说明 |
200 |
操作成功 |
5000 |
参数验证失败 |
6000 |
鉴权失败 |
6001 |
没有分配分机号 |
6002 |
请求语音发送失败 |
6003 |
需要输入语音验证码 |
6004 |
语音验证失败 |
7001 |
登录失败 |
7002 |
退出登录失败 |
7003 |
登录失败,座席超过并发限制 |
8001 |
更新密码失败 |
8011 |
预览外呼失败 |
8012 |
更新座席状态失败 |
8013 |
获取座席转台失败 |
|
使用员工编号密码,同时指定分机号
通过 员工编号(crmId) + 员工密码(crmIdPassword)+ 分机号(extendNum) 上线
参数说明:
参数 | 类型 | 说明 |
---|---|---|
strPlatformUrl |
String |
平台URL地址 |
enterpriseId |
String |
企业id,例如:7000002 |
crmId |
String |
员工工号,例如:10001 |
crmIdPassword |
String |
员工密码,例如:xxxxxx,传递crmId时该值必传 |
bindTel |
String |
座席绑定的手机号,例如:138xxxxxxxx |
showName |
String |
显示名称例如:如为"",则为默认值 |
isTelExplicit |
boolean |
是否需要手机号外显例如:使用固话外显则为 false ,使用手机号外显则为 true |
extendNum |
String |
分机号(非必填) |
tiPhoneManagerCallBacks |
TiPhoneManagerCallBacks |
回调监听 |
|
示例代码:
/**
* 座席上线接口
*
* @param strPlatformUrl 平台url
* @param enterpriseId 企业编号
* @param crmId 员工工号
* @param crmIdPassword 员工密码
* @param bindTel 绑定手机号
* @param showName 显示名称
* @param isTelExplicit 是否需要手机号外显
* @param extendNum 分机号(非必填)
* @param tiPhoneManagerCallBacks 参数回调
*/
TiPhone.getInstance().loginTiPhone(strPlatformUrl,enterpriseId,crmId,crmIdPassword,bindTel,showName,isTelExplicit,extendNum, new TiPhoneManagerCallBacks() {
@Override
public void onError(String eventMessage) {
}
@Override
public void onNext(LoginResultBean loginResultBean) {
}
});
回调参数LoginResultBean对象说明:
字段 | 类型 | 说明 |
---|---|---|
code |
int |
状态码 |
message |
String |
状态说明 |
cnoNum |
String |
座席号 |
状态码对照表:
状态值 |
说明 |
200 |
操作成功 |
5000 |
参数验证失败 |
6000 |
鉴权失败 |
6001 |
没有分配分机号 |
6002 |
请求语音发送失败 |
6003 |
需要输入语音验证码 |
6004 |
语音验证失败 |
7001 |
登录失败 |
7002 |
退出登录失败 |
7003 |
登录失败,座席超过并发限制 |
8001 |
更新密码失败 |
8011 |
预览外呼失败 |
8012 |
更新座席状态失败 |
8013 |
获取座席转台失败 |
|
3.4.3. 语音验证码验证
如果后台开启了语音验证功能,未验证过的手机号码上线时会收到语音验证码,app调用此接口可以做验证码的校验
参数说明:
参数 | 类型 | 说明 |
---|---|---|
code |
String |
用户收到的验证码内容 |
示例代码:
/**
* 语音验证码验证
*
* @param code 语音验证码
*/
TiPhone.getInstance().confirmVerificationCode(code);
3.4.5. 拨打电话
外呼功能,并可根据需要设置部分参数
参数说明:
参数 | 类型 | 说明 |
---|---|---|
phoneNumber |
String |
电话号码 |
obClid |
String |
客户外显号码 |
requestUniqueId |
String |
通话的唯一标识,如果传入是空则自动生成并且通过消息返回 |
userField |
Map<String,String> |
用户自定义参数例子如下 |
自定义参数传值例子:
// 假设要传如下键值对数据(键和值的总字符数不建议超过 100 字符,底层协议帧无法传输过长的数据)
// id:90007573
// workNum:1026658
// depId:340179
HashMap<String,String> userField = new HashMap<>();
// 拼接 JSON String , 总字符数不超过 250 字符(含转义字符)
String jsonString = "{\"id\":\"90007573\",\"workNum\":\"1026658\",\"depId\":\"340179\"}";
// 使用 callVariables 作为 key,使用指定格式的 JSON 字符串作为 value
userField.put("callVariables",jsonString);
TiPhone.getInstance().call( "156xxxx1222","","",userField);
示例代码:
/**
* 拨打电话
*
* @param phoneNumber 电话号码
* @param obClid 客户外显号码
* @param requestUniqueId 通话的唯一标识,如果传入是空则自动生成并且通过消息返回
* @param userField 用户自定义参数 注:key/value 键值对最多支持5对,key小于20字节,value小于100字节
*/
TiPhone.getInstance().call( phoneNumBuffer.toString(),"","",null);
3.4.6. 注册事件回调接口
注册外呼事件的监听,根据事件可以做一些相应的处理
TiPhone.getInstance().setOnEventListener(new OnEventListener() {
@Override
public void onError(String s) {
}
@Override
public void onEventChange(String event, String msg) {
}
@Override
public void onDestroy() {
}
});
event 说明:
信息类型 | event | 说明 |
---|---|---|
server返回信息 |
registered |
注册成功 |
server返回信息 |
registration_failed |
注册失败 |
server返回信息 |
calling |
开始呼叫 |
server返回信息 |
ringing |
对端开始响铃(无铃声) |
server返回信息 |
progress |
对端开始响铃(有铃声) |
server返回信息 |
accepted |
对方接听 |
server返回信息 |
hangup |
挂断 |
server返回信息 |
paramsKeyIncorrect |
自定义参数 Key 不合法 |
server返回信息 |
paramsValueIncorrect |
自定义参数 Value 不合法 |
server返回信息 |
paramsMountIncorrect |
自定义参数个数超过最大值(5个) |
server返回信息 |
paramsKeyUsed |
参数已经被使用,请更换一个 key 名称 |
server返回信息 |
paramsRequestUniqueId |
msg 参数返回 sdk 生成的唯一 Id |
server返回信息 |
repeatCall |
上次拨打未结束 |
server返回信息 |
mediaStatInfo |
获取的媒体信息;接通后会1s定时收到媒体数据,可以在对方接通后再解析这个消息 |
server返回信息 |
netIOFailed |
网络较弱以至于中断了链接,通话会自动结束 |
server返回信息 |
netPeerClosed |
对端关闭以至于中断了链接,通话会自动结束,错误信息,暂时不需要处理 |
server返回信息 |
mediaStatQosGood |
通话网络优信息 |
server返回信息 |
mediaStatQosBad |
通话网络差 |
server返回信息 |
mediaStatQosCommon |
通话网络中 |
|
3.4.7. 注册呼入消息监听
注册呼入事件的监听,根据事件可以做一些相应的处理
参数说明:
参数 | 类型 | 说明 |
---|---|---|
context |
Context |
上下文 |
IIncomingMessageListener |
IIncomingMessageListener |
监听回调 |
|
TiPhone.getInstance().setIncomingMessageListener(context, new IIncomingMessageListener() {
@Override
public void onMessage(String message) {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
}
@Override
public void onError(String errorMsg) {
Toast.makeText(MainActivity.this, errorMsg, Toast.LENGTH_SHORT).show();
}
@Override
public void onWebSocketMessage(String errorMsg){
Toast.makeText(MainActivity.this, errorMsg, Toast.LENGTH_SHORT).show();
};
});
回调方法 onMessage 参数说明(基于后台配置):
字段 | 类型 | 说明 |
---|---|---|
message |
String |
回调为jsonObject的String回调示例 |
{
"customerNumber": "xxxxxxxxxxxx", //回呼电话号码
"mainUniqueId": "sip-2-1585193326.2224" //通话唯一id
}
回调方法 onError 参数说明:
字段 | 类型 | 说明 |
---|---|---|
errorMsg |
String |
错误说明 |
回调方法 onWebSocketMessage 参数说明:
字段 | 类型 | 说明 |
---|---|---|
errorMsg |
String |
错误说明 |
3.5. 其他功能
3.5.1. 发送DTMF消息(信令方式)
发送DTMF消息(信令方式),依赖服务器处理,不需要做间隔等设置
/**
* 发送DTMF消息(信令方式),依赖服务器处理,不需要做间隔等设置(注,由于网络等不可控因素,可以对比俩种DTMF发送方式选择其中一种效果更好的使用)
* @param tones 所需要发送的DTMF消息.
* @param duration 消息时长 单位:毫秒 该参数指示每个在tones参数中传递的字符。持续时间不能超过小于6000ms或小于70ms
* @param interToneGap 消息间隔 单位:毫秒 该参数表示字符之间的间隔,此参数必须至少为50ms,但应尽可能短
*/
TiPhone.getInstance().sendDTMFSignaling(String tones);
|
3.5.2. 发送DTMF消息
对发送DTMF符号的任务进行排队。处理tones参数作为一系列字符。字符0到9、A到D、#和*,生成相关的DTMF符号。字符a到d与A到D是等效的。字符","表示在处理tones参数中的下一个字符之前延迟2秒
/**
* 对发送DTMF符号的任务进行排队。处理tones参数作为一系列字符。字符0到9、A到D、#和*,生成相关的DTMF符号。字符a到d与A到D是等效的。字符","表示在处理tones参数中的下一个字符之前延迟2秒
* @param tones 所需要发送的DTMF消息.
* @param duration 消息时长 单位:毫秒 该参数指示每个在tones参数中传递的字符。持续时间不能超过小于6000ms或小于70ms
* @param interToneGap 消息间隔 单位:毫秒 该参数表示字符之间的间隔,此参数必须至少为50ms,但应尽可能短
*/
TiPhone.getInstance().sendDTMF(String tones, int duration, int interToneGap);
3.5.3. 设置禁音/恢复音量
设置禁音/恢复音量
/**
* 禁音/恢复音量
*
* @return true 禁音
* false 恢复音量(默认)
*/
TiPhone.getInstance().setMicrophoneMute(boolean muted);
3.5.4. 获取扬声器启用状态
获取扬声器状态启用状态
/**
* 获取扬声器状态启用状态
*
* @return true 扬声器已开启,语音会输出到扬声器
* false 扬声器未开启,语音会输出到听筒
*/
TiPhone.getInstance().isSpeakerphoneEnabled();
3.5.5. 设置启用/关闭扬声器播放
设置启用/关闭扬声器播放
/**
* 启用/关闭扬声器播放
*
* @param enabled true:启用扬声器播放
* false:关闭扬声器播放
*/
TiPhone.getInstance().setEnableSpeakerphone(enabled);
3.5.6. 设置是否开启Log日志
设置是否开启Log日志
|
/**
* 开启log
*
* @param isDebug true:开启
* false:关闭
*/
TiPhone.getInstance().setDebug(isDebug);
3.5.7. 设置是否使用手机号外显
设置是否使用手机号外显
/**
* 配置手机号外显
*
* @param isTelExplicit true:使用手机号码外显
* false:使用固话号码外显
*/
TiPhone.getInstance().setTelExplicit(true);
4. iOS开发文档
版本: 10.2.8.4
4.1. 简介
欢迎使用“AICC”的移动端开发者工具套件(SDK)。
当前文档是对iOS平台SDK的接入说明文档,可以在您的APP中快速集成拨打电话的功能。提供了方便快捷的接入,简单高效的接口,可快速实现应用在移动端的外呼。
4.2. 接入SDK
4.2.1. 本地接入
Xcode环境下: 将文件 TiPhone.framework 和 WebRTC.framework 添加到可执行target中即可
TiPhoneSDK.framework 为 Do Not Embed
WebRTC.framework 为 Embed & Sign
由于内部使用了C++的混编方案,调用的文件需要将m文件改为mm即可。
编译时支持 armv7,arm64和x86_64平台;
4.2.2. 添加权限
在info.plist清单文件添加以下权限
Privacy - Camera Usage Description
Privacy - Microphone Usage Description
4.2.3. 环境要求
名称 | 版本 |
---|---|
iOS |
9.1+ |
Arch |
armv7 arm64 x86_64 |
4.4. 实现拨打电话功能
4.4.2. 座席上线
使用员工、编号、密码
通过 员工编号(crmId) + 员工密码(crmPassword) 上线
/**
座席上线接口
@param strPlatform 平台url
@param strEnterpriseId 企业id
@param strCrmId 员工工号
@param strCrmPassword 员工密码
@param strCno 座席工号
@param strEnterpriseToken 企业的token值
@param strBindTel 所要绑定的手机号码
@param showName 系统内部显示名称
@param isTelObClid 是否需要手机号外显
@param successBlock 登录成功的回调
@param verificationBlock 所绑定的手机需要语音验证
@param errorBlock 登录失败的回调 [status:失败的错误码 errorDes:失败的错误描述]
*/
-(void)loginTiPhone:(NSString *)strPlatform enterpriseId:(NSString*)strEnterpriseId crmId:(NSString*)strCrmId crmPassword:(NSString *)strCrmPassword cno:(NSString*)strCno token:(NSString*)strEnterpriseToken bindTel:(NSString *)strBindTel showName:(NSString *)showName isTelObClid:(BOOL)isTelObClid success:(void (^)(NSString *strCno))successBlock verification:(void (^)(void))verificationBlock error:(void (^)(TILoginErrorCode status,NSString *errorDes))errorBlock;
|
使用员工编号、密码、同时指定分机号
通过 员工编号(crmId) + 员工密码(crmPassword)+ 分机号(extendNum) 上线
/**
座席上线接口(可设置分机号)
@param strPlatform 平台url
@param strEnterpriseId 企业id
@param strCrmId 员工工号
@param strCrmPassword 员工密码
@param extenNumber 分机号
@param strCno 座席工号
@param strEnterpriseToken 企业的token值
@param strBindTel 所要绑定的手机号码
@param showName 系统内部显示名称
@param isTelObClid 是否需要手机号外显
@param successBlock 登录成功的回调
@param verificationBlock 所绑定的手机需要语音验证
@param errorBlock 登录失败的回调 [status:失败的错误码]
注: strCrmId和strCNO二选一 如果都写上则默认选择员工工号 其中strCrmId和strCrmPassword是一对鉴权方式 strCno和strEnterpriseToken是一对鉴权方式
*/
-(void)loginTiPhone:(NSString *)strPlatform enterpriseId:(NSString*)strEnterpriseId crmId:(NSString*)strCrmId crmPassword:(NSString *)strCrmPassword extenNumber:(NSString *)extenNumber cno:(NSString*)strCno token:(NSString*)strEnterpriseToken bindTel:(NSString *)strBindTel showName:(NSString *)showName isTelObClid:(BOOL)isTelObClid success:(void (^)(NSString *strCno))successBlock verification:(void (^)(void))verificationBlock error:(void (^)(TILoginErrorCode status,NSString *errorDes))errorBlock;
|
4.4.3. 语音验证码验证
如果后台开启了语音验证功能,未验证过的手机号码上线时会收到语音验证码,app调用此接口可以做验证码的校验
/**
认证语音验证码
@param code 输入电话听到的语音验证码
@param successBlock 验证码确认并登录成功的回调
@param errorBlock 确认验证码失败的回调 [status:失败的错误码]
*/
-(void)confirmVerify:(NSString *)code success:(void (^)(NSString *strCno))successBlock error:(void (^)(TILoginErrorCode status,NSString *errorDes))errorBlock;
4.4.5. 拨打电话
外呼功能,并可根据需要设置部分参数
/**
拨打电话
@param obClid 客户外显号码
@param number 需要拨打的手机号
@param requestUniqueId 通话的唯一标识 如果传入为@""SDK生成并在消息中返回所生成的唯一标识 P-Tinet-Request-Unique-Id
@param userField 自定义参数 注:key/value 键值对最多支持5对,key小于20字节,value小于100字节,value必须为json字符串
ex: {
@"callVariables":@"{\"id\":\"90007573\",\"workNum\":\"1026658\",\"depId\":\"340179\"}"
}
*/
-(void)call:(NSString * _Nonnull)obClid number:(NSString *_Nonnull) number
requestUniqueId:(NSString* _Nonnull)requestUniqueId userField:(NSDictionary *_Nullable)userField error:(void (^)(TILoginErrorCode status,NSString *errorDes))errorBlock;
4.4.6. 回呼监听
/**
设置回呼监听 需要在登录成功之后调用
@param listener TiIncomingMessageListener接口的实例
*/
-(void)setIncomingMessageListener:(id<TiIncomingMessageListener>)listener error:(void (^)(NSString *errorDes))errorBlock;
4.4.7. 注册事件回调接口
/**
设置回调接口(回调消息为拨打电话之后的消息)
@param listener TiPhoneMessageListener接口的实例
*/
-(void)setOnEventListener:(id<TiPhoneMessageListener>)listener;
const static int MESSAGE_REGISTERED = 101; // 注册成功
const static int MESSAGE_REGISTER_FAILED = 102; // 注册失败
const static int MESSAGE_CALLING = 103; // 响铃中
const static int MESSAGE_ACCEPTED = 104; // 已接通
const static int MESSAGE_HANGUP = 105; // 已挂断
const static int MESSAGE_ERROR = 400; // 错误信息
// 监听接口定义
@protocol TiPhoneMessageListener
- (void)onPushMessage:(int)msgId withParam:(NSString*)param;
@end
4.4.8. 注册呼入事件的监听
/**
座席状态监听代理 根据内部座席状态的改变回调,设置在
*/
@protocol TiIncomingMessageListener
- (void)onIncomingMessage:(NSString*)param;
/// 被踢下线、其他端登录事件
- (void)onKickout;
@end
4.5. 其他功能
4.5.1. 发送DTMF消息(信令方式)
发送DTMF消息(信令方式),依赖服务器处理,不需要做间隔等设置
/**
发送DTMF消息(信令方式),依赖服务器处理,不需要做间隔等设置(注,由于网络等不可控因素,可以对比俩种DTMF发送方式选择其中一种效果更好的使用)
@param tones 所需要发送的DTMF消息.
*/
-(void)sendDTMFSignaling:(NSString *)tones;
|
4.5.2. 发送DTMF消息
对发送DTMF符号的任务进行排队。处理tones参数作为一系列字符。字符0到9、A到D、#和*,生成相关的DTMF符号。字符a到d与A到D是等效的。字符","表示在处理tones参数中的下一个字符之前延迟2秒
/**
* 对发送DTMF符号的任务进行排队。处理tones参数作为一系列字符。字符0到9、A到D、#和*,生成相关的DTMF符号。字符a到d与A到D是等效的。字符","表示在处理tones参数中的下一个字符之前延迟2秒
* @param tones 所需要发送的DTMF消息.
* @param duration 消息时长 单位:秒 该参数指示每个在tones参数中传递的字符。持续时间不能超过小于6000ms或小于70ms
* @param interToneGap 消息间隔 单位:秒 该参数表示字符之间的间隔,此参数必须至少为50ms,但应尽可能短
*/
-(void)sendDTMF:(NSString *)tones duration:(NSTimeInterval)duration interToneGap:(NSTimeInterval)interToneGap;
4.5.3. 设置禁音/恢复音量
设置禁音/恢复音量
/**
* @param muted 是否禁音
* TRUE :禁音
* FALSE :恢复音量(默认)
*/
-(void)setMicrophoneMute:(BOOL)muted;
4.5.4. 获取扬声器启用状态
获取扬声器启用状态
/**
* @return TRUE 扬声器已开启,语音会输出到扬声器
* @return FALSE 扬声器未开启,语音会输出到听筒
*/
-(BOOL)isSpeakerphoneEnabled;
4.5.5. 设置启用/关闭扬声器
设置启用/关闭扬声器
/**
* @param enabled 是否将音频外放
* TRUE :切换到外放
FALSE :切换到听筒。
*/
-(void)setEnableSpeakerphone:(BOOL)enabled;
4.5.7. 设置是否开启Log日志
设置是否开启Log日志
/**
* log文件名称 :tiphone_sdk_(版本号)_ + (当前日期) + .txt
* log文件路径在当前应用的Document下;默认最大100MB,如果超过会删除
*
* @param isDebug 是否开启log
* TRUE :开启打印log
* FALSE :关闭打印log
*/
-(void)setDebug:(BOOL)isDebug;
4.5.8. 设置是否使用手机号外显
设置是否使用手机号外显
/**
设置是否切换手机号外显还是固话外显
@isTelObClid 是否需要手机号外显
*/
-(void)setTelObClid:(BOOL)isTelObClid;
4.5.9. 监听websocket消息
@property (nonatomic, weak) id <TiPhoneWebSocketDelegate> webSocketDelegate;
@protocol TiPhoneWebSocketDelegate <NSObject>
- (void)onWebSocketMessage:(NSString *)param;
@end