京麦JSSDK PC版 2.x版本

2.0升级说明

更新日志

1. 安装

1.1. script 引入

在html页面中引入下面该地址:

<script src="//jm-static.jd.com/lib/jmsdk-pc/jmsdkPC.min.js">

<script>
  jmsdkPC.isInJMPC()
</script>

1.2. ES6 安装(需要使用jnpm,http://npm.m.jd.com)

npm使用的是京东内部的源jnpm,需要配置下配置。

npm config set @jd:registry=http://registry.m.jd.com

上面这条命令将@jd开头的包的拉取的地址修改为jnpm的源。

安装:

npm i @jd/jmsdk-pc

使用

import jmsdkPC from '@jd/jmsdk-pc'

2. API

2.1. config(options: object) 初始化设置

目前options中只有1个languange属性,如果不需要切换语言,则无需调用。

options 参数:

参数 说明 类型 可选值 默认值 是否必填
language 设置语言 string 'en_US' 'zh_CN'
jmsdkPC.config({
  language: 'en_US'
})

2.2. isInJMPC() 判定是否在京麦windows客户端中

jmsdkPC.isInJMPC()

2.3. isInJMMac() 判定是否在京麦mac客户端中

jmsdkPC.isInJMMac()

2.4. isInJM 判定是否在京麦客户端中(windows或mac)

jmsdkPC.isInJM()

2.5. getVersion() 获取京麦客户端的版本

jmsdkPC.getVersion() // 7.9.6.0

2.6. checkJMClient(options: object) 判定是否安装了京麦客户端

options 参数:

参数 说明 类型 可选值 默认值 是否必填
success 成功回调 function

success 回调参数:

参数 options (object):

参数 说明 类型
isInstall 是否安装了京麦 boolean

支持 Promise

jmsdkPC.checkJMClient({
  success: function (res) {
    console.log(res.isInstall)
  }
})

// promise
jmsdkPC.checkJMClient().then(res => {
  console.log(res.isInstall)
})

2.7. openJM(options: object) 打开京麦客户端

options 参数:

参数 说明 类型 可选值 默认值 是否必填
pin 用户pin,用于打开登录了该用户的客户端实例,如果不传,则每次都是打开新的客户端登录窗口 string

options 参数可以不传。

该接口为异步接口,无回调函数。

如果没有安装客户端,则会弹窗提示安装客户端(mac版不会提示,如果打开失败,则无任何反应)。

jmsdkPC.openJM()

2.8. openJDA(options: object) 打开JDA应用

options 参数:

参数 说明 类型 可选值 默认值 是否必填
pin 用户pin,用于打开登录了该用户的客户端实例,如果不传,则每次都是打开新的客户端登录窗口 string
appId 应用appId string
processName 进程名 string - -
uiName 界面名 - -
online 是否启动线上版本,1 - 启动线上版本,0 - 启动预发版本 string '1'
success 成功回调 function - -
error 错误回调 function - -
jmsdkPC.openJDA({
  pin: 'test_pop_7191',
  appId: 'xxxxx'
})

2.9. openJDAManage(options: object) 打开JDA应用管理

options 参数:

参数 说明 类型 可选值 默认值 是否必填
pin 用户pin,用于打开登录了该用户的客户端实例,如果不传,则每次都是打开新的客户端登录窗口 string
appKey 开发者侧的应用key string
autoTip 是否自动提示异常 boolean - true
success 成功回调 function - -
error 错误回调 function - -
jmsdkPC.openJDAManage({
  pin: 'test_pop_7191',
  appKey: 'xxxx'
})

2.10. openJDACreate(options: object) 打开JDA应用创建界面

options 参数:

参数 说明 类型 可选值 默认值 是否必填
pin 用户pin,用于打开登录了该用户的客户端实例,如果不传,则每次都是打开新的客户端登录窗口 string
appPublishType 创建的应用类型 number 2 - 个人应用, 3 - ISV 应用
autoTip 是否自动提示异常 boolean - true
success 成功回调 function - -
error 错误回调 function - -
jmsdkPC.openJDACreate({
  pin: 'test_pop_7191',
  appPublishType: 2
})

2.11. openUrl(options: object) 在京麦客户端中打开链接

1)在客户端外部,唤起客户端,并打开链接

