diff --git a/common/src/main/ets/event/ShareEvents.ets b/common/src/main/ets/event/ShareEvents.ets index 129fa8d..dda8f98 100644 --- a/common/src/main/ets/event/ShareEvents.ets +++ b/common/src/main/ets/event/ShareEvents.ets @@ -45,14 +45,14 @@ export interface SharePanelResult { export interface ShareGuideRequest { /** 渠道:'wechat' | 'qq' | 'douyin'。 */ platform: string; - /** 内容类型:'text' | 'image'(决定指引文案与系统分享走 systemText/systemImage)。 */ - contentKind: string; + /** 是否朋友圈直发(true=微信朋友圈,引导发朋友圈;false=好友/群聊)。 */ + timeline: boolean; /** 用户选定动作后回投的一次性事件名(ShareProvider 已 EventBus.once 监听)。 */ resultEvent: string; } /** 指引窗动作回投载荷。 */ export interface ShareGuideResult { - /** 'open'(打开App)| 'system'(用系统分享)| 'cancel'。 */ + /** 'open'(立即打开App)| 'cancel'(稍后分享/取消)。 */ action: string; } diff --git a/entry/src/main/ets/components/ShareGuideDialog.ets b/entry/src/main/ets/components/ShareGuideDialog.ets index 7114c5c..4ece7b5 100644 --- a/entry/src/main/ets/components/ShareGuideDialog.ets +++ b/entry/src/main/ets/components/ShareGuideDialog.ets @@ -7,6 +7,8 @@ export struct ShareGuideDialog { /** 渠道:'wechat' | 'qq' | 'douyin'。 */ platform: string = 'wechat'; + /** 是否朋友圈直发(true=微信朋友圈,引导发朋友圈;false=好友/群聊)。 */ + timeline: boolean = false; /** 动作回调:'open'(立即打开App)| 'cancel'(稍后分享/点空白)。 */ onPick: (action: string) => void = () => { }; @@ -31,8 +33,17 @@ export struct ShareGuideDialog { return '#07C160'; } - /** 各渠道"分享到好友或群聊"分步文案(差异主要在第 1 步进入聊天的入口)。 */ + /** 步骤标题。 */ + private stepHeader(): string { + return this.timeline ? '🎯 分享到朋友圈步骤:' : '🎯 分享到好友或群聊步骤:'; + } + + /** 分步文案:朋友圈直发一套;否则各渠道"好友或群聊"一套(差异在第 1 步进入聊天的入口)。 */ private steps(): string[] { + if (this.timeline) { + // 微信朋友圈(sharefriend==2 直发微信) + return ['打开微信,进入「发现」→「朋友圈」', '长按右上角相机图标(发表文字)', '在输入框长按粘贴内容', '点击「发表」即可分享']; + } if (this.platform === 'qq') { return ['打开QQ,进入「消息」列表', '选择好友或群聊进入聊天', '在输入框长按粘贴内容', '点击发送即可分享']; } @@ -83,7 +94,7 @@ export struct ShareGuideDialog { .width('100%') .margin({ top: 14 }) - Text('🎯 分享到好友或群聊步骤:') + Text(this.stepHeader()) .fontSize(14) .fontColor('#666666') .width('100%') diff --git a/entry/src/main/ets/pages/BridgeGameContainer.ets b/entry/src/main/ets/pages/BridgeGameContainer.ets index 44d5185..1ea691a 100644 --- a/entry/src/main/ets/pages/BridgeGameContainer.ets +++ b/entry/src/main/ets/pages/BridgeGameContainer.ets @@ -56,6 +56,7 @@ export struct BridgeGameContainer { /** 分享指引窗显隐(渠道选定后叠在 Stack 顶层)。 */ @State private shareGuideVisible: boolean = false; private shareGuidePlatform: string = ''; + private shareGuideTimeline: boolean = false; /** 当前指引窗的一次性回投事件名(用户选动作后 emit 回 ShareProvider)。 */ private shareGuideResultEvent: string = ''; @@ -165,6 +166,7 @@ export struct BridgeGameContainer { } const req = p as ShareGuideRequest; this.shareGuidePlatform = req.platform; + this.shareGuideTimeline = req.timeline; this.shareGuideResultEvent = req.resultEvent; this.shareGuideVisible = true; } @@ -429,6 +431,7 @@ export struct BridgeGameContainer { if (this.shareGuideVisible) { ShareGuideDialog({ platform: this.shareGuidePlatform, + timeline: this.shareGuideTimeline, onPick: (action: string) => this.emitShareGuideResult(action), }) } diff --git a/feature_capabilities/src/main/ets/providers/ShareProvider.ets b/feature_capabilities/src/main/ets/providers/ShareProvider.ets index a6f0535..69e6dad 100644 --- a/feature_capabilities/src/main/ets/providers/ShareProvider.ets +++ b/feature_capabilities/src/main/ets/providers/ShareProvider.ets @@ -223,7 +223,7 @@ export class ShareProvider implements CapabilityProvider { this.guideCancelFn = undefined; this.onGuideAction(bean, platform, p); }); - const req: ShareGuideRequest = { platform, contentKind: 'text', resultEvent }; + const req: ShareGuideRequest = { platform, timeline: bean.sharefriend === '2', resultEvent }; EventBus.emit(ShareEvents.SHOW_GUIDE, req); }