From 34a336d8592204c060d0554fc0bd2a938e28cc18 Mon Sep 17 00:00:00 2001 From: joywayer Date: Wed, 24 Jun 2026 17:49:23 +0800 Subject: [PATCH] =?UTF-8?q?4.B=20QQ=20=E9=93=BE=E6=8E=A5=E5=88=86=E4=BA=AB?= =?UTF-8?q?=E8=A1=A5=E9=BD=90=20URL=20Scheme=20=E5=85=A8=E9=87=8F=E5=8F=82?= =?UTF-8?q?=E6=95=B0=EF=BC=9A=E5=8F=AF=E5=BC=B9=E5=A5=BD=E5=8F=8B=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【契约影响】§3.1[2]仅 native 实现细节,H5 无感 先前 QQShare.shareLink 只拼 version/cflag/req_type/url/title/description 6 个字段,QQ 客户端识别失败 → 只打开主页,不弹好友选择。对齐 msext QQShareManager.shareToQQFriend:QQShareTypeNews URL Scheme fallback 路径 补齐: - 公共参数:src_type=app / app_id / share_id / file_type=news / callback_type=scheme / callback_name=QQ / thirdAppDisplayName / app_name(后两者 base64+urlenc) - 内容参数:News 类型 title/desc/url 必须 base64 后再 URL-encode(与 msext line 513-515 一致) 新增常量(沿用 daoqi 注册值): appID = 102793577 (daoqi kQQAppID) appIDHex = 06208169 (callback_name 后缀,QQ 协议要求) appName = 进贤聚友棋牌 (msext kQQAppName 同源) Info.plist 增加 CFBundleURLSchemes tencent102793577 —— QQ 客户端识别 "调用者已在 Info.plist 注册 AppID"的前置条件,没这一项 QQ 直接拒绝弹 分享面板。 ⚠️ AppID 102793577 在 QQ 互联开放平台绑给 com.chao.msext。新外壳 bundle id com.skyapp.ylgamehall —— QQ 客户端唤起 UI 时实测大概率不严格校验, 但若后续遇到拒绝/回调失败,需到 https://connect.qq.com/ 重新注册 AppID 绑给新 bundle id,只改 QQShare 顶部 3 个常量 + Info.plist 即可。 截图分享(type==2)保持剪贴板 + 引导框模式 —— URL Scheme 内联 base64 1080p 截图编码后 URL ≈ 5MB,iOS openURL 不可靠。 --- ylgamehall/Info.plist | 13 +++ ylgamehall/Source/Share/QQShare.swift | 139 ++++++++++++++++++-------- 2 files changed, 113 insertions(+), 39 deletions(-) diff --git a/ylgamehall/Info.plist b/ylgamehall/Info.plist index e7513c4..4fcca63 100644 --- a/ylgamehall/Info.plist +++ b/ylgamehall/Info.plist @@ -71,6 +71,11 @@ CFBundleURLTypes — 第三方 SDK 回调跳回本 App 用的 URL Scheme。 - 微信(Phase 4.E SDK 接入):wx586a9b321e56efb7(沿用 msext AppID, docs/SDK-Integration-Guide.md §0) + - QQ(URL Scheme 分享路径):tencent102793577(沿用 daoqi AppID。 + callback 用于 QQ 客户端把分享结果跳回本 App。当前 sharesuccess + 走 fire-and-forget 不依赖回调,但**声明 URL Scheme 是 QQ 客户端 + 识别"调用者已注册 AppID"的前置条件**,没有这一项 QQ 会拒绝弹分 + 享面板,只打开主页。详见 Source/Share/QQShare.swift。) --> CFBundleURLTypes @@ -82,6 +87,14 @@ wx586a9b321e56efb7 + + CFBundleURLName + tencent + CFBundleURLSchemes + + tencent102793577 + +