android接入京東開普勒-2017年12月對接

[]####京東對於自己團隊開發的開普勒項目,官方說的很屌。作爲一種分銷模式,對於開發來說,可能並不能夠感覺出它的各種屌。最近公司團隊有對接京東開普勒,就總結下對接開發京東開普勒的情況吧。

1.首先 提供開發文檔地址

https://kepler.jd.com/console/docCenterCatalog/docContent?channelId=45
這裏寫圖片描述

2.如何對接開普勒

<1>創建京東賬號

創建京東賬號是比較容易的,因爲是公司項目,顧只需要提供公司商務信息和公司營業執照就可以,賬號審覈時間也比較短,上午提交申請,在下午的時候就會通過,並接聽到京東客服人員的電話回訪,一般情況下會和京東的商務對接,一般是會加一個微信羣。

<2>創建京東項目

現在公司項目,android和ios使用的同一個項目,公衆號使用的另一個項目,固創建了兩個項目,但是需要特別注意,一個賬號,只可以申請5個項目,並且上線後,不可下線。顧親們一定要慎重。

這裏寫圖片描述

創建成功後,效果如下圖:

這裏寫圖片描述

在這裏,可以直接點擊上線,上線只需要點擊一下,就過了,但是很悲催的是,後期不可以刪除,但可以修改項目名稱,這裏和其他三大平臺有些不一樣,親們一定要注意哈。

這裏寫圖片描述

<3>申請分銷權限

作爲一種分銷模式存在,故我們需要的首先是開通分銷模式,操作如下:

這裏寫圖片描述

當我們點擊申請分銷權限之後,會提示我們提交應用[android]以及應用信息,比如

這裏寫圖片描述

親們不要以爲這就完了,等待審覈就好,並不是這樣偶,這裏是需要和京東商務人員對接,如果部對接,可能很久都不會有反饋偶,這裏在對接羣中,對接相應的京東商務,會很快得到迴應,審覈通過,下面就可以集成SDK了。

這裏寫圖片描述

3.代碼實現

<1>集成sdk支持

首先要做的就是集成京東sdk,只需要在開普勒下載sdk就好

這裏寫圖片描述

下載完成之後,我們需要做的就是,導入我們的項目,本人的as版本比較低,as2.1.2,應本人把下載之後的項目文件改爲了jdsdk_lib,顧有一下操作

1)copy sdk into project

這裏寫圖片描述

2)jdsdk_lib引入項目

因爲as版本比較低,顧引用需要認爲添加,如下:

settings.gradle

這裏寫圖片描述

app.gradle

這裏寫圖片描述

這樣,我們的引入工作就完成了,下面就是根據API調用相應的功能

<2>API方法調用

1>初始化京東開普勒

要能夠調用其他的功能,需要首先進行京東開普勒初始化,就是在我們的Application中加入initKeplaer()

代碼如下

    /***
     * 初始化開普勒
     */
    private void initJDKepler() {
        KeplerApiManager.asyncInitSdk(RHApplication.this, RHApplication.JD_APPKEY,    RHApplication.JD_APPSECRET,
                new AsyncInitListener() {
                    @Override
                    public void onSuccess() {
                        Logs.d(TAG, "Kepler asyncInitSdk onSuccess ");
                    }

                    @Override
                    public void onFailure() {
                        Logs.d(TAG, "Kepler asyncInitSdk 授權失敗,請檢查lib 工程資源引用;包名,簽名證書是否和註冊一致");
                    }
                });
    }

運行一下,你就會發現,如果你的引用正確,並且APPkey和APPSercert對,就會成功

2>授權登陸

剛開始以爲很屌,但實現以及和京東開發對接後,得到結果是,京東授權登陸,只是得到了京東的登陸狀態,代碼如下,授權成功之後,可以再次授權,不解除綁定也可以再次授權,並且提示授權成功。我的手機測試得到的結果是這樣

