
回复
应用接续让用户在手机/平板/车机间切换应用时,实现任务无缝迁移。本文解析核心API与实战流程,助你打造跨设备协同体验~
场景 | 接续效果 |
---|---|
手机→平板阅读 | 浏览器页面滚动位置、书签同步 |
PC→车机导航 | 地图路线、目的地参数无缝迁移 |
平板→手表待办事项 | 任务进度、提醒设置实时同步 |
export default class SourceAbility extends UIAbility {
onContinue(wantParam: Record<string, any>) {
// 1. 版本兼容性校验
const targetVersion = wantParam.version || 0;
if (targetVersion < 2.0) {
return AbilityConstant.OnContinueResult.MISMATCH; // 版本不兼容
}
// 2. 打包迁移数据(文本、进度等)
wantParam['editorContent'] = this.currentText;
wantParam['scrollPos'] = this.scrollY;
return AbilityConstant.OnContinueResult.AGREE;
}
}
export default class TargetAbility extends UIAbility {
onCreate(want: Want, launchParam: any) {
if (launchParam.launchReason === 'CONTINUATION') {
// 1. 提取迁移数据
const content = want.parameters?.editorContent || '';
const scrollPos = want.parameters?.scrollPos || 0;
// 2. 恢复界面状态
this.setText(content);
this.setScroll(scrollPos);
}
}
}
onNewWant(want: Want, launchParam: any) {
if (launchParam.launchReason === 'CONTINUATION') {
// 处理已启动应用的接续请求
const data = want.parameters?.migrationData;
this.updateData(data);
}
}
异常类型 | 解决方案 |
---|---|
网络中断 | 本地缓存数据,网络恢复后自动续传 |
设备离线 | 提示用户设备状态,提供备选设备列表 |
数据格式不兼容 | 版本协商机制,自动转换数据格式 |
onContinue(wantParam) {
// 保存文档内容、光标位置、格式设置
wantParam['docContent'] = this.editor.getContent();
wantParam['cursorPos'] = this.editor.getCursor();
wantParam['formatStyle'] = this.editor.getStyle();
}
onCreate(want) {
if (isContinuation(want)) {
const content = want.parameters.docContent;
const pos = want.parameters.cursorPos;
// 恢复文档内容与光标位置
this平板编辑器.setContent(content);
this平板编辑器.setCursor(pos);
}
}