Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 2016-08-16_CocoSDK接入開發文檔V1.1.1

2016-08-16_CocoSDK接入開發文檔V1.1.1

編輯:關於Android編程

文檔版本:V1.1.1
修訂日期:2016-08-16

O、更新日志

2016-08-16 V1.1.1更新日志:

1、AndroidMenifest.xml增加新權限:


一、接入流程

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:

        
        
        
        
        
        
        
        
        
        
        
        
        
        
        

        
        
        

        
        
        
        
        
        
        
        
        
        
        

        

        

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){}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved