Tapd 开放平台提供基本的组件来完成第三方应用于 Tapd 系统的数据交互。

# 通信原理

目前业务扩展模块是基于Iframe网页嵌入,第三方应用与 Tapd 系统通过 postMessage (opens new window) 来实现数据交互。

enter image description here

# 通用能力

# 通信格式

{
	event: "xxxx",
	params: {},
	code: "xxx",
}
1
2
3
4
5

调用事件样例

const config = {
	event: event,
	params: payload,
	code: code,
};

window.parent.postMessage(config, '*');
1
2
3
4
5
6
7

接收事件样例

const handleMessage = (message) => {
    const options = message['data'];
    const eventType = options['event'];
    const params = options['params'];

    // 第三方业务逻辑
}

if (window.addEventListener) {
    window.addEventListener("message", handleMessage);
} else {
    window.attachEvent("onmessage", handleMessage);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
字段 描述
event 事件名称
params 事件参数

# 通信事件

Tapd 开放平台既接收第三方应用发起的事件,也支持主动发起事件推送给第三方应用。

# 接收事件

# 同步URL

名称: syncUrl

描述:Tapd 接收第三方同步 URL 的事件。在访问到第三方应用页面后,希望父窗体的地址栏跟随子窗体内部src,同时更新父窗体的地址栏,再刷新页面可以保持在当前访问的页面,同时可以分享链接。

弃用:建议不使用用,将会被启用,建议使用 routeChange

参数

字段 必选 类型 说明
url string hash链接
refresh boolean 是否强制刷新

# 同步URL (新)

名称: routeChange

描述: 当想要用户刷新页面之后访问同一个应用的同一页面时候使用。

注意: 目前只能在 app_for_project 使用,归来将会全插槽使用

参数

字段 必选 类型 说明
url string 下次打开页面时给第三发应用的url,格式位完成url,格式同 (window.location)一致。

# 生成code用户授权码

名称:generateCode

描述:当第三方应用登录态丢失时,可以发起此事件调用生成新的用户授权码。当 Tapd 生成成功后会发起同步 code 事件推送给第三方。

参数:无

# 访问 Tapd 业务对象链接

名称:openObjURL

描述:Tapd 提供可以新页面直接打开业务对象详情页,避免第三方应用自己拼接URL。

参数

字段 必选 类型 说明
entityType string 对象类型(story/bug/task)
entityId string 对象ID

# 同步页面高度

名称:syncPageHeight

描述:根据第三方应用传递的页面高度来设置 iframe 的页面高度

参数

字段 必选 类型 说明
height number iframe 页面高度

# 打开系统弹框

名称:showDialog

描述:第三方应用可以调用 Tapd 系统弹框,将相应的页面嵌入到弹框中,从而保证与 Tapd 系统交互一致性。

参数

字段 必选 类型 说明
title string 弹框标题
url string 嵌入页面的 URL
height number 弹框高度(<= 1时为当前窗口宽度的比例值,设置值不能大于窗口宽度)
width number 弹框宽度(<= 1时为当前窗口高度的比例值,设置值不能大于窗口宽度)

# 关闭系统弹框

名称:closeDialog

描述:第三方应用可以将打开的 Tapd 系统弹框进行关闭。例如第三方已经做完提交操作,可调用此事件关闭弹框。

参数

字段 必选 类型 说明
status boolean 操作状态
params object 透传数据

# 打开确认框

名称:showConfirm

描述:调用 Tapd 系统确认框。

参数

字段 必选 类型 说明
content string 确认框内容
data object 透传数据

# 同步页面事件数据

名称:syncPageEvent

描述:同一个页面中有多个入口挂载时,可通过此事件通知其他入口进行操作

参数

字段 必选 类型 说明
entranceId string 扩展模块入口ID(例如业务对象tab页:app_for_obj_tab_story、app_for_obj_tab_bug、app_for_obj_tab_task)
data object 透传数据

# 刷新附件列表

名称:refreshAttachmentList

描述:当第三方应用在解除与tapd附件关联时,调用此方法可以刷新页面的附件列表

参数:无

# 刷新当前页面

名称:refreshCurrentPage

描述:当第三方API变更了TAPD字段时,需要及时显示,调用此方法可以刷新当前TAPD页面

参数:无

# 初始化完成应答事件

名称:asyncAnswerInitFinished

描述:当第三方应用初始化完成时响应

参数:无

字段 必选 类型 说明
status number 状态(0 失败, 1成功)
message string 提示信息

# 编辑器确认应答事件

名称:asyncAnswerToEditor

描述:当用户点击编辑器弹窗确认按钮时,编辑器会发送确认事件,第三方收到确认事件时需要应答此事件,以回传插入元素所需要的信息

参数:无

字段 必选 类型 说明
url string iframe指向的url地址
name string 标题
sub string 浮动显示标题(建议长度在5个字符以内)
extra_name string 右下角跳转显示的名称,默认为“打开【扩展名称】”
extra_url string 右下角跳转的地址,默认与url保持一致

# 推送事件

# 同步 code

名称: syncCode

描述:生成的新用户授权码推送给第三方应用。

参数

字段 必选 类型 说明
code string 用户授权码

# 弹框确认

名称: dialogYes

描述:当用户点击系统弹框的【确认】按钮时,触发此事件并推送给第三方应用。

参数:无

# 弹框取消

名称: dialogNo

描述:当用户点击系统弹框的【取消】按钮时,触发此事件并推送给第三方应用。

参数:无

# 弹框操作完成

名称: dialogOperateFinish

描述:当系统弹框关闭后,会触发此事件并推送给第三方应用,来通知原第三方应用页面已经完成弹框操作,这样可以进行下一步操作,比如:局部刷新等等。

参数

字段 必选 类型 说明
status boolean 操作状态
params object 透传数据

# 确认框确认

名称: confirmYes

描述:当触发确认框调起之后,点击【确定】按钮时,触发此事件并推送给第三方应用。

参数

字段 必选 类型 说明
data object 透传数据

# 同步页面事件数据

名称:syncPageEvent

描述:同一个页面中有多个入口挂载时,可通过此事件通知其他入口进行操作

参数

字段 必选 类型 说明
entranceId string 发送数据iframe的扩展模块ID(例如附件扩展模块:app_for_obj_attachment_story、app_for_obj_attachment_bug、app_for_obj_attachment_task)
data object 透传数据

# 编辑器toolbar触发事件

名称:syncFromEditorTriggerEvent

描述:当用户点击编辑器扩展模块图标时,tapd会调起弹窗加载用户配置的url,并且发送该事件通知应用进行初始化

参数

字段 必选 类型 说明
entranceId string 扩展模块入口ID(例如业务对象编辑器toolbard入口ID:app_for_editor)
url string 嵌入页面的 URL

# 生成code用户授权码

名称:generateCode

描述:当第三方应用登录态丢失时,可以发起此事件调用生成新的用户授权码。当 Tapd 生成成功后会发起同步 code 事件推送给第三方。

参数:无

# 访问 Tapd 业务对象链接

名称:openObjURL

描述:Tapd 提供可以新页面直接打开业务对象详情页,避免第三方应用自己拼接URL。

参数

字段 必选 类型 说明
entityType string 对象类型(story/bug/task)
entityId string 对象ID

# 同步页面高度

名称:syncPageHeight

描述:根据第三方应用传递的页面高度来设置 iframe 的页面高度

参数

字段 必选 类型 说明
height number iframe 页面高度

# 打开系统弹框

名称:showDialog

描述:第三方应用可以调用 Tapd 系统弹框,将相应的页面嵌入到弹框中,从而保证与 Tapd 系统交互一致性。

参数

字段 必选 类型 说明
title string 弹框标题
url string 嵌入页面的 URL
height number 弹框高度(<= 1时为当前窗口宽度的比例值,设置值不能大于窗口宽度)
width number 弹框宽度(<= 1时为当前窗口高度的比例值,设置值不能大于窗口宽度)

# 关闭系统弹框

名称:closeDialog

描述:第三方应用可以将打开的 Tapd 系统弹框进行关闭。例如第三方已经做完提交操作,可调用此事件关闭弹框。

参数

字段 必选 类型 说明
status boolean 操作状态
params object 透传数据

# 打开确认框

名称:showConfirm

描述:调用 Tapd 系统确认框。

参数

字段 必选 类型 说明
content string 确认框内容
data object 透传数据

# 同步页面事件数据

名称:syncPageEvent

描述:同一个页面中有多个入口挂载时,可通过此事件通知其他入口进行操作

参数

字段 必选 类型 说明
entranceId string 扩展模块入口ID(例如业务对象tab页:app_for_obj_tab_story、app_for_obj_tab_bug、app_for_obj_tab_task)
data object 透传数据

# 刷新附件列表

名称:refreshAttachmentList

描述:当第三方应用在解除与tapd附件关联时,调用此方法可以刷新页面的附件列表

参数:无

# 刷新当前页面

名称:refreshCurrentPage

描述:当第三方API变更了TAPD字段时,需要及时显示,调用此方法可以刷新当前TAPD页面

参数:无

# 初始化完成应答事件

名称:asyncAnswerInitFinished

描述:当第三方应用初始化完成时响应

参数:无

字段 必选 类型 说明
status number 状态(0 失败, 1成功)
message string 提示信息

# 编辑器确认应答事件

名称:asyncAnswerToEditor

描述:当用户点击编辑器弹窗确认按钮时,编辑器会发送确认事件,第三方收到确认事件时需要应答此事件,以回传插入元素所需要的信息

参数:无

字段 必选 类型 说明
url string iframe指向的url地址
name string 标题
sub string 浮动显示标题(建议长度在5个字符以内)

# 推送事件

# 同步 code

名称: syncCode

描述:生成的新用户授权码推送给第三方应用。

参数

字段 必选 类型 说明
code string 用户授权码

# 弹框确认

名称: dialogYes

描述:当用户点击系统弹框的【确认】按钮时,触发此事件并推送给第三方应用。

参数:无

# 弹框取消

名称: dialogNo

描述:当用户点击系统弹框的【取消】按钮时,触发此事件并推送给第三方应用。

参数:无

# 弹框操作完成

名称: dialogOperateFinish

描述:当系统弹框关闭后,会触发此事件并推送给第三方应用,来通知原第三方应用页面已经完成弹框操作,这样可以进行下一步操作,比如:局部刷新等等。

参数

字段 必选 类型 说明
status boolean 操作状态
params object 透传数据

# 确认框确认

名称: confirmYes

描述:当触发确认框调起之后,点击【确定】按钮时,触发此事件并推送给第三方应用。

参数

字段 必选 类型 说明
data object 透传数据

# 同步页面事件数据

名称:syncPageEvent

描述:同一个页面中有多个入口挂载时,可通过此事件通知其他入口进行操作

参数

字段 必选 类型 说明
entranceId string 发送数据iframe的扩展模块ID(例如附件扩展模块:app_for_obj_attachment_story、app_for_obj_attachment_bug、app_for_obj_attachment_task)
data object 透传数据

# 编辑器toolbar触发事件

名称:syncFromEditorTriggerEvent

描述:当用户点击编辑器扩展模块图标时,tapd会调起弹窗加载用户配置的url,并且发送该事件通知应用进行初始化

参数

字段 必选 类型 说明
entranceId string 扩展模块入口ID(例如业务对象编辑器toolbard入口ID:app_for_editor)
url string 嵌入页面的 URL
上次更新: 2024-07-12 14:30:26