本⽂是飞鸽SIP_SDK_Android的接⼊⽂档,⽤于指导SDK的使⽤⽅法,默认读者已经熟悉 IDE(Eclipse 或者 Android Studio)的基本使⽤⽅法,以及具有⼀定的 Android 编程知识基础。
根据国家互联⽹信息办公室、⼯业和信息化部、公安部、市场监管总局近⽇正式联合印发《App违法违规收集使⽤ 个⼈ 信息⾏为认定⽅法》相关规定。⼯信部将在2020年8⽉底前上线运⾏全国APP技术检测平台管理系统,2020年12 ⽉10⽇前完 成覆盖40万款主流App的合规检测⼯作。为了保证您的App顺利通过检测,结合当前监管关注重点,我们制作了Android 统计 SDK初始化合规⽅案。 合规三步⾛:
您需要确保App有《隐私政策》,并且在⽤户⾸次启动App时就弹出《隐私政策》取得⽤户同意。
您务必告知⽤户您选择飞鸽SDK服务,请在《隐私政策》中增加如下参考条款: “ 我们的产品为改善注册及登录界⾯⽤户体验,集成第三⽅SDK⼀键登录服务:⻜鸽SDK,⽤于帮助实现 ⽤户⼀键登录⾏为。为了实现⽹关取号技术,⻜鸽SDK会收集⼿机机型、系统类型、系统版本、⽹络环 境、⽹关取号报错⽇志等数据以提供统计分析服务能⼒,并可提供反欺诈等功能。
您务必确保⽤户同意《隐私政策》之后,再初始化飞鸽SDK。具体初始化步骤详⻅下⽂。
demo在官网cc.feige.cn下载
在项目根目录下加入mavenCentral()
xxxxxxxxxx
allprojects {
repositories {
mavenCentral()
}
}
在app目录下的build.gradle添加依赖
xxxxxxxxxx
implementation 'cn.feige:feige-sip:<latest>' //latest请在mavenCentral查看最新版本
xxxxxxxxxx
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
xxxxxxxxxx
public void addSipListener(SipListener sipListener)
添加回调事件,Sip大多数情况都通过该listener回调,具体回调方法参见SipListener
xxxxxxxxxx
public void login(Context context, String apiKey, String userName)
context 上下文
apiKey 由飞鸽分配的apiKey
userName 提供唯一的标识,用于绑定到飞鸽账户
xxxxxxxxxx
public void logout()
xxxxxxxxxx
public void call(String callNumber, final SipCallListener sipListener)
callNumber 呼出的电话号码
sipListener 监听拨打电话的事件回调
xxxxxxxxxx
public void reject()
如果是拨打出去,对方未接听的情况请使用hangUpActiveCalls
xxxxxxxxxx
public void toggleMianti()
xxxxxxxxxx
public void toggleMute()
xxxxxxxxxx
public void hangUpActiveCalls()
只限于拨打出去,对方未接听的情况使用此方法
xxxxxxxxxx
public boolean isLogin()
xxxxxxxxxx
public boolean isOffline()
xxxxxxxxxx
public void setRegistration(boolean b)
设置在线或者离线,注意:在线离线不是登录状态,这里即便设置离线,isLogin()也会等于true
xxxxxxxxxx
public void acceptIncomingCall(Context context) ()
有呼叫来电的时候,调用此方法接通电话
xxxxxxxxxx
public void sendDTMF(Context context, String dtmfTone)
xxxxxxxxxx
void onCallSuccess();
xxxxxxxxxx
void onError(Throwable t);
t 拨打失败返回的异常
xxxxxxxxxx
void onFinishCall();
xxxxxxxxxx
void loginFail(Throwable throwable);
throwable 错误异常
xxxxxxxxxx
void onLogout();
此时Sip已经退出登录
xxxxxxxxxx
void onIncomingCall(String accountID, int callID, String displayName, String remoteUri, boolean isVideo);
accountID sip账户ID
callID 拨打出去的账户ID
displayName 呼叫的显示名称
remoteUri 呼叫的远程URI
isVideo 是否视频通话
xxxxxxxxxx
void onOutgoingCall(String accountID, int callID, String number, boolean isVideo, boolean isVideoConference, boolean isTransfer);
accountID sip账户ID
callID 拨打出去的账户ID
number 拨打的电话号码
isVideo 是否视频通话
isVideoConference 是否视频会议
isTransfer 是否转接
xxxxxxxxxx
void onCallState(String accountID, int callID, int callStateCode, int callStatusCode, long connectTimestamp);
accountID sip账户ID
callID 拨打出去的账户ID
callStateCode 类型状态码,具体参考SipStatus
callStatusCode 具体的状态码
connectTimestamp 连接的时间
xxxxxxxxxx
void loginSuccess();
登录成功的回调
CODE_400(400, "请求格式错误"),
CODE_401(401, "用户未认证"),
CODE_402(402, "用户需要付费"),
CODE_403(403, "不提供服务"),
CODE_404(404, "号码无法接通"),
CODE_405(405, "请求方法不允许"),
CODE_406(406, "不接受header中指定的请求"),
CODE_407(407, "proxy服务器需要提供认证信息"),
CODE_408(408, "请求超时"),
CODE_409(409, "当前资源状态产生冲突"),
CODE_410(410, "请求资源不可用"),
CODE_411(411, "用户拒绝,content未定义"),
CODE_413(413, "服务拒绝,请求内容过大"),
CODE_414(414, "服务拒绝,请求的URL过长"),
CODE_415(415, "服务拒绝,body格式不支持"),
CODE_420(420, "不支持的拓展"),
CODE_421(421, "需要拓展支持"),
CODE_480(480, "暂时无应答"),
CODE_481(481, "呼叫或事务不存在"),
CODE_482(482, "收到了一个包含自己路径的请求"),
CODE_483(483, "转发次数过多,Max-Forwards字段为0"),
CODE_484(484, "请求地址不完整"),
CODE_485(485, "请求地址不确定"),
CODE_486(486, "被叫忙"),
CODE_487(487, "请求终止"),
CODE_488(488, "不被接受"),
CODE_491(491, "请求未响应"),
CODE_500(500, "您呼叫的用户暂时无法接听"),
CODE_501(501, "不支持此功能"),
CODE_502(502, "非法响应"),
//服务不可用
CODE_503(503, "呼叫失败"),
CODE_504(504, "服务器超时"),
CODE_505(505, "sip协议版本不支持"),
CODE_600(600, "用户忙碌"),
CODE_603(603, "用户忙"),
CODE_604(604, "用户不存在"),
CODE_606(606, "用户不接受"),
CODE_NO_PHONE(2201, "请输入呼叫号码"),
CODE_CALLING(2202, "通话正在进行中"),
CALL_FAIL(2203, "拨打失败,请稍后再试"),
LOGIN_INFO_MISS(2204, "请将信息填写完整"),
CALL_NOT_LOGIN(2205, "请先登录");