share_bridge_qq 0.1.0-dev.1
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.xml 中 tencentyour_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.Tencentcom.tencent.tauth.IUiListenercom.tencent.connect.share.QQSharecom.tencent.connect.share.QzoneShare
插件初始化时会优先调用:
Tencent.createInstance(appId, context, "${applicationId}.fileprovider")
宿主 App 不需要再单独添加 QQ SDK 依赖,但仍需要按 QQ 互联 Android SDK 文档配置 AuthActivity、AssistActivity 和 tencent{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,并使用:
TencentOAuthQQApiInterfaceQQApiURLObjectQQApiImageObjectSendMessageToQQReq
宿主 App 不需要再单独添加 QQ iOS SDK 依赖,但仍需要配置:
CFBundleURLTypes,scheme 为tencent{QQAppID}。LSApplicationQueriesSchemes。- SceneDelegate / AppDelegate 回调转发。
- 如启用 Universal Link,还需要配置 Associated Domains。
完整配置见仓库根目录的 docs/ios_setup.md。