2)在客户端内部,直接打开链接

3)在mac系统下的非京麦浏览器或者移动端,直接跳转地址

options 参数:

参数 说明 类型 可选值 默认值 是否必填
pin 用户pin,用于在第1)种情况下打开登录了该用户的客户端实例,如果不传,则每次都是打开新的客户端登录窗口 string
url 链接地址 string
jmsdkPC.openUrl({
  pin: 'test_pop_7191',
  url: 'https://jm.jd.com'
})

2.12. openDD(options: object) 打开咚咚

1)在客户端外部,唤起客户端,并打开咚咚

2)在客户端内部,打开咚咚

options 参数:

参数 说明 类型 可选值 默认值 是否必填
pin 用户pin,用于在第1)种情况下打开登录了该用户的客户端实例,如果不传,则每次都是打开新的客户端登录窗口 string
client 目标用户的pin,打开目标用户的会话窗口,如果不传,则只启动咚咚,不会打开会话 string
tokenType pin的加密方式,number,1代表openId,2代表JOS加密 3代表xid string
userType 聊天人类型 number 0:未知, 1:顾客 2:商家客服 3:京东erp人员 4:京东客服 (可以不传,但是不能传0-4之外的非法值)
appKey ISV 应用appKey string
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function
jmsdkPC.openDD({
  pin: 'test_pop_7191',
  client: 'test_pop_weidian'
})

2.13. openDDChatByScene(options: object) 新打开咚咚-支持传入appId

1)在客户端外部,唤起客户端,并打开咚咚

2)在客户端内部,打开咚咚

options 参数:

参数 说明 类型 可选值 默认值 是否必填
pin 用户pin,用于在第1)种情况下打开登录了该用户的客户端实例,如果不传,则每次都是打开新的客户端登录窗口 string
params 咚咚会话参数 object
autoTip 是否开启自动错误提示 boolean true
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

params 参数:

参数 说明 类型 可选值 默认值 是否必填
pin 目标用户的pin,打开目标用户的会话窗口,如果不传,则只启动咚咚,不会打开会话 string
tokenType pin的加密方式 number 1代表openId,2代表JOS加密 3代表xid
userType 聊天人类型 number 0:未知, 1:顾客 2:商家客服 3:京东erp人员 4:京东客服 (该参数将要废弃,推荐使用appid) (可以不传,但是不能传0-4之外的非法值)
appKey ISV 应用appKey string
appId 场景类型 string 1.顾客:im.customer 2.商家客服:im.waiter 3. erp人员:ee 4. 京东客服:jd.waiter
jmsdkPC.openDDChatByScene({
  params: {
     pin: 'test_pop_7191',
    client: 'test_pop_weidian'
    appId: '1',
  },
  autoTip: true,
  error: (err) => {
    console.log(err);
  }
})

2.14. openDDGroup(options: object) 加入咚咚群

1)在客户端外部,唤起客户端,加入咚咚群

2)在客户端内部,直接加入咚咚群

options 参数:

参数 说明 类型 可选值 默认值 是否必填
pin 用户pin,用于在第1)种情况下打开登录了该用户的客户端实例,如果不传,则每次都是打开新的客户端登录窗口 string
api 加入咚咚群的apiName string openChatGroup
params 加入咚咚的群的参数, {groupId:群组id, functionName:咚咚方法名称} object
autoTip 是否开启自动错误提示 boolean true
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function
jmsdkPC.openDDGroup({
  api: 'openChatGroup',
  pin: 'test_pop_xxx',
  params: {
    groupId: '123',
    functionName: 'office'
  },
})

2.15. openTab()

2.2.8版本

打开新的Tab页签,该接口会返回新页签的窗口对象。

var newTab = jmsdkPC.openTab()

使用场景:打开插件openPlugin接口,需要打开1个新的Tab窗口,如果你在调用它之前,先有了异步操作,等异步回来后再去调用打开插件的接口,可能会导致新窗口被浏览器拦截, 无法打开(浏览器对于用户交互如点击1秒后的新窗口打开都会进行拦截),因此需要开发者在进行异步毁掉之前,先调用openTab帮JSSDK打开1个新的tab窗口,避免被浏览器拦截。 如果异步回调后判断不能打开插件,那可以将newTab新窗口对象的href指向1个错误页面,不建议直接关闭,体验不是很好。

