2016-08-16_CocoSDK接入开发文档V1.1.1
来源:互联网 发布:阿里云服务器购买流程 编辑:程序博客网 时间:2024/06/10 10:47
CocoSDK接入开发文档
文档版本:V1.1.1
修订日期:2016-08-16
O、更新日志
2016-08-16 V1.1.1更新日志:
1、AndroidMenifest.xml增加新权限:
<uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.REORDER_TASKS" />
一、接入流程
1.提供您应用的包名和应用签名MD5,我们会在后台进行接入配置。服务端对接文档详见svrdoc-api – Coco.mht。可使用如下方法获取应用签名MD5信息:
public static String getSignInfo(Context context){ try { PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES); Signature[] signs = packageInfo.signatures; Signature sign = signs[0]; MessageDigest md = MessageDigest.getInstance("MD5"); md.update(sign.toByteArray()); byte[] digest = md.digest(); String res = toHexString(digest); return res; } catch (Exception e) { Log.e(TAG, "获取 app签名信息出错,原因:" + e.getMessage()); return null; } } private static String toHexString(byte[] block) { StringBuffer buf = new StringBuffer(); int len = block.length; for (int i = 0; i < len; i++) { byte2hex(block[i], buf); } return buf.toString(); } private static void byte2hex(byte b, StringBuffer buf) { char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; int high = ((b & 0xf0) >> 4); int low = (b & 0x0f); buf.append(hexChars[high]); buf.append(hexChars[low]); }
2.导入CocoSdk_Xx.Yyy.jar。其中Xx表示SDK的主版本号,此版本号变更则可能涉及接口变化;Yyy表示SDK内部逻辑功能的版本号,您可忽略此版本号的变更。
3.继承SDKCallback,并实现需要监听的回调。
4.在AndroidManifest.xml中注册以下权限、Service、以及Activity:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_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.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /> <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.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- 百度定位权限 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 振动提示 --> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.REORDER_TASKS" /> <activity android:name="com.coco.base.dynamicload.DLProxyActivity" android:screenOrientation="portrait" <service android:name="com.coco.base.dynamicload.DLProxyService"/> <service android:name="com.coco.coco.sdk.cocosdk.RemoteService" android:enabled="true" android:exported="true"/> <service android:name="com.coco.coco.sdk.cocosdk.ClientService" android:enabled="true" android:exported="true" />
5.Proguard配置
-keep class com.coco.**{*;}-keep class coco.**{*;}-keep class android.support.v4.app.** { *; }-keep interface android.support.v4.app.** { *; }-keep class android.support.v4.** { *; }
6.其他注意事项
(1)确保您的应用程序名称String是定义在xml文件中的,且key为”app_name”; 确保您应用程序的icon名称为“ic_launcher.png”,在drawable、drawable-hdpi、drawable-xhdpi…等目录下至少包含一个这个图标;
(2)确保您的项目引入了android suuport-v4包。
二、登录说明
应用包名:您的应用包名
签名MD5:您的应用签名MD5
用户合法性校验接口地址:我们后台收到sdk登录请求后会访问此地址校验用户合法性(推荐用HTTPS)
openid:第三方用户唯一标识
login_token:您的应用调用sdk登录时提供,用于校验用户合法性
sdk_token:根据应用包名及签名MD5生成,用于校验客户端的合法性,服务器端根据此字段决定调用哪一个用户合法性校验接口地址
登录流程:
1、 第三方调用SDK登录接口,提供openid、login_token及用户昵称、头像url性别
2、 SDK读取应用包名及签名MD5,生成sdk_token
3、 SDK调用游戏约后台的登录接口(openid、login_token及sdk_token)
4、 游戏约后台根据sdk_token找到用户合法性校验接口地址,并以openid及login_token为参数调用此接口
5、 第三方后台返回openid及login_token是否有效
6、 如果有效,游戏约后台根据sdk_token及openid查找对应的游戏约账号信息
7、 如果游戏约账号信息已存在,则返回账号相关信息并登录成功
8、 如果游戏约账号信息不存在(首次登录游戏约),则创建此账号信息,返回账号相关信息及首次登录标识并登录成功
9、 如果是首次登录,Sdk用爱拍提供的用户头像及昵称更新此账号信息
三、接口说明
1、CocoSdk.java
- getInstance()
- init()
- uninit()
- login()
- logout()
- showVoiceRoomActivity()
- leaveVoiceRoom()
- getLoginStatus()
- postGetUserInfoByUid()
- postGetUserGiftCountByUid()
- sendGift()
- postGetCurrentRoomUid()
- postGetCurrentRoomMemberNum()
- getSettings()
- setSettings()
- setSubscribeButtonStyle()
/** * 获取一个接口操作单实例对象 * @return CocoSdk */ public static CocoSdk getInstance() /** * 初始化SDK,初始化结果会回调{@link SDKCallback#onInitCallback(int, String)} * @param context 上下文 * @param sdkLoadingStateCallback 回调接口 */ public void init(Context context, SDKCallback sdkLoadingStateCallback) /** * 反初始化SDK,这将清除所有SDK运行环境;激活SDK需再次调用{@link #init(Context, SDKCallback)} * @param context 上下文 */ public void uninit(Context context) /** * 登录接口,结果会回调{@link SDKCallback#onLoginCallback(int, String, int)} * @param openId openID * @param token token * @param userInfo JSONObject String值,该JSONObject对象必须包含这些Key-Value:{"nickName":"用户昵称","thumb":"用户头像url","gender":"用户性别,1为男,2为女"}。 * @throws RemoteException */ //TODO (此参数项较为繁琐,在V1.0+版本将会调整此接口参数,使之更优雅) public void login(String openId, String token, String userInfo) throws RemoteException /** * 退出登录,会回调{@link SDKCallback#onLogoutCallback()} * @throws RemoteException */ public void logout() throws RemoteException /** * 启动语聊房间的Activity * @param rid 房间RID * @param pwd 房间密码,可为null */ public void showVoiceRoomActivity(String rid, String pwd) /** * 退出语聊房间 * @param rid 房间RID * @throws RemoteException */ public void leaveVoiceRoom(String rid) throws RemoteException /** * 获取当前登录状态 * @return 登录状态码 * @see CocoSdkConstant#STATUS_LOGINED * @throws RemoteException 如果SDK没有初始化,则抛之 */ public int getLoginStatus() throws RemoteException /** * 根据uid获取用户信息,会回调{@link SDKCallback#onGetUserInfo(int, String)} * @param uid 用户uid * @throws RemoteException */ public void postGetUserInfoByUid(int uid) throws RemoteException /** * 获取用户收到的礼物数量,会回调{@link SDKCallback#onGetUserGiftCount(int, int, int)} * @param uid 用户uid * @throws RemoteException */ public void postGetUserGiftCountByUid(int uid) throws RemoteException /** * 给用户送礼 * @param uid 用户uid * @param nickName 用户昵称 * @throws RemoteException */ public void sendGift(int uid, String nickName) throws RemoteException /** * 获取当前房间的房主UID,即房间创建者UID。会回调{@link SDKCallback#onGetCurrentVoiceRoomUid(int)} * @throws RemoteException */ public void postGetCurrentRoomUid() throws RemoteException /** * 获取当前房间内人数。会回调{@link SDKCallback#onGetCurrentVoiceRoomMemberNum(int)} * @throws RemoteException */ public void postGetCurrentRoomMemberNum() throws RemoteException /** * 获取SDK SharedPreferences值 * @param key SharedPreferences Key * @return SharedPreferences Value,如果不存在,则返回null * @see CocoSdkConstant#COCO_APP_PREFERENCE * @throws RemoteException */ public String getSettings(String key ) throws RemoteException /** * 设置SDK SharedPreferences值 * @param key SharedPreferences Key * @param value SharedPreferences Value * @throws RemoteException */ public void setSettings(String key, String value) throws RemoteException /** * 设置房间订阅按钮状态 * @param isSubscribed true为订阅,false为取消订阅 * @throws RemoteException */ public void setSubscribeButtonStyle(boolean isSubscribed) throws RemoteException
2、SDKCallback.java
- onInitCallback
- onLoginCallback
- onLogoutCallback
- viewContactDetail
- onGetUserInfo
- onGetUserGiftCount
- shareImage @deprecated
- shareVoiceRoom
- recharge
- onEnterVoiceRoom
- onExistVoiceRoom
- onGetCurrentVoiceRoomUid
- onGetCurrentVoiceRoomMemberNum
- onSetSubscribeCallBack
/** * 初始化结果回调 * @param result 0为成功 * @param message 附带消息 */ public void onInitCallback(int result, String message) {} /** * 登录回调 * @param result 状态码。{@link CocoSdkConstant#STATUS_LOGINED}... * @param message 附带消息 * @param uid 用户uid */ public void onLoginCallback(int result, String message, int uid) {} /** * 退出登录回调 */ public void onLogoutCallback() {} /** * 用户点击进入他人主页时的回调 * @param uid 目标用户uid */ public void viewContactDetail(int uid){} /** * 查看联系详细信息后触发,返回联系人基础信息 * @param result 状态码,0为成功,-1为失败 * @param jsonObject eg: {"uid":161183,"sex":2,"nickname":"窃风い小妖精","city":"","headimgurl":"http://xxx.jpeg","birthdate":"2015-01-01","sign":"","id":"161403"} */ public void onGetUserInfo(int result, String jsonObject) {} /** * 调用{@link CocoSdk#postGetUserGiftCountByUid(int)}后回调 * @param result 状态码 * @param uid 目标用户uid * @param count 目标用户收到的礼物数量 */ public void onGetUserGiftCount(int result, int uid, int count) {} /** * 分享图片,弃用 * @deprecated */ public void shareImage() {} /** * 分享房间的回调 * @param jsonObject * example : {"rid":"2d4a6d98b4504559a612fb24e683b720","roomid":100040,"uid":160123,"headImgUrl":"http:\/\/group1.cdn.yxyue.com\/group1\/M00\/03\/BB\/wKgKU1b4mayAXk1xAAEPK0yWm_Q973.jpg","nickname":"www","title":"www的娱乐房间","memberNum":1} */ public void shareVoiceRoom(String jsonObject) {} /** * 充值钻石的回调 */ public void recharge() {} /** * 调用{@link CocoSdk#showVoiceRoomActivity(String, String)}进入房间的回调 * @param code 0 成功,2 房间不存在,12 目前不允许进入(msg 剩余时间),14 密码错误 * @param msg * @param rid 房间rid * @param roomid roomId * @param uid 房主uid,即房间创建者uid */ public void onEnterVoiceRoom(int code, String msg, String rid,String roomid,String uid) {} /** * 退出房间的回调 * @param rid 房间RID * @param roomid roomID * @param uid 房主uid,即房间创建者uid */ public void onExistVoiceRoom(String rid,String roomid,String uid) {} /** * 调用{@link CocoSdk#postGetCurrentRoomUid()}获取当前房主uid后的回调 * @param uid 房主uid,即房间创建者 */ public void onGetCurrentVoiceRoomUid(int uid) {} /** * 调用{@link CocoSdk#postGetCurrentRoomMemberNum()}获取当前房间人数的回调 * @param memberNum 当前房间人数 */ public void onGetCurrentVoiceRoomMemberNum(int memberNum) {} /** * 房间订阅状态变化的回调 * @param isSubscribe true为已经订阅,false为没有订阅 */ public void onSetSubscribeCallBack(boolean isSubscribe){}
- 2016-08-16_CocoSDK接入开发文档V1.1.1
- 2016-08-12_CocoSDK接入开发文档V1.0
- LiteNote v1.0开发文档
- 【资源共享】RockChip_LCD开发文档v1.6
- 《移动开发接口及文档编写规范》V1.0
- 七牛Android播放器V1版本开发文档
- AIShare.framework接入文档
- share sdk 接入文档
- 3.服务器端接入文档
- EIAC.SSO接入接口文档
- 电信 IP 网管接入文档
- Firebase Cloud Messaging接入文档
- 九麟SDK 接入文档
- 4.客户端端接入文档
- 钉钉平台接入文档
- 腾讯浏览服务接入文档
- jplogic v1.0案例开发之知识库管理(文档管理等)(二)
- 文档管理信息系统 v1.3 bt
- 扩展KMP模板
- qt中串口的使用
- loop设备及losetup命令介绍
- day07总结
- egret自定义控件
- 2016-08-16_CocoSDK接入开发文档V1.1.1
- asp.net中生成word设置
- 互联网项目的开发及部署流程
- Catch That Cow
- LeetCode进阶之路(Rotate Image)
- GO中调用C代码(CGO)中的坑
- 最小生成树之普里姆(Prim)算法
- Android中常见的内存泄露
- laravel使用redis配置