这是本文档旧的修订版!
说明:本指南是Android平台的接入说明,方便有Android研发基础的开发者快速了解整合云之讯即时通讯界面组件。本指南只包含paas服务器连接和IM界面组件的使用操作。如需开发出针对企业和开发者所需的个性化应用,仍然需要具备一定的Android开发经验。
IMKit界面组件是集成云之讯的登录登出云平台、IM会话列表、好友列表、聊天界面等,可快速集成和高度自定义界面的开发包。
前往云之讯官网下载IMKit(下载地址),IMKit界面组件开发包含以下两部分:
这里以Eclipse为例,首先搭建好Android开发环境,满足以下要求:
用户创建好自己的Android Application Project,接下来就可以开始导入我们的IMKit界面组件了。
用户在工程中新建继承自YZXMainApplication的类,并在其onCreate()方法中调用父类的onCreate()方法,类代码如下:
import com.yzx.im_UIdemo.YZXMainApplication; public class MainApplication extends YZXMainApplication { @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); } }
另外还需在AndroidManifest.xml文件添加MainApplication声明,如下:
<application android:name=".MainApplication" </application>
在工程的AndroidManifest.xml文件中添加权限和组件声明,添加的代码如下:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!--百度地图需要的权限--> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <!--这里输入百度密钥--> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="5ZVIGi4nwol98XwTnY26DFnF" /> <!--百度的远程服务--> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" /> <activity android:name="com.yzx.im_UIdemo.IMChatActivity" android:screenOrientation="portrait" /> <activity android:name="com.yzx.im_UIdemo.IMMessageActivity" android:windowSoftInputMode="stateHidden|adjustResize"/> <activity android:name="com.yzx.im_UIdemo.IMCustomMsgActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden|adjustResize" /> <activity android:name="com.yzx.im_UIdemo.IMBaiduMapActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Light.NoTitleBar" /> <activity android:name="com.yzx.im_UIdemo.IMBroadcastActivity" android:screenOrientation="portrait" /> <activity android:name="com.yzx.im_UIdemo.IMLoginOutActivity" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden|adjustPan" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:host="com.yzx.im_ui" android:pathPrefix="/login_out" android:scheme="yzx" /> </intent-filter> </activity> <activity android:name="com.yzx.im_UIdemo.IMMessageInfoActivity" /> <activity android:name="com.yzx.im_UIdemo.IMMessageBgActivity" /> <activity android:name="com.yzx.im_UIdemo.IMSelectBgActivity" /> <activity android:name="com.yzx.im_UIdemo.IMFriendListActivity" /> <activity android:name="com.yzx.im_UIdemo.IMDiscussListActivity" /> <activity android:name="com.yzx.im_UIdemo.IMDiscussInfoActivity" /> <activity android:name="com.yzx.im_UIdemo.IMGroupListActivity" /> <activity android:name="com.yzx.im_UIdemo.IMImageActivity" /> <service android:name="com.yzxtcp.service.YzxIMCoreService" /> <receiver android:name="com.yzxtcp.tools.tcp.receiver.AlarmReceiver" /> <receiver android:name="com.yzxIM.tools.tcp.receiver.MsgBackReceiver" /> </application>
IMKit提供的接口都是在类UCS_IMUIManager中以静态函数的形式提供的,使用前需在相应文件中导入com.yzx.im_UIdemo.UCS_IMUIManager,代码为:
import com.yzx.im_UIdemo.UCS_IMUIManager;
IMKit为登录云平台提供了两个接口,一个使用token登录,一个使用账号密码登录
通过token登录云平台:
static void connect(java.lang.String token, com.yzxtcp.listener.ILoginListener listener)
通过账号密码登录云平台:
static void connect(java.lang.String sid, java.lang.String sidPwd, java.lang.String clientId, java.lang.String clientPwd, com.yzxtcp.listener.ILoginListener listener)
token是客户端向接入服务器请求得到的一串字符,新注册的账号只能使用token的方式登录云平台。
下面以token登录为例说明其用法,在参数中传入token字符串及回调,示例代码如下:
ILoginListener listener = new ILoginListener() { @Override public void onLogin(UcsReason reason) { // TODO Auto-generated method stub System.out.println("登陆消息:" + reason.getMsg()); if (reason.getReason() == UcsErrorCode.NET_ERROR_CONNECTOK) { System.out.println("登陆成功"); } else { System.out.println("登陆失败"); } } }; UCS_IMUIManager.connect("xxx_token", listener);
退出接口为:
static void disconnect()
调用UCS_IMUIManager.disconnect()即可断开与云平台的连接,断开后客户端将不再与云平台进行包括心跳包在内的数据交互,该客户端将被服务器视为离线状态。
IMKit中的界面标题栏有默认风格,用户也可调用下面接口更改界面风格:
static void setActionBarStyle(UCS_IMUIManager.UiType type, ActionBarConfig config)
下面以更改会话列表界面的标题栏的背景色为例来说明该接口的使用:
//设置标题栏风格 ActionBarConfig actionBarConfig = new ActionBarConfig(); actionBarConfig.setActionBarColor("#3299CC");//设为天蓝色 UCS_IMUIManager.setActionBarStyle(UCS_IMUIManager.UiType.IMChatList, actionBarConfig);
设置前后效果图如下:
设置好友列表成员:
static void setFriendListContacts(java.util.List<SortModel> contacts)
调用该接口后指定的联系人将被添加到好友列表中,代码及效果如下:
//设置好友列表成员 List<SortModel> contacts = new ArrayList<SortModel>(); SortModel sortModel = new SortModel(); sortModel.setName("Jack");//好友昵称 sortModel.setId("13428788888");//好友ID sortModel.setUrl("头像URL");//好友头像 contacts.add(sortModel); UCS_IMUIManager.setFriendListContacts(contacts);
跳转到会话列表界面:
static void startIMChatActivity(Context context, java.lang.String localUser, java.lang.String nickName)
传入参数包括上下文、本端用户、本端用户昵称
跳转到好友列表界面:
static void startIMFriendListActivity(Context context, java.lang.String localUser, java.lang.String nickName)
传入参数包括上下文、本端用户、本端用户昵称
/***跳转到聊天界面 * @param context 上下文 * @param localUser 用户账号 * @param nickName 用户昵称 * @param targetID 对方账号 * @param targetNickName 对方昵称 * @param categoryId 聊天种类 * @return 跳转参数是否正确 */ static boolean startIMMsgActivity(Context context,String localUser,String nickName,String targetID, String targetNickName, CategoryId categoryId)
跳转到指定用户名、昵称、以及聊天类型(单聊、群聊、讨论组)的聊天界面
设置通知栏消息(包括震动与声音)是否开启:
static void setMsgNotification(Context context, String loalUser,boolean on);
传入参数包括上下文及布尔控制值,loalUser当前用户ID, on传入布尔值为true则开启,为false则不开启。
1,如果使用地图功能时报错误 “请检查key,baiduSDK认证错误!”
需要用户在AndroidManifest.xml文件中修改 <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="用户在百度申请的KEY" />