android接入京东开普勒

来源:互联网 发布:知乎 法国街头 编辑:程序博客网 时间:2024/06/02 03:35

京东对于自己团队开发的开普勒项目,官方说的很屌。作为一种分销模式,对于开发来说,可能并不能够感觉出它的各种屌。最近公司团队有对接京东开普勒,就总结下对接开发京东开普勒的情况吧。

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.当调试完成之后,京东商务会要求提供预估单量

原创粉丝点击