接入原生壳应用角标能力
新增 HostBridge app.setBadgeCount 契约和 H5 能力门控 Expo 壳按平台声明能力并在 iOS 调用系统角标 API Tauri 壳通过主窗口设置任务栏角标并校验 payload 补齐角标能力测试、漂移检查和架构文档
This commit is contained in:
@@ -47,7 +47,12 @@ const mobileCapabilities = extractStringArrayExport(
|
||||
bridgeSource,
|
||||
'MOBILE_HOST_CAPABILITIES',
|
||||
);
|
||||
const iosMobileCapabilities = extractStringArrayExport(
|
||||
bridgeSource,
|
||||
'IOS_MOBILE_HOST_CAPABILITIES',
|
||||
);
|
||||
const mobileCapabilitySet = new Set(mobileCapabilities);
|
||||
const iosMobileCapabilitySet = new Set(iosMobileCapabilities);
|
||||
const unknownMobileCapabilities = mobileCapabilities.filter(
|
||||
(capability) => !sharedCapabilities.includes(capability),
|
||||
);
|
||||
@@ -57,7 +62,16 @@ if (unknownMobileCapabilities.length > 0) {
|
||||
);
|
||||
}
|
||||
|
||||
for (const capability of mobileCapabilities) {
|
||||
const unknownIosMobileCapabilities = iosMobileCapabilities.filter(
|
||||
(capability) => !sharedCapabilities.includes(capability),
|
||||
);
|
||||
if (unknownIosMobileCapabilities.length > 0) {
|
||||
throw new Error(
|
||||
`iOS mobile shell declares unknown HostBridge capabilities: ${unknownIosMobileCapabilities.join(', ')}`,
|
||||
);
|
||||
}
|
||||
|
||||
for (const capability of iosMobileCapabilities) {
|
||||
const switchCase = `case '${capability}':`;
|
||||
if (
|
||||
capability !== 'host.events' &&
|
||||
@@ -129,8 +143,12 @@ for (const snippet of [
|
||||
}
|
||||
|
||||
const capabilityQuerySnippet = "capabilities: MOBILE_HOST_CAPABILITIES";
|
||||
if (!appSource.includes(capabilityQuerySnippet)) {
|
||||
throw new Error('mobile shell URL must use MOBILE_HOST_CAPABILITIES');
|
||||
if (appSource.includes(capabilityQuerySnippet)) {
|
||||
throw new Error('mobile shell URL must resolve platform-aware capabilities');
|
||||
}
|
||||
|
||||
if (!appSource.includes('capabilities: resolveMobileHostCapabilities()')) {
|
||||
throw new Error('mobile shell URL must use resolveMobileHostCapabilities()');
|
||||
}
|
||||
|
||||
for (const capability of [
|
||||
@@ -149,3 +167,11 @@ for (const capability of [
|
||||
throw new Error(`mobile shell capabilities missing ${capability}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (!iosMobileCapabilitySet.has('app.setBadgeCount')) {
|
||||
throw new Error('iOS mobile shell capabilities missing app.setBadgeCount');
|
||||
}
|
||||
|
||||
if (mobileCapabilitySet.has('app.setBadgeCount')) {
|
||||
throw new Error('Android mobile shell base capabilities must not include app.setBadgeCount');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user