文档编号:14001B6-DD6-1
版权所有 © 2012 北京瑞文博凡信息技术有限公司
公司网址:http://www.game-talk.net
版权申明
本文档包含了来自北京瑞文博凡信息技术有限公司的机密技术和商业信息,这些信息作为北京瑞文博凡信息技术有限公司专用。接受本文档即视为表示同意对其内容保密,并且未经北京瑞文博凡信息技术有限公司书面许可,不得复制、泄露或散布本文档的全部或部分内容。
本文档及其描述的内容及产品的著作权和版权受有关法律保护,对本文档内容的任何形式的非法复制,泄露或散布,将导致承担相应的法律责任。
北京瑞文博凡信息技术有限公司保留在不另行通知的情况下修改本文档的权利,并保留对本文档内容的全部解释权。
本文档发布于北京瑞文博凡信息技术有限公司技术部、产品部及此项目合作公司相关人员。本文档不属于客户契约性文档,不能发布予客户。
术语 | 定义 |
---|---|
appId | 应用编号(需向GT申请获取) |
(1)将iOS文件夹拖拉到unity3d工程的Assets/Plugins目录下,最终效果如图
(2)通过untiy3d平台打包成xcode工程
在工程中Build Setting->OtherLinker Flags添加-ObjC
(3)iOS需要增加麦克风权限描述配置。在Info中增加以下配置
Privacy - Microphone Usage Description
(4)在xcode工程,在工程中添加引用库,如果项目已经存在不必重复添加libstdc++.6.0.9.tbd,libc++.tbd,ImageIO.framework选择工程->Build Phases->+ 最终效果如图
(1)将Android复制到unity3d工程Assets/Plugins/目录下面。
(2)AndroidManifest.xml配置文件中需要添加的权限如下:
如果有重复不必添加
<!-- voice live-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<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.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
<!--voice live-->
功能API接口全部在VoiceLiveAPI.cs类中实现。
/初始化/
public void VoiceSDK_Init(string appId, bool isTest, System.Action
接口字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
appId | String | 是 | 应用编号(需向GT申请,统一由GT分配) |
isTest | bool | 是 | 传false |
response | System.Action |
是 | 回调接口(josn格式) |
示例:VoiceLiveAPI.Instance.VoiceSDK_Init(“100000”, false, (msg) =>
{
sjson = “初始化” + msg;
});
{“result”:(int) result,“msg”:(string) msg }
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
result | int | 是 | 处理结果,成功为0,其他错误 |
msg | string | 是 | 返回的消息 |
public void VoiceSDK_userLogin( string roomId, string userId, string nickname,string type, string ext, System.Action
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
roomId | string | 是 | 房间编号 |
userId | string | 是 | 玩家userid,不能超过45个字符 |
nickname | string | 是 | 玩家昵称,不能超过45个字符 |
type | string | 是 | 用户类型(0为观众 1为主播) |
ext | string | 否 | 扩展字段 |
response | System.Action |
是 | 回调接口(josn格式) |
示例:VoiceLiveAPI.Instance.VoiceSDK_userLogin(“100000”, sUserid, sNickname, sUserType, “ext”, (msg) =>
{
sjson = “登录房间” + msg;
});
{“result”:(int)result,“msg”:(string)msg,“anchorId”:(string)anchorId, ,“anchorOnlive”:(int) anchorOnlive }
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
result | int | 是 | 处理结果,成功为0,其他错误 |
msg | string | 是 | 返回的消息 |
anchorOnlive | int | 是 | 当前房间主播在线状态,0为在线,1为不在线 |
anchorId | string | 是 | 主播id |
public void VoiceSDK_userLogOut(System.Action
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
response | System.Action |
是 | 回调接口(josn格式) |
示例:VoiceLiveAPI.Instance.VoiceSDK_userLogOut((msg) =>
{
sjson = “登出房间” + msg;
});
{“result”:(int) result,“msg”:(string) msg }
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
result | int | 是 | 处理结果,成功为0,其他错误 |
msg | string | 是 | 返回的消息 |
public void VoiceSDK_queryUsers(System.Action
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
response | System.Action |
是 | 回调接口(josn格式) |
示例: VoiceLiveAPI.Instance.VoiceSDK_queryUsers((msg) =>
{
sjson = “查询房间人数” + msg;
});
{“appId”:(string) appId,“users”:(int) users,“roomId”:(string) roomId }
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
appId | string | 否 | 应用编号 |
users | int | 是 | 房间人数 |
roomId | string | 否 | 房间编号 |
public void VoiceSDK_stopPlay()
public void VoiceSDK_startPlay()
public bool VoiceSDK_isPlaying()
true:正在播放 false:暂停播放
public void VoiceSDK_userSendVoiceRoomMessage( string textMsg, string ext, string ext2)
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
textMsg | string | 是 | 发送内容 |
ext | string | 否 | 扩展字段 |
ext2 | string | 否 | 扩展字段 |
EventListenerManager.AddListener(ListenerEven.onVoiceLiveRoomReceiveMsg, (obj) =>
{
Debug.Log (“收到消息:” + obj.ToString ());
});
返回内容:
{“roomId”:(string)roomId,“userId”:(string)userId,“ext2”:(string)ext2,“nickname”:(string)nickname,“ext”:(string)ext,“appId”:(string)appId,“msg_type”:(string)msg_type,“msgId”:(string)msgId,“payload”:(string)payload }
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
appId | string | 否 | 应用编号 |
roomId | string | 是 | 房间编号 |
userId | string | 是 | 玩家userid |
nickname | string | 是 | 玩家昵称 |
msgId | string | 否 | 消息id |
payload | string | 是 | 消息内容(msg_type为6时payload=0主播在线,payload=1主播离线) |
msg_type | string | 否 | 消息类型(1为文本消息,6为主播在线/离线) |
ext | string | 否 | 扩展字段 |
ext2 | string | 否 | 扩展字段 |
public void VoiceSDK_micActionWithTargetId(string targetId, int msgType, string ext)
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
targetId | string | 是 | 被申请连麦方userId |
msgType | int | 是 | 消息类型:0上麦,1下麦,2禁麦,3解除禁麦,4强制下麦,5主播上麦,6主播下麦 |
ext | string | 否 | 扩展字段 |
{“result”:(int) result,“msg”:(string) msg }
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
result | int | 是 | 处理结果,成功为0,其他错误 |
msg | string | 是 | 返回的消息 |
{“msgType”:(int) msgType,“nickname”:(string) nickname,“role”:(int) role,“userId”:(string) userId }
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
userId | string | 是 | 玩家userid |
nickname | string | 是 | 玩家昵称 |
role | int | 否 | 角色:0是观众,1是主播 |
msgType | int | 是 | 消息类型:0上麦,1下麦,2禁麦,3解除禁麦,4强制下麦,5主播上麦,6主播下麦 |
ext | string | 否 | 扩展字段 |
public void VoiceSDK_micActionResultWithMicActionResultModel(string targetId, int resType, string nickname)
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
targetId | string | 是 | 申请连麦方userId |
resType | int | 是 | 回复类型:0同意,1拒绝 |
nickname | string | 否 | 玩家昵称 |
{“result”:(int) result,“msg”:(string) msg }
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
result | int | 是 | 处理结果,成功为0,其他错误 |
msg | string | 是 | 返回的消息 |
{" resType ":(int) resType,“nickname”:(string) nickname, “userId”:(string) userId }
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
userId | string | 是 | 玩家userid |
nickname | string | 是 | 玩家昵称 |
resType | int | 否 | 0同意,1拒绝 |
public void VoiceSDK_micQueryWithMsgType(int msgType)
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
msgType | int | 是 | 查询类型:0连麦用户,1申请列表 |
{“result”:(int)result,“msg”:(string)msg,“msgType”:0,“ApplyMicInfos”:[ ApplyMicInfo], “UserMicInfos”:[ UserMicInfo] }
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
result | int | 是 | 处理结果,成功为0,其他错误 |
msg | string | 是 | 返回的消息 |
msgType | int | 是 | 查询类型:0连麦用户,1申请列表 |
ApplyMicInfos | ApplyMicInfo的json数组 |
否 | 申请列表,请参考demo |
UserMicInfos | UserMicInfo 的json数组 |
否 | 连麦用户,请参考demo |
ApplyMicInfo
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
userId | string | 是 | 玩家userid |
nickname | string | 是 | 玩家昵称 |
role | int | 是 | 角色:0是观众,1是主播 |
UserMicInfo
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
userId | string | 是 | 玩家userid |
nickname | string | 是 | 玩家昵称 |
role | int | 是 | 角色:0是观众,1是主播 |
status | int | 是 |
public void VoiceSDK_pasueVoiceWithUserId(string targetId)
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
targetId | string | 是 | 暂停用户声音的userId |
public void VoiceSDK_openVoiceWithUserId(string targetId)
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
targetId | string | 是 | 打开用户声音的userId |
public void VoiceSDK_setAudioFileWithPaths(List
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
paths | List |
是 | 传音乐文件的本地路径 |
例:
string file_SaveUrl = string.Format(“{0}/{1}.mp3”, Application.persistentDataPath, “thatgirl”);
string file_SaveUrl1 = string.Format(“{0}/{1}.mp3”, Application.persistentDataPath, “zuimeideqidai”);
List
paths.Add(file_SaveUrl);
paths.Add(file_SaveUrl1);
VoiceLiveAPI.Instance.VoiceSDK_setAudioFileWithPaths(paths);
public void VoiceSDK_play()
注:地址设置完以后才可播放音乐。
public void VoiceSDK_sendClientVolume(float Volume)
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
Volume | float | 是 | 范围0~1 |
public void VoiceSDK_receiveClientVolume(float Volume)
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
Volume | float | 是 | 范围0~1 |
public void setPlayAudioWithIndex(int index)
协议字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
paths | int | 是 | 按照设置播放音乐本地地址接口传参顺序设置。比如索引设置的是0,那么播放的是传的第一个地址;设置完索引直接播放对应的音乐 |