异步示例:

var newTab = jmsdkPC.openTab()

jQuery.ajax({
  url: '//example.action',
  success : function (res) {
    if (res.body.canOpen) {
      jmsdkPC.openPlugin({
        serviceCode: 'FW_GOODS-77777'
      })
    } else {
      newTab.location.href = '//example.com/error.html'
    }
  }
})

2.16. openPlugin(options: object)打开插件

1)服务市场插件,不启动客户端

2)京麦插件,且没有设置成普通浏览器打开的白名单,使用京麦打开

3)咚咚插件,使用京麦打开

4)移动端插件,在中间页中无任何操作

5)开普勒小程序,不启动客户端

options 参数:

参数 说明 类型 可选值 默认值 是否必填
pin 用户pin,用于打开登录了该用户的客户端实例,如果不传,则每次都是打开新的客户端登录窗口 string
serviceCode 插件标识 string
itemCode 插件类型,一般在服务市场列表中使用 string
protocolId 用于京麦插件打开指定插件页面 string
keplerAppId 开普勒小程序Id,用于开普勒小程序 string
update 是否刷新客户端的插件列表 boolean false
openInCurrentTab 是否在当前tab页签打开插件 boolean - false
newTab 用于承载打开插件的落地页的窗口 window - false
isZeroPurchase 是否零元订购 boolean - false
params 插件落地页链接拼接的query参数 object - {}
urlEndFix 插件落地页链接拼接的router参数 string - ''

update: 是否刷新插件列表,只在客户端中调用才有效,用于用户新购买了插件,但客户端中的插件列表尚未更新,需要刷新一次才可以打开客户端。

jmsdkPC.openPlugin({
  pin: 'test_pop_7191',
  serviceCode: 'FW_GOODS-549810'
  urlEndFix: '/a/b/c'
  isZeroPurchase: true, // 零元订购
  params: {
    商家id: 'xxxxx'
  }
})

2.17. updatePlugin() 刷新插件列表

客户端可用,非客户端无效

jmsdkPC.updatePlugin()

2.18. openService(options: object) 直接通过客户端打开插件

openPlugin 中大部分插件不会通过客户端打开,有中间页,体验较差,这个接口用于直接在客户端打开插件,避免被浏览器拦截窗口,目前用于大促页中的插件,大促页中需要先进行零元购,然后再启动客户端,如果用 openPlugin ,因为窗口被拦截,所以无法走完这一流程。

不支持开普勒小程序。

options 参数:

参数 说明 类型 可选值 默认值 是否必填
pin 用户pin,用于打开登录了该用户的客户端实例,如果不传,则每次都是打开新的客户端登录窗口 string
serviceCode 插件标识 string
protocolId 用于京麦插件打开指定插件页面 string
update 是否刷新客户端的插件列表 boolean
jmsdkPC.openService({
  pin: 'test_pop_7191',
  serviceCode: 'FW_GOODS-549810'
})

2.19. checkApi(options: object) 判定当前的客户端是否支持了该API

客户端可用,非客户端无效;

目前所有客户端的API都已支持,暂时不需要调用该接口,一般用于新API出来时客户端版本还未覆盖全面,但想立即使用该API接口时调用进行判定。

options 参数:

参数 说明 类型 可选值 默认值 是否必填
api api 名称(函数名) string
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

success 回调参数:

参数 res (object)

参数 说明 类型
isSupport 是否支持API boolean

支持 Promise 回调

jmsdkPC.checkApi({
  api: 'addToBookmark',
  success: function (res) {
    console.log(res)
  },
  error: function (error) {
    console.log(error.message)
  }
})

// promise 回调
jmsdkPC.checkApi({
  api: 'addToBookmark'
}).then(res => {
  console.log(res)
}).catch(error => {
  console.log(error.message)
})

2.20. openNativePage(pageName: string) 打开原生页面

客户端可用,非客户端无效

jmsdkPC.openNativePage('MyPlugin')

pageName 支持的页面:

页面标识 页面名称
'MyPlugin' 我的插件
'Message' 消息中心

2.21. checkBookmarked(options: object) 判定当前网址是否已收藏

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

success 回调参数:

参数 res (object)

