share_bridge_wechat 0.1.0-dev.1 copy "share_bridge_wechat: ^0.1.0-dev.1" to clipboard
share_bridge_wechat: ^0.1.0-dev.1 copied to clipboard

Share Bridge 的微信分享能力插件。

share_bridge_wechat #

English | 中文

Share Bridge 的微信分享能力包。

当前状态:

  • Android:已接入微信 OpenSDK,可发起网页 / 图片分享并等待 WXEntryActivity 回调。
  • iOS:已接入 WechatOpenSDK-XCFramework,可发起网页 / 图片分享并处理 URL Scheme / Universal Link 回调。
  • HarmonyOS:已新增 share_bridge_wechat_ohos,可通过微信 OpenSDK 发起网页 / 图片分享。

使用形态 #

final manager = ShareManager();
await manager.register(
  WechatShareProvider(
    appId: 'your_wechat_app_id',
    universalLink: 'https://example.com/wechat/',
  ),
);

微信插件不暴露 setPrivacyGranted。宿主 App 应按自身隐私合规流程,在用户同意隐私政策后再注册 provider 或调用分享;插件不会伪造微信 SDK 不存在的隐私授权 API。

范围 #

  • 只做微信分享。
  • 不做登录、支付、OAuth、用户资料。

Android 回调接入 #

宿主 App 必须在自己的包名下提供 wxapi.WXEntryActivity,并继承插件提供的基类:

package your.application.id.wxapi

import com.gongziming.share_bridge_wechat.ShareBridgeWechatEntryActivity

class WXEntryActivity : ShareBridgeWechatEntryActivity()

同时需要在宿主 App 的 AndroidManifest.xml 中声明:

<activity
    android:name=".wxapi.WXEntryActivity"
    android:exported="true"
    android:launchMode="singleTop"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />

iOS 回调接入 #

宿主 App 需要配置:

  • URL Scheme:通常为微信 AppID。
  • Universal Link:需要和微信开放平台后台一致。
  • Associated Domains:形如 applinks:example.com
  • LSApplicationQueriesSchemes:至少包含 weixinwechatweixinULAPIweixinURLParamsAPI

如果使用 SceneDelegate,需要在 scene(_:openURLContexts:)scene(_:continue:) 中转发给插件:

import share_bridge_wechat_ios

if ShareBridgeWechatPlugin.handleOpen(url) {
  return
}

if ShareBridgeWechatPlugin.handleOpenUniversalLink(userActivity) {
  return
}

HarmonyOS 接入 #

HarmonyOS 平台由 share_bridge_wechat_ohos 自动接入。微信 HarmonyOS 不需要签名 callback,继续使用普通 ShareContent.webpage / ShareContent.image

宿主工程需要按微信开放平台 HarmonyOS 文档完成应用配置;示例 App 的 entry 模块已声明 weixinwxopensdk 查询 scheme,插件 HAR 依赖 @tencent/wechat_open_sdk

为接收分享结果,宿主 EntryAbility 需要在 onCreate / onNewWant 调用 ShareBridgeWechatPlugin.handleWant(want)。示例工程已配置。