代碼如下:

 /***
     * 授權開普勒
     */
    @JavascriptInterface
    public void loginKeplerApp() {
        if (activity instanceof WebViewActivity || activity instanceof WeViewBackActivity) {
            KeplerApiManager.getWebViewService().login(
                    activity, new LoginListener() {

                        @Override
                        public void authSuccess(final Object token) {
                            activity.runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    Toast.makeText(activity, "login成功", Toast.LENGTH_SHORT).show();
                                    Logs.e(TAG, "登陸狀態:" + KeplerApiManager.getWebViewService().isKeplerLogined());
                                }
                            });
                        }

                        @Override
                        public void authFailed(final int errorCode) {

                            switch (errorCode) {
                                case KeplerApiManager.KeplerApiManagerLoginErr_Init:// 初始化失敗
                                    break;
                                case KeplerApiManager.KeplerApiManagerLoginErr_InitIng:// 初始化沒有完成
                                    break;
                                case KeplerApiManager.KeplerApiManagerLoginErr_openH5authPageURLSettingNull:// 跳轉url
                                    break;
                                case KeplerApiManager.KeplerApiManagerLoginErr_getTokenErr:// 獲取失敗(oath授權之後,獲取cookie過程出錯)
                                    break;
                                case KeplerApiManager.KeplerApiManagerLoginErr_User_Cancel:// 用戶取消
                                    break;
                                case KeplerApiManager.KeplerApiManagerLoginErr_AuthErr_ActivityOpen:// 打開授權頁面失敗
                                    break;
                                default:
                                    break;
                            }
                            activity.runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    Toast.makeText(activity, errorCode + ":authFailed", Toast.LENGTH_SHORT).show();
                                }
                            });
                        }
                    });
        }
    }

應爲官方文檔提到,授權成功也不確定一定成功,顧本人使用KeplerApiManager.getWebViewService().isKeplerLogined()方法,確認是否登陸,確認登陸成功,該API調用完成

3>打開首頁

打開京東是我們這期項目接入開普勒主要要提供的效果

(1)打開任意京東網頁

    /***
     * 開普勒打開任意url
     *
     * @param url
     */
    @JavascriptInterface
    public void openJDHomeWeb(String url) {
        try {
            KeplerApiManager.getWebViewService().openJDUrlWebViewPage(url, new KeplerAttachParameter());
        } catch (Exception e) {
            //Logs.e(TAG, "哈哈哈哈哈報錯了吧:" + e.getMessage());
        }
    }

上面代碼傳任意的京東地址都可以,顧本人寫成了公共方法。

(2)打開京東APP首頁

 /***
     * 打開京東首頁
     */
    @JavascriptInterface
    public void openJDHomeApp() {
        try {
            KeplerGlobalParameter.getSingleton().setJDappBackTagID(RHApplication.JD_BACKID);
            mKelperTask = KeplerApiManager.getWebViewService().openJDUrlPage("http://m.jd.com", new KeplerAttachParameter(),activity,new OpenAppAction() {
                @Override
                public void onStatus(final int status) {
                    activity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            if (status == OpenAppAction.OpenAppAction_start) {//開始狀態未必一定執行,
                                showWaitPanel("");
                            } else {
                                mKelperTask = null;
                                hideWaitPanel();
                            }
                        }
                    });
                }
            }, 15);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

設置返回的ID是爲了,在京東這裏有一個紅色的我們的項目的返回view出現,點擊它,可以回到我們的APP,這裏的id需要和商務人員對接獲取

下面提供判斷是否安裝京東,然後打開htmlorapp

代碼如下

    /**
     * 打開京東首頁
     */
    @JavascriptInterface
    public void openJDHome(){
        boolean isHavaJD=false;
        try {
            if (!new File("/data/data/" + "com.jingdong.app.mall").exists()) {
                isHavaJD=false;
            }else{
                isHavaJD=true;
            }
        } catch (Exception e) {
            isHavaJD=false;
        }
        if(isHavaJD){//如果已經安裝京東APP
            openJDHomeApp();
        }else{
            openJDHomeWeb("http://m.jd.com");
        }

應爲本期沒有對個別商品做對接,股沒有商品id,所以需求也就到此爲止,希望本人提供的文檔對你有用。

4.注意項:

1.測試與上線區別:京東開普勒,上線狀態和測試狀態,除了有次數約束之外並沒有區別

2.想要京東可以跳轉到自己App,必須當前App提供了協議

3.京東開普勒審覈更多是用第三方工具私下上午對接催促

4.當調試完成之後,京東商務會要求提供預估單量


5.新版本2.2.2對接【2018年再次對接】

新版本的sdk2.2.2與之前的版本有一些不同,不同點如下,不在需要我們自己去單獨下載安全圖片,呼起協議,也是必須的了,引用也有一些不同

新版kepler商務sdk合入demo下載地址:

https://download.csdn.net/download/onlymetagain/10434760

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章