参数 说明 类型
isBookmarked 是否已收藏 boolean

支持 Promise 回调

jmsdkPC.checkBookmarked({
  success: function (res) {
    console.log(res.isBookmarked)
  }
})

// promise 回调
jmsdkPC.checkBookmarked().then(res => {
  console.log(res.isBookmarked)
})

2.22. checkFrequentPlugin(options: object) 判定当前插件是否已添加到常用插件中

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

success 回调参数:

参数 res (object)

参数 说明 类型
isFrequentPlugin 是否已是常用插件 boolean

支持 Promise 回调

jmsdkPC.checkFrequentPlugin({
  success: function (res) {
    console.log(res.isFrequentPlugin)
  }
})

// promise 回调
jmsdkPC.checkFrequentPlugin().then(res => {
  console.log(res.isFrequentPlugin)
})

2.23. addToBookmark() 将当前网址添加到收藏中

客户端可用,非客户端无效

jmsdkPC.addToBookmark()

2.24. addToFrequentPlugin() 将当前插件添加到我的常用插件中

客户端可用,非客户端无效

jmsdkPC.addToFrequentPlugin()

2.25. createShortcut() 将当前插件添加到桌面快捷方式

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function
jmsdkPC.createShortcut()

客户端可用,非客户端无效

jmsdkPC.addToFrequentPlugin()

2.26. checkVersion(options: object) 判定当前客户端是否为最新版本

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

success 回调参数:

参数 res (object):

参数 说明 类型
isLastest 是否是最新版本客户端 boolean

支持 Promise 回调

jmsdkPC.checkVersion({
  success: function (res) {
    console.log(res.isLastest)
  }
})

// promise 回调
jmsdkPC.checkVersion().then(res => {
  console.log(res.isLastest)
})

2.27. upgradeClient(options: object) 更新客户端

options 参数:

参数 说明 类型 可选值 默认值 是否必填
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

支持 Promise 回调

jmsdkPC.upgradeClient()

// promise
jmsdkPC.upgradeClient().catch(error => {
  console.log(error.message)
})

2.28. captureScreen(options: object) 客户端截图功能

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
type 图片类型 string 'png', 'jpg', 'jpeg' 'png'
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

success 回调参数:

参数 res (object)

参数 说明 类型
code 0 - 截图完成,1 - 截图取消 number
urlData 截图的base64编码 string
blob 将base64格式的图片转换成Blob对象,方便通过Ajax进行上传,IE9及以下不支持 Blob
fileSize 图片大小,单位:byte number

支持 Promise

jmsdkPC.captureScreen({
  success: function (res) {
    console.log(res.urlData,res.blob)
  }
})

// promise
jmsdkPC.captureScreen().then(res => {
  console.log(res.urlData,res.blob)
})

2.29. request(options: object) 互通协议请求

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
api 互通协议接口 string - -
params 互通协议接口参数 object - -
success 成功回调 function - - -
error 失败回调 function - - -
jmsdkPC.request({
  api: 'orderList',
  params: {
    orderStatus: 'WAIT_OUTBOUND'
  }
})

2.30. response(options: object) 互通协议响应

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
code 开发者自定义业务状态码,表示调用成功与否 number - 0
data 开发者自定义参数 object - - -

2.31. openMyPlugin(options: object) 打开我的插件

options 参数:

参数 说明 类型 可选值 默认值 是否必填
pin 用户pin,用于打开登录了该用户的客户端实例,如果不传,则每次都是打开新的客户端登录窗口 string
success 成功回调 function
error 失败回调,当客户端不支持时触发,回调参数:Error实例 function

2.32. openInterworkSetting(options: object) 打开互通协议设置窗口

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

2.33. getInterworkStatus(options: object) 获取互通协议状态(是否展示)

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

success 回调参数:

参数 res (object)

参数 说明 类型
isShow 是否展示互通协议设置 boolean

2.34. getServiceNewStatus(options: object) 获取服务列表红点状态(是否有新购买的插件)

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

success 回调参数:

参数 res (object)

参数 说明 类型
hasNew 是否有新购买的插件 boolean

2.35. examFinished(options: object) 通知客户端完成开店开始任务,跳转到首页

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

2.36. openTaskList(options: object) 打开待办任务列表

