十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

jynew 项目 TapTap Login PC 端登录接入实战:Mac/Windows 平台编译配置与 URL Scheme 协议详解

jynew 项目 TapTap Login PC 端登录接入实战:Mac/Windows 平台编译配置与 URL Scheme 协议详解 jynew 项目 TapTap Login PC 端登录接入实战Mac/Windows 平台编译配置与 URL Scheme 协议详解【免费下载链接】jynewJinYongLegend-like RPG Game Framework with full Modding support and 10 hours playable samples of game.项目地址: https://gitcode.com/GitHub_Trending/jy/jynew本文以 jyx2/TapSdkFiles/TapTap/Login/PC.md 为骨架结合 jynew 仓库中 TapTap.Login SDK 的实际目录结构、编辑器构建脚本与游戏侧调用源码完整讲解如何在 Mac 与 Windows 平台上将 TapTap 账号登录接入 Unity 游戏。读完本文你将掌握 Xcode 工程与 Info.plist 的 URL Scheme 配置、Windows 注册表协议关联的完整写法以及从TapLogin.Init到登录回调的端到端接入流程。TapTap.Login PC 端能力概览TapTap.Login 的 PC 支持覆盖Windows 与 Mac 两个平台提供两种授权形态Web 浏览器授权通过系统浏览器打开 TapTap 授权页完成登录TapTap 客户端扫码登录在游戏内弹出二维码窗口用 TapTap 客户端扫码确认PC 端默认形态。这一能力在 SDK 的 CHANGELOG.md 中有明确演进记录3.2.0 版本支持 PC 端使用 TapTap 登录3.5.2 版本新增PC Web 授权登录。仓库内置的 SDK 版本为 3.16.5见 package.json。从仓库的 SDK 目录结构看PC 接入所需的运行时组件非常完整jyx2/TapSdkFiles/TapTap/Login/ ├── PC.md # 本文对应的 PC 平台配置文档 ├── Documentation/README.md # 登录 API 使用说明 ├── README.md ├── CHANGELOG.md # 版本演进记录 ├── package.json # 包名 com.taptap.tds.login版本 3.16.5 ├── Editor/ │ └── TapLoginIOSProcessor.cs # iOS/macOS 构建后自动注入 plist 配置 ├── Plugins/ │ ├── Android/libs/TapLogin_3.16.5.aar │ ├── iOS/TapLoginSDK.framework # iOS/macOS 原生 Framework │ ├── TapTap.Login.dll │ └── zxing.unity.dll # 二维码解析库 └── QRCode/Resources/ # PC 端二维码登录窗 UI 资源其中zxing.unity.dll与QRCode/Resources下的TapTapSdkQRCodeWindow.prefab、TapTapSdkWindow.prefab等资源正是 PC 端扫码登录交互的 UI 载体。使用前提依赖 TapTap.Common使用 TapTap.Login 必须依赖 TapTap.Common 基础库。这一点在 package.json 的依赖声明中有硬性体现dependencies: { com.taptap.tds.common: https://github.com/TapTap/TapCommon-Unity.git#3.16.5 }TapTap.Common 提供客户端初始化、统一错误类型TapException、TapErrorCode等公共能力登录模块的所有接口都建立在该库之上。若游戏需要支持 PC 平台则按本文 PC.md 完成平台侧配置若还需支持 iOS/Android则分别在对应平台补充配置。Mac 平台接入1. 编译配置在 Unity 中按以下步骤准备 Mac 构建打开Build Settings选择PC, Mac Linux Standalone平台Target Platform选择MacOS勾选Create XCode Project将工程输出为 Xcode 工程后再用 Xcode 完成编译打包。选择 Xcode 工程方式的原因在于Mac 平台需要借助 Xcode 工程对应用包内的Info.plist进行定制而 SDK 的构建后处理脚本见下文自动化注入也正是面向 Xcode 工程工作的。2. 配置 URL TypesURL SchemeTapTap 客户端在 PC 端完成授权后需要通过自定义 URL Scheme 回调将授权结果送回游戏进程。因此必须为应用注册如下 Schemeopen-taptap-{clientId}其中{clientId}替换为 TapTap 开发者中心分配给游戏的Client ID与TapLogin.Init(clientID)传入的值一致。配置方式有两种方式一Xcode 工程内配置打开导出的 Xcode 工程选择Target → Info → URL Types检查是否已自动添加该 URL Scheme未添加则手动添加URL Schemesopen-taptap-{clientId}IdentifierTapWeb方式二直接修改 Info.plist在Info.plist中加入以下配置块keyCFBundleURLTypes/key array dict keyCFBundleURLName/key stringTapWeb/string keyCFBundleURLSchemes/key array stringopen-taptap-{client_id}/string /array /dict /arrayCFBundleURLName固定为TapWebCFBundleURLSchemes数组中填写open-taptap-{client_id}。3. 构建后自动注入仓库实现佐证仓库中的 TapLoginIOSProcessor.cs 展示了官方 SDK 的自动化做法使用[PostProcessBuild(103)]标记构建后处理函数在 Unity 导出 Xcode 工程后自动执行构建目标为BuildTarget.iOS时调用TapCommonCompile.HandlerPlist将TDS-Info.plist中的配置合并进生成的Info.plist构建目标为BuildTarget.StandaloneOSX时即 Mac 平台同样调用HandlerPlist并传入true参数对project.pbxproj所在路径做兼容处理UNITY_2020_1_OR_NEWER与UNITY_2019_1_OR_NEWER的工程路径拼接方式不同。该脚本会查找项目Assets/Plugins/目录下的TDS-Info.plist文件若缺失会输出错误日志TapSDK Cant find TDS-Info.plist in Project/Assets/Plugins/。因此使用此机制时需保证TDS-Info.plist存在且其中已声明open-taptap-{clientId}等相关配置。若不走自动注入则按上文手动修改导出后的Info.plist即可。Windows 平台接入Windows 平台不依赖 Xcode/Info.plist而是通过注册表自定义 URL 协议实现 TapTap 客户端的回调唤起即把open-taptap-{client_id}协议与游戏可执行程序关联起来。注册表配置脚本将{client_id}替换为实际 Client ID、{游戏名称}替换为应用名、{程序.exe 安装路径}替换为游戏 exe 的绝对路径保存为.reg文件后双击导入Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\open-taptap-{client_id}] {游戏名称} URL Protocol{程序.exe 安装路径} [HKEY_CLASSES_ROOT\open-taptap-{client_id}\Shell\Open] [HKEY_CLASSES_ROOT\open-taptap-{client_id}\Shell\Open\Command] \{程序.exe 安装路径}\ \%1\各键值说明注册表项作用HKEY_CLASSES_ROOT\open-taptap-{client_id}注册自定义 URL 协议值为协议显示名称URL Protocol声明这是一个 URL 协议键...\Shell\Open\Command定义该协议被唤起时执行的命令行%1接收完整回调 URL含授权结果参数注原文档中URL Protocol的值写作{程序.exe 安装路径}}含多余右花括号实际应为安装路径本身本文已按可运行形式呈现导入前请自行核对。校验方式打开 Windows 注册表编辑器定位到HKEY_CLASSES_ROOT\open-taptap-{clientId}检查该键是否存在目录下是否包含DefaultIconShell\Open\Command中的 exe 路径是否与上文中URL Protocol参数匹配。只有协议注册正确TapTap 客户端授权完成后才能把回调 URL 正确唤起游戏进程。URL Scheme 协议与回调流程解析无论是 Mac 的CFBundleURLTypes还是 Windows 的注册表协议本质都是在操作系统层面登记同一个自定义协议open-taptap-{clientId}其完整授权回调链路为游戏调用TapLogin.Login()在 PC 端展示二维码默认或 Web 授权页用户在 TapTap 客户端/浏览器中确认授权系统按协议名解析到游戏进程macOS 经open-taptap-协议、Windows 经注册表Shell\Open\Command唤起游戏并把回调 URL 作为参数传入SDK 截获回调 URL换取/返回AccessToken登录流程完成。jynew 游戏侧对这条链路的封装可见 InitScene.cs 中的注释与调用// 在 iOS、Android 系统下会唤起 TapTap 客户端或以 WebView 方式进行登录 // 在 Windows、macOS 系统下显示二维码默认和跳转链接需配置 var accessToken await TapLogin.Login();这段注释与 PC.md 的说明互相印证PC 端默认展示二维码若要支持跳转链接Web 浏览器授权形态需要在 TapTap 开放平台完成对应配置。代码接入在 jynew 中的实际调用在完成平台侧配置后代码侧通过TapTap.Login命名空间下的接口完成接入。完整 API 见 Documentation/README.md// 1. 初始化若配合 TapBootstrap 使用则无需手动调用 TapLogin.Init(string clientID); // 2. 唤起 TapTap 网页或客户端登录成功返回 AccessToken var accessToken await TapLogin.Login(); // 2.1 指定权限范围默认 public_profile var accessToken await TapLogin.Login(new []{ public_profile }); // 3. 获取当前 AccessToken var accessToken await TapLogin.GetAccessToken(); // 4. 获取用户 Profile昵称、头像等基本信息 var profile await TapLogin.FetchProfile(); // 5. 获取篝火测试资格 var boolean await TapLogin.GetTestQualification(); // 6. 退出登录 TapLogin.Logout();jynew 项目在 InitScene.cs 中给出了一个完整的落地示例接入流程可总结为读取 ClientId 配置通过Resources.LoadTextAsset(TAPTAP_BUILD_PARAMS)加载TAPTAP_BUILD_PARAMS.txtJSON 格式解析出ClientId字段作为TapLogin.Init的参数InitScene.cs#L46-L64。配置缺失或缺少ClientId时会输出对应错误日志检查登录状态CheckTapLoginStatus()调用TapLogin.GetAccessToken()若抛出异常则判定未登录显示登录按钮InitScene.cs#L70-L84触发登录点击按钮后调用TapLogin.Login()登录成功立即进行后续防沉迷流程失败则捕获异常并恢复按钮InitScene.cs#L90-L114异常分类处理通过TapException来自 TapTap.Common统一处理错误其中TapErrorCode.ERROR_CODE_BIND_CANCEL表示用户取消登录InitScene.cs#L104-L111。需要注意的是jynew 中的 TapTap 相关代码整体包裹在#if DEVELOP_TAPTAP条件编译块中只有定义了DEVELOP_TAPTAP宏才会编译并执行 TapTap 登录流程否则直接加载0_GameStart场景进入游戏。因此在实际工程中启用 TapTap 登录需在 Player Settings 中配置该脚本宏。验证与排错建议Mac确认导出后的 Xcode 工程中Info.plist存在CFBundleURLTypes且 Scheme 为open-taptap-{clientId}与开发者中心 Client ID 完全一致注意大小写与连字符Windows打开注册表编辑器核对HKEY_CLASSES_ROOT\open-taptap-{clientId}及其Shell\Open\Command可在命令行手动执行start open-taptap-{clientId}:验证协议能否唤起游戏日志排查登录失败时TapException的code与message会打印到 Unity 控制台InitScene.cs#L106结合CHANGELOG.md中关于修复登录模块对系统 URL 回调的使用方式3.11.1等历史修复记录可快速定位是协议注册问题还是 SDK 版本问题版本一致性com.taptap.tds.login与com.taptap.tds.common建议保持相同版本仓库中均为 3.16.5避免因版本不匹配导致的编译或运行时异常。总结TapTap Login 的 PC 端接入本质上只有两件事平台协议注册Mac 的Info.plist/ Windows 的注册表与代码 API 调用TapLogin.Init→Login→ 回调处理。本文以 jynew 仓库中的 PC.md 为主线结合 TapLoginIOSProcessor.cs 的自动注入机制与 InitScene.cs 的实际接入代码完整覆盖了从构建配置到登录回调的整条链路可作为将 TapTap 账号体系接入 Unity PC 游戏Windows/macOS的参考指南。【免费下载链接】jynewJinYongLegend-like RPG Game Framework with full Modding support and 10 hours playable samples of game.项目地址: https://gitcode.com/GitHub_Trending/jy/jynew创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表