接入桌面壳窗口标题同步路径
H5 主站按当前平台阶段同步 document.title native_app 中通过 app.setTitle 请求 Tauri 窗口标题同步 补充标题同步测试和宿主壳能力文档
This commit is contained in:
@@ -18,6 +18,7 @@ import {
|
||||
requestWechatMiniProgramPayment,
|
||||
requestWechatMiniProgramPhoneLogin,
|
||||
resolveHostRuntime,
|
||||
setHostAppTitle,
|
||||
setHostShareTarget,
|
||||
writeHostClipboardText,
|
||||
} from './hostBridge';
|
||||
@@ -315,6 +316,9 @@ describe('hostBridge', () => {
|
||||
await expect(requestHostHapticsImpact({ style: 'medium' })).resolves.toBe(
|
||||
true,
|
||||
);
|
||||
await expect(setHostAppTitle({ title: ' 拼图 - 陶泥儿 ' })).resolves.toBe(
|
||||
true,
|
||||
);
|
||||
|
||||
expect(invoke).toHaveBeenCalledWith('host_bridge_request', {
|
||||
request: expect.objectContaining({
|
||||
@@ -352,6 +356,14 @@ describe('hostBridge', () => {
|
||||
},
|
||||
}),
|
||||
});
|
||||
expect(invoke).toHaveBeenCalledWith('host_bridge_request', {
|
||||
request: expect.objectContaining({
|
||||
method: 'app.setTitle',
|
||||
payload: {
|
||||
title: '拼图 - 陶泥儿',
|
||||
},
|
||||
}),
|
||||
});
|
||||
});
|
||||
|
||||
test('原生 App 宿主不支持能力时回退到 H5 路径', async () => {
|
||||
@@ -388,6 +400,10 @@ describe('hostBridge', () => {
|
||||
await expect(requestHostHapticsImpact({ style: 'light' })).resolves.toBe(
|
||||
false,
|
||||
);
|
||||
await expect(setHostAppTitle({ title: '拼图 - 陶泥儿' })).resolves.toBe(
|
||||
false,
|
||||
);
|
||||
await expect(setHostAppTitle({ title: ' ' })).resolves.toBe(false);
|
||||
});
|
||||
|
||||
test('普通浏览器不处理宿主文本导出', async () => {
|
||||
|
||||
@@ -68,6 +68,10 @@ export type HostClipboardWriteTextRequest = {
|
||||
|
||||
export type HostHapticsImpactRequest = HapticsImpactPayload;
|
||||
|
||||
export type HostAppTitleRequest = {
|
||||
title: string;
|
||||
};
|
||||
|
||||
function isUnsupportedHostBridgeError(error: unknown) {
|
||||
return (
|
||||
error instanceof Error &&
|
||||
@@ -504,3 +508,18 @@ export async function requestHostHapticsImpact(
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
export async function setHostAppTitle({ title }: HostAppTitleRequest) {
|
||||
const normalizedTitle = title.trim();
|
||||
if (!normalizedTitle || getHostRuntime().kind !== 'native_app') {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
return await requestNativeHostBoolean('app.setTitle', {
|
||||
title: normalizedTitle,
|
||||
});
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user