客户端可用,非客户端无效

options 参数:

| 参数 | 说明 | 类型 | 可选值 | 默认值 | 是否必填 | | success | 成功回调 | function | — | — | 否 | | error | 失败回调 | function | — | — | 否 |

jmsdkPC.openTaskList();

2.37. openTaskDetail(options: object) 打开待办任务详情页

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
taskId 任务id number
success 成功回调 function
error 失败回调 function
jmsdkPC.openTaskDetail({
    taskId: 12345
});

2.38. openLogin(options: object) 打开登录窗口

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
type 唤起登录的类型,'0' 表示启动店铺登录,'1' 表示启动多账号登录,'2' 表示启动企业账号登录 string '0', '1', '2' '0'
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

2.39. switchShop(options: object) 企业账号启动店铺

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
vendorId 店铺 id string - -
pin 店铺 pin string - -
vendorType 店铺类型,200 表示 pop 店铺,300 表示 vc 店铺 number - -
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

2.40. changeCompany(options: object) 切换企业中心,通知客户端修改标题

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
id 企业中心 id number - -
name 企业中心名称 string - -
success 成功回调 function
error 失败回调,当客户端不支持或者在外部浏览器调用时触发,回调参数:Error实例 function

2.41. checkJMHome(options: object) 判断是否在PC端【工作台】

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
success 成功回调 function
error 失败回调 function
jmsdkPC.checkJMHome({
  success: function (res) {
    return res.ishome;
  }
});

2.42. switchJMHome(options: object) 跳转PC端【工作台】

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
data "0"表示原生首页,"1"表示10.0新首页 String
success 成功回调 function
error 失败回调 function
jmsdkPC.switchJMHome({
  data: '0'
});

2.43. openHelp(options: object) 打开PC端帮助

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
data 传给帮助的数据,最终会在帮助链接query的openHelp上返回 Object
success 成功回调 function
error 失败回调 function
jmsdkPC.openHelp({
  data: {
    articleId: '355467658';
  }
});

2.44. closeHelp(options: object) 关闭PC端帮助

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
success 成功回调 function
error 失败回调 function
jmsdkPC.closeHelp();

2.45. setHelpData(options: object) 传值给PC端帮助

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
data 传给帮助的数据,最终会在帮助链接query的setHelpData上返回 Object
success 成功回调 function
error 失败回调 function
jmsdkPC.setHelpData({
  data: [1,2,3]
});

2.46. changeHelpWidth(options: object) 修改帮助容器宽度

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
width 设置帮助的宽度 Number
success 成功回调 function
error 失败回调 function
jmsdkPC.changeHelpWidth({
  width: 536,
});

2.47. open(options: object) 通用API接口

客户端可用,非客户端无效

options 参数:

参数 说明 类型 可选值 默认值 是否必填
api 约定的协议名称 String
pin 用户pin String
data 参数 Object
isNoData 是否参数不需要包一层data Boolean false
autoTip 是否展示下载弹窗 Boolean false
success 成功回调 function
error 失败回调 function
jmsdkPC.open({
    api: 'xxxx',
    data: {
      tabIndex: 1
    },
    isNoData: true,
    autoTip: true;
    success: function (res) {
      message('打开成功')
    },
    error: function (error) {
      message(error.message)
    }
  });

3. 事件监听:on(eventName: string, listener: function)

3.1. "servicenewchange": 是否有新的插件购买

jmsdkPC.addEventListener('servicenewchange', function(event) {
  // hasNew: 是否有新的插件购买
  console.log(event.hasNew)
});

4. 取消事件监听:off(eventName: string, listener: function)

5. 状态码

code 说明 message
1000 接口调用成功 -
1001 客户端版本过低,不支持API sorry, the version is too low to support the interface of xxx(api)
1002 在外部浏览器调用了只能在京麦客户端中使用的API sorry, the interface of xxx(api) can only be used in JM Client
1003 接口参数异常 xxx(api): Parameter exception
1004 未安装客户端 please install Jingmai client
1005 该接口不支持在mac中使用 sorry, the interface of xxx(api) can only be used in JM windows Client
2001 业务异常
powered by Gitbook修订时间: 2024-08-13 19:48:11

找到相关内容

    未找到""相关内容

    找到相关内容

      未找到""相关内容