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

Share Bridge 的 QQ 与 QQ 空间分享能力插件。

share_bridge_qq #

English | 中文

Share Bridge 的 QQ 与 QQ 空间分享能力包。

当前状态:

  • Android 已完成 QQ / QQ 空间分享的原生调用适配。
  • Android 侧已接入本地官方 SDK:../share_bridge_qq_android/android/libs/open_sdk_3.5.19_r9483ffc7_lite.jar
  • iOS 已完成 QQ / QQ 空间分享的原生调用适配。
  • iOS 侧已接入本地官方 SDK:../share_bridge_qq_ios/ios/Frameworks/TencentOpenAPI.xcframework

使用形态 #

await QqShareProvider.setPrivacyGranted(true);

final manager = ShareManager();
await manager.register(
  QqShareProvider(
    appId: 'your_qq_app_id',
    universalLink: 'https://example.com/qq/',
    qqHarmonySigner: (request) async {
      final signed = await requestYourBackendToSign(
        type: request.type,
        shareJson: request.shareJson,
      );
      return QqHarmonyShareSignature(
        type: request.type,
        shareJson: request.shareJson,
        timestamp: signed.timestamp,
        nonce: signed.nonce,
        shareJsonSign: signed.shareJsonSign,
        openId: signed.openId,
      );
    },
  ),
);

setPrivacyGranted(true) 会真实调用 QQ 官方 SDK 隐私授权 API:Android 对应 Tencent.setIsPermissionGranted(true),iOS 对应 TencentOAuth.setIsUserAgreedAuthorization(true)。宿主 App 应在用户同意隐私政策后调用它。

qqHarmonySigner 只在 QQ HarmonyOS 分享时使用。QQ HarmonyOS SDK 要求对 shareJson + timestamp + nonce 进行签名,签名应由业务后台完成;Android / iOS 会忽略该参数。

安装检查统一走 manager:

final installed = await manager.isInstalled(ShareClient.qq);

本地调试可以通过示例工程传入 AppID:

cd packages/share_bridge_qq/example
fvm flutter run --dart-define=QQ_APP_ID=你的QQ互联AppID

Android 真机调试前,还需要把 example 的 AndroidManifest.xmltencentyour_qq_app_id 替换成 tencent + 你的 QQ AppID。--dart-define 只传给 Dart 层,不会自动修改 Manifest scheme。

范围 #

  • 只做 QQ / QQ 空间分享。
  • 不做登录、OAuth、用户资料。
  • Android 支持 QQ 好友网页分享、QQ 好友图片分享、QQ 空间网页分享。
  • iOS 支持 QQ 好友网页分享、QQ 好友图片分享、QQ 空间网页分享。
  • HarmonyOS 支持 QQ 好友网页分享、QQ 好友图片分享、QQ 空间网页分享;需要配置 qqHarmonySigner
  • Android / iOS / HarmonyOS 暂不把 QQ 空间纯图片分享作为 MVP 能力。

Android SDK 接入说明 #

QQ 互联 Android SDK 当前官方文档仍以下载 SDK/Jar 的方式说明接入。当前插件使用你本地下载的官方 Lite Jar:

../share_bridge_qq_android/android/libs/open_sdk_3.5.19_r9483ffc7_lite.jar

插件已经直接编译依赖该 Jar,并使用:

  • com.tencent.tauth.Tencent
  • com.tencent.tauth.IUiListener
  • com.tencent.connect.share.QQShare
  • com.tencent.connect.share.QzoneShare

插件初始化时会优先调用:

Tencent.createInstance(appId, context, "${applicationId}.fileprovider")

宿主 App 不需要再单独添加 QQ SDK 依赖,但仍需要按 QQ 互联 Android SDK 文档配置 AuthActivityAssistActivitytencent{AppID} scheme。

涉及本地图片、缩略图分享时,宿主 App 还需要按 QQ 官方“分享功能存储权限适配”配置 FileProvider,并让 authorities 与 ${applicationId}.fileprovider 一致。完整配置见仓库根目录的 docs/android_setup.md

参考资料:

iOS SDK 接入说明 #

QQ 互联 iOS SDK 当前使用你本地下载的官方 Lite XCFramework:

../share_bridge_qq_ios/ios/Frameworks/TencentOpenAPI.xcframework

插件已经直接编译依赖该 XCFramework,并使用:

  • TencentOAuth
  • QQApiInterface
  • QQApiURLObject
  • QQApiImageObject
  • SendMessageToQQReq

宿主 App 不需要再单独添加 QQ iOS SDK 依赖,但仍需要配置:

  • CFBundleURLTypes,scheme 为 tencent{QQAppID}
  • LSApplicationQueriesSchemes
  • SceneDelegate / AppDelegate 回调转发。
  • 如启用 Universal Link,还需要配置 Associated Domains。

完整配置见仓库根目录的 docs/ios_setup.md