From d2794a3ed282339489bcfa8bfdeb3d7bf3541b8c Mon Sep 17 00:00:00 2001 From: ci-gitlab Date: Wed, 25 May 2022 19:46:04 +0800 Subject: [PATCH] feat:update upm --- CHANGELOG.md | 233 +++++++++++++++++++++ CHANGELOG.md.meta | 3 + Documentation.meta | 8 + Documentation/README.md | 257 ++++++++++++++++++++++++ Documentation/README.md.meta | 7 + Plugins.meta | 8 + Plugins/TapTap.Bootstrap.deps.json | 233 +++++++++++++++++++++ Plugins/TapTap.Bootstrap.deps.json.meta | 7 + Plugins/TapTap.Bootstrap.dll | Bin 0 -> 29184 bytes Plugins/TapTap.Bootstrap.dll.meta | 33 +++ Plugins/TapTap.Bootstrap.pdb | Bin 0 -> 14304 bytes Plugins/TapTap.Bootstrap.pdb.meta | 7 + README.md | 254 +++++++++++++++++++++++ README.md.meta | 3 + VERSIONNOTE.md | 6 + VERSIONNOTE.md.meta | 7 + package.json | 14 ++ package.json.meta | 7 + 18 files changed, 1087 insertions(+) create mode 100644 CHANGELOG.md create mode 100644 CHANGELOG.md.meta create mode 100644 Documentation.meta create mode 100644 Documentation/README.md create mode 100644 Documentation/README.md.meta create mode 100644 Plugins.meta create mode 100644 Plugins/TapTap.Bootstrap.deps.json create mode 100644 Plugins/TapTap.Bootstrap.deps.json.meta create mode 100644 Plugins/TapTap.Bootstrap.dll create mode 100644 Plugins/TapTap.Bootstrap.dll.meta create mode 100644 Plugins/TapTap.Bootstrap.pdb create mode 100644 Plugins/TapTap.Bootstrap.pdb.meta create mode 100644 README.md create mode 100644 README.md.meta create mode 100644 VERSIONNOTE.md create mode 100644 VERSIONNOTE.md.meta create mode 100644 package.json create mode 100644 package.json.meta diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..d9c08a9 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,233 @@ +# ChangeLog +## 3.9.0 + +### Dependencies + +- TapTap.Login v3.9.0 +- TapTap.Common v3.9.0 +- LeanCloud.Realtime v0.10.11 +- LeanCloud.Storage v0.10.11 + +## 3.8.0 + +### Dependencies + +- TapTap.Login v3.8.0 +- TapTap.Common v3.8.0 +- LeanCloud.Realtime v0.10.10 +- LeanCloud.Storage v0.10.10 + +## 3.7.1 + +### Dependencies + +- TapTap.Login v3.7.1 +- TapTap.Common v3.7.1 +- LeanCloud.Realtime v0.10.0 +- LeanCloud.Storage v0.10.0 + +## 3.7.0 + +### Dependencies + +- TapTap.Login v3.7.0 +- TapTap.Common v3.7.0 +- LeanCloud.Realtime v0.10.0 +- LeanCloud.Storage v0.10.0 + + +## 3.6.3 + +### Dependencies + +- TapTap.Login v3.6.3 +- TapTap.Common v3.6.3 +- LeanCloud.Realtime v0.10.0 +- LeanCloud.Storage v0.10.0 + +## 3.6.1 + +### Dependencies + +- TapTap.Login v3.6.1 +- TapTap.Common v3.6.1 +- LeanCloud.Realtime v0.10.0 +- LeanCloud.Storage v0.10.0 + +## 3.6.0 + +### Dependencies + +- TapTap.Login v3.6.0 +- TapTap.Common v3.6.0 +- LeanCloud.Realtime v0.10.0 +- LeanCloud.Storage v0.10.0 + +## 3.5.0 + +### Dependencies + +- TapTap.Login v3.5.0 +- TapTap.Common v3.5.0 +- LeanCloud.Realtime v0.10.0 +- LeanCloud.Storage v0.10.0 + +## 3.4.0 + +### Dependencies + +- TapTap.Login v3.4.0 +- TapTap.Common v3.4.0 +- LeanCloud.Realtime v0.10.0 +- LeanCloud.Storage v0.10.0 + +## 3.3.0 + +### Dependencies + +- TapTap.Login v3.3.0 +- TapTap.Common v3.3.0 +- LeanCloud.Realtime v0.9.11 +- LeanCloud.Storage v0.9.11 + +## 3.2.0 + +### New Feature + +- 支持云存档 + +### Dependencies + +- TapTap.Login v3.2.0 +- TapTap.Common v3.2.0 +- LeanCloud.Storage v0.9.5 +- LeanCloud.Realtime v0.9.5 + +## 3.1.0 + +### New Feature + +- `TDSUser` 新增好友系统操作 + +### Dependencies + +- TapTap.Login v3.1.0 +- TapTap.Common v3.1.0 +- LeanCloud.Storage v0.9.2 +- LeanCloud.Realtime v0.9.2 + +## 3.0.0 + +TapSDK 3.0 开始,我们在单纯的 TapTap 登录之外,还提供了一个内建账户系统供游戏使用:开发者可以直接用 TapTap OAuth +授权的结果生成一个游戏内的账号(TDSUser),然后用该账号保存更多玩家数据。同时,我们也支持将更多第三方认证登录的结果绑定到这一账号上来(以及后续的解绑操作)。 + +### New Feature + +- 新增 `TDSUser` 用于内建账户系统操作 + +### BreakingChange + +- `TapBootstrap` 接口仅保留 `TapBootstrap.Init(tapConfig)` 接口 + +### Dependencies + +- LeanCloud.Storage v0.8.2 +- TapTap.Login v3.0.0 +- TapTap.Common v3.0.0 + +## 2.1.7 + +### Dependencies + +- TapTap.Common v2.1.7 + +## 2.1.6 + +### Dependencies + +- TapTap.Common v2.1.6 + +## 2.1.5 + +### Dependencies + +- TapTap.Common v2.1.5 + +## 2.1.4 + +### Optimization and fixed bugs + +- 优化多语言相关 + +### Dependencies + +- TapTap.Common v2.1.4 + +## 2.1.3 + +### Feature + +* 新增繁中、日文、韩文、泰文和印尼语多语言配置 + +## 2.1.2 + +### BreakingChange + +* 废弃 OpenUserCenter 接口 + +### Dependencies + +* TapTap.Common v2.1.2 + +## 2.1.1 + +### Feature + +* 新增篝火测试资格校验 + ``` + TapBootstrap.GetTestQualification((bool, error)=>{ }): + ``` +* 通过 TapConfig 进行初始化配置 + * 新增 TapDBConfig 用于 TapDB 初始化配置 + * 新增 ClientSecret 用于 TapSDK 初始化 + ```c# + //建议使用以下 TapConfig 构造方法进行初始化 + var config = new TapConfig.Builder() + .ClientID("client_id") + .ClientSecret("client_secret") + .RegionType(RegionType.CN) + .TapDBConfig(true, "gameChannel", "gameVersion", true) + .ConfigBuilder(); + TapBootstrap.Init(config); + ``` + +### Breaking changes + +* LoginType 删除 Apple、Guest 登陆方式 +* TDS-Info.plist 删除 Apple_SignIn_Enable 配置 +* 废弃 Bind 接口 +* TapConfig 构造方法参数修改 + +### Dependencies + +* TapTap.Common v2.1.1 + +## 2.1.0 + +### Feature + +* 支持性改动用于 TapTap.Friends + +### Dependencies + +* TapTap.Common v2.1.0 + +## 2.0.0 + +### Feature + +* TapTap Bootstrap + +### Dependencies + +* TapTap.Common v2.0.0 \ No newline at end of file diff --git a/CHANGELOG.md.meta b/CHANGELOG.md.meta new file mode 100644 index 0000000..419383c --- /dev/null +++ b/CHANGELOG.md.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7388165be5344a9682382768c5fce466 +timeCreated: 1616755935 \ No newline at end of file diff --git a/Documentation.meta b/Documentation.meta new file mode 100644 index 0000000..1130a03 --- /dev/null +++ b/Documentation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bd03b50332353477c899419b5b455fb0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Documentation/README.md b/Documentation/README.md new file mode 100644 index 0000000..2564c0c --- /dev/null +++ b/Documentation/README.md @@ -0,0 +1,257 @@ +# 使用 TapTap.Bootstrap + +## 使用前提 + +使用 TapTap.Bootstrap 前提是必须依赖以下库: +* [TapTap.Common](https://github.com/TapTap/TapCommon-Unity.git) +* [TapTap.Login](https://github.com/TapTap/TapLogin-Unity.git) +* [LeanCloud.Storage](https://github.com/leancloud/csharp-sdk) +* [LeanCloud.RealTime](https://github.com/leancloud/csharp-sdk) + +## 命名空间 + +```c# +using TapTap.Bootstrap; +``` + +## 接口描述 + +## 1.初始化 + +TapBootstrap 会根据 TapConfig 中的 TapDBConfig 配置来进行 TapDB 的自动初始化。 + +### 开启 TapDB +```c# +var config = new TapConfig.Builder() + .ClientID("client_id") + .ClientToken("client_token") + .ServerURL("https://ikggdre2.lc-cn-n1-shared.com") + .RegionType(RegionType.CN) + .TapDBConfig(true,"channel","gameVersion",true) + .Builder(); +``` +### 关闭 TapDB +```c# +var config = new TapConfig.Builder() + .ClientID("client_id") + .ClientToken("client_token") + .ServerURL("https://ikggdre2.lc-cn-n1-shared.com") + .RegionType(RegionType.CN) +//# .TapDBConfig(false,null,null,false) + .EnableTapDB(false) + .Builder(); +``` +### 初始化 +```c# +TapBootstrap.Init(config); +``` + +## 2.账户系统 + +> 登陆成功之后,都会得到一个 `TDSUser` 实例 + +### 使用 TapTap OAuth 授权结果直接登陆/注册账户系统 + +```c# +var tdsUser = await TDSUser.LoginWithTapTap(); +``` + +### 游客登陆 + +```c# +var tdsUser = await TDSUser.LoginAnonymously(); +``` + +### 使用第三方平台授权登录/注册账户 + +```c# +var tdsUser = await TDSUser.LoginWithAuthData(Dictionary authData, string platform, +LCUserAuthDataLoginOption option = null); +``` + +### 绑定第三方平台授权 + +```c# +await TDSUser.AssociateAuthData(Dictionary authData, string platform); +``` + +### 退出登陆 + +```c# +TDSUser.Logout(); +``` + +## 3.好友系统 + +### 申请成为好友 + +```c# +TDSUser tom, jerry; +await tom.ApplyFriendship(jerry); +``` +申请成功的回调中,我们会得到一个 LCFriendshipRequest 的实例,这个实例中包含了两个用户: +- sourceUser,指请求的发起方,上面的例子中就是 `tom`。 +- friend,指请求的目的方,上面的例子中就是 `jerry`。 + +tom 也可以在申请好友的时候,添加更多的属性,例如 tom 希望加 jerry 为好友的时候,也设定一个名为 cat 的圈子,可以这样操作: + +```cs +Dictionary attrs = new Dictionary { + { "group", "cat" } +}; +await tom.ApplyFriendship(jerry, attrs); +``` + +### 获取好友申请列表 +好友申请有三种状态: + +- `pending`,对方没有回应,还处于等待中。 +- `accepted`,对方已经接受,现在双方成为好友。 +- `declined`,对方已经拒绝。 + +好友请求创建之后默认是 `pending` 状态。 + +jerry 这里可以通过 `friendshipRequestQuery` 来查找不同状态的请求。例如 jerry 想看看新的好友请求,可以这样操作: + +```cs +LCQuery query = jerry.GetFriendshipRequestQuery(LCFriendshipRequest.STATUS_PENDING, false, true); +ReadOnlyCollection reqs = await query.Find(); +foreach (LCFriendshipRequest req in reqs) { + Console.WriteLine(req); +} +``` + +### 处理好友申请 + +jerry 对于新的好友请求,可以同意或者拒绝,也可以什么都不做,无视这些请求,甚至直接删除。这些操作我们都是支持的,请看下面的示例: + +```cs +LCFriendshipRequest tomRequest, tuffyRequest, otherRequest; +await jerry.AcceptFriendshipRequest(tomRequest); +await jerry.DeclineFriendshipRequest(tuffyRequest); +await jerry.DeleteFriendshipRequest(otherRequest); +``` + +注意: +* 在 jerry 拒绝了 tom 的好友请求之后,如果 tom 再次请求成为 jerry 的好友,tom 在执行 applyFriendshipInBackground 时会直接得到错误的应答,表明 jerry 不想和 ta 成为好友。 +* jerry 同意了 tuffy 的好友请求之后,它们就成为了好友,之后两个人中任何一人再次调用 applyFriendshipInBackground 申请横位好友时,也会直接得到错误的应答,表明它们已经是好友无需再次申请。 +* jerry 删除陌生人的好友请求后,对方还可以再次发起请求。 + +### 响应好友变化通知 + +TDS 好友模块支持客户端监听好友状态变化,在游戏中实时给玩家提示。好友状态变化的接口包括 + +```cs +public class FriendshipNotification { + public Action OnNewRequestComing { get; set; } + public Action OnRequestAccepted { get; set; } + public Action OnRequestDeclined { get; set; } +} +``` + +其中: +- onNewRequestComing 表示有其他人申请成为当前用户的好友,通过调用 `LCFriendshipRequest#getSourceUser()` 方法可以获得发起方用户信息。 +- onRequestAccepted 表示当前用户的好友申请被对方通过,通过调用 `LCFriendshipRequest#getFriend()` 方法可以获得对方用户信息。 +- onRequestDeclined 表示当前用户的好友申请被对方拒绝,通过调用 `LCFriendshipRequest#getFriend()` 方法可以获得对方用户信息。 + +开发者可以通过 `TDSUser#registerFriendshipNotification` 来注册通知接收器,通过调用 `TDSUser#unregisterFriendshipNotification` 来取消通知接收器。 + +### 获取好友列表 + +调用 `TDSUser#friendshipQuery()` 可以得到查询好友的 `LCQuery` 实例,之后调用 `LCQuery#findInBackground()` 方法就可以得到好友列表。示例如下: + +```cs +LCQuery query = jerry.GetFirendshipQuery(); +``` + +LCFriendship 里面会包含两个用户: + +- `LCFriendship#getLCUser(LCFriendship.ATTR_USER)` 得到的是 jerry 自己; +- `LCFriendship#getLCUser(LCFriendship.ATTR_FOLLOWEE)` 得到的就是另一方的用户信息。 + +### 删除好友 + +成为好友关系的两个用户,之后也可以单方面删除好友。例如 jerry 不想再和 tom 成为好友,那只需要在自己的好友列表中删除包含 tom 的那条 LCFriendship 记录即可: + +```cs +await friendship.Delete(); +``` + +### 查询好友关系 + +我们使用 LCQuery 可以单独查询两个用户是否为好友关系。 + +```cs +LCQuery query = jerry.GetFirendshipQuery(); +query.whereEqualTo("followee", tom); +int count = await query.Count(); +if (count > 0) { + // tom is a friend of jerry. +} else { + // tom isn't a friend of jerry. +} +``` + +这一查询是通过网络发送到服务端执行的,一般情况下,我们推荐开发者在游戏启动时拉取一次当前登录用户的好友列表,然后缓存在本地,以后需要检查另外玩家是否为当前用户的好友时,直接从缓存中查询即可。如果担心好友数据变化,缓存没有得到及时更新,可以调用前面「响应好友变化通知」的方法,对好友数据更新进行监听,这样在绝大部分时候数据同步都是可以保证的。 + +## 4.云存档 + +### 构建云存档元数据 + +```c# +var gameSave = new TapGameSave +{ + Name = "GameSave_Name",// 存档名称 + Summary = "GameSave_Description", // 该字段会作为展示给用户的实际存档名 + ModifiedAt = DateTime.Now.ToLocalTime(), // 原文件修改时间 + PlayedTime = 1000L, // 游戏时长,单位 ms (非必填) + ProgressValue = 100, // 游戏进度 ,单位 int (非必填) + CoverFilePath = pic, // 游戏封面,可以传入一个本地文件路径,SDK 限制为 png/jpeg 格式 + GameFilePath = dll // 存档源文件,可以传入一个本地文件路径 +}; + +``` +### 保存存档 + +保存存档时,会去检查当前`TDSUser`是否已经登录以及元数据。 + +同时 SDK 在上传时会去限制存档本身以及相关联的两个文件( Cover 以及 GameFile )的权限为当前用户本身。 +```c# +await gameSave.Save(); +``` + +### 查询当前用户的所有存档 + +```c# +var collection = await TapGameSave.GetCurrentUserGameSaves(); + +foreach(var gameSave in collection){ + // 存档概览 + var name = gameSave.Summary; + // 原文件修改时间 + var modifiedAt = gameSave.ModifiedAt; + // 游戏时长 + var playedTime = gameSave.PlayedTime; + // 游戏进度 + var progressValue = gameSave.ProgressValue; + // 游戏封面 + var coverFile = gameSave.CoverFile; + // 存档源文件 + var gameFile = gameSave.GameFile; + // 源文件下载地址 + var gameFileUrl = gameFile.Url; +} +``` + +### 查询当前用户存档 + +我们使用 `LCQuery` 来查询当前用户的云存档。 + +SDK 查询封装了一个限定方法用于查询当前`TDSUser`的云存档。 +```c# +TDSUser user = await TDSUser.GetCurrent(); +LCQuery gameSaveQuery = TapGameSave.GetQueryWithUser(user); +// 查询 Name 为 TDSUser_GameSave_Name 的云存档 +gameSaveQuery.WhereEqualTo("name","TDSUser_GameSave_Name"); +var collection = await gameSaveQuery.Find(); +``` \ No newline at end of file diff --git a/Documentation/README.md.meta b/Documentation/README.md.meta new file mode 100644 index 0000000..125a6de --- /dev/null +++ b/Documentation/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 17ed6166c017a4fcda77ff618f2703db +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Plugins.meta b/Plugins.meta new file mode 100644 index 0000000..bbcf194 --- /dev/null +++ b/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dc389bcfbbddc4d35a997cbc06799975 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Plugins/TapTap.Bootstrap.deps.json b/Plugins/TapTap.Bootstrap.deps.json new file mode 100644 index 0000000..1229ab6 --- /dev/null +++ b/Plugins/TapTap.Bootstrap.deps.json @@ -0,0 +1,233 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.0/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.0": {}, + ".NETStandard,Version=v2.0/": { + "TapTap.Bootstrap/1.0.0": { + "dependencies": { + "NETStandard.Library": "2.0.3", + "TapTap.Common": "1.0.0", + "TapTap.Login": "1.0.0", + "Common": "1.0.0.0", + "LiveQuery": "1.0.0.0", + "Storage": "1.0.0.0", + "Storage.Unity": "1.0.0.0", + "UnityEngine": "0.0.0.0" + }, + "runtime": { + "TapTap.Bootstrap.dll": {} + } + }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "NETStandard.Library/2.0.3": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + }, + "TapTap.Common/1.0.0": { + "runtime": { + "TapTap.Common.dll": {} + } + }, + "TapTap.Login/1.0.0": { + "dependencies": { + "TapTap.Common": "1.0.0" + }, + "runtime": { + "TapTap.Login.dll": {} + } + }, + "Common/1.0.0.0": { + "runtime": { + "Common.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "LiveQuery/1.0.0.0": { + "runtime": { + "LiveQuery.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "Storage/1.0.0.0": { + "runtime": { + "Storage.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "Storage.Unity/1.0.0.0": { + "runtime": { + "Storage.Unity.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "UnityEngine/0.0.0.0": { + "runtime": { + "UnityEngine.dll": { + "assemblyVersion": "0.0.0.0", + "fileVersion": "0.0.0.0" + } + } + }, + "LC.Newtonsoft.Json/11.0.0.0": { + "runtime": { + "LC.Newtonsoft.Json.dll": { + "assemblyVersion": "11.0.0.0", + "fileVersion": "11.0.1.0" + } + } + }, + "Realtime/1.0.0.0": { + "runtime": { + "Realtime.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "LC.Google.Protobuf/3.14.0.0": { + "runtime": { + "LC.Google.Protobuf.dll": { + "assemblyVersion": "3.14.0.0", + "fileVersion": "3.14.0.0" + } + } + }, + "System.Memory/4.0.1.1": { + "runtime": { + "System.Memory.dll": { + "assemblyVersion": "4.0.1.1", + "fileVersion": "4.6.27617.2" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/4.0.4.1": { + "runtime": { + "System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "4.0.4.1", + "fileVersion": "4.0.0.0" + } + } + }, + "System.Buffers/4.0.2.0": { + "runtime": { + "System.Buffers.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.25519.3" + } + } + }, + "System.Numerics.Vectors/4.1.3.0": { + "runtime": { + "System.Numerics.Vectors.dll": { + "assemblyVersion": "4.1.3.0", + "fileVersion": "4.6.25519.3" + } + } + } + } + }, + "libraries": { + "TapTap.Bootstrap/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "path": "netstandard.library/2.0.3", + "hashPath": "netstandard.library.2.0.3.nupkg.sha512" + }, + "TapTap.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "TapTap.Login/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Common/1.0.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "LiveQuery/1.0.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "Storage/1.0.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "Storage.Unity/1.0.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "UnityEngine/0.0.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "LC.Newtonsoft.Json/11.0.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "Realtime/1.0.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "LC.Google.Protobuf/3.14.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "System.Memory/4.0.1.1": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.CompilerServices.Unsafe/4.0.4.1": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "System.Buffers/4.0.2.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "System.Numerics.Vectors/4.1.3.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/Plugins/TapTap.Bootstrap.deps.json.meta b/Plugins/TapTap.Bootstrap.deps.json.meta new file mode 100644 index 0000000..92c4277 --- /dev/null +++ b/Plugins/TapTap.Bootstrap.deps.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 31cab863b627d4a509bd0f259bcf6a31 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Plugins/TapTap.Bootstrap.dll b/Plugins/TapTap.Bootstrap.dll new file mode 100644 index 0000000000000000000000000000000000000000..3a27bd9784818e86969e6a465e3d0b36733a0cc8 GIT binary patch literal 29184 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 literal 0 HcmV?d00001 diff --git a/Plugins/TapTap.Bootstrap.dll.meta b/Plugins/TapTap.Bootstrap.dll.meta new file mode 100644 index 0000000..6dcd382 --- /dev/null +++ b/Plugins/TapTap.Bootstrap.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 03acb073a9f88474581401ef1020c1c4 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Plugins/TapTap.Bootstrap.pdb b/Plugins/TapTap.Bootstrap.pdb new file mode 100644 index 0000000000000000000000000000000000000000..0d7d1fe31284df8ba8fb9cda8561ec3e70d468db GIT binary patch literal 14304 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 登陆成功之后,都会得到一个 `TDSUser` 实例 + +### 使用 TapTap OAuth 授权结果直接登陆/注册账户系统 + +```c# +var tdsUser = await TDSUser.LoginWithTapTap(); +``` + +### 游客登陆 + +```c# +var tdsUser = await TDSUser.LoginAnonymously(); +``` + +### 使用第三方平台授权登录/注册账户 + +```c# +var tdsUser = await TDSUser.LoginWithAuthData(Dictionary authData, string platform, +LCUserAuthDataLoginOption option = null); +``` + +### 绑定第三方平台授权 + +```c# +await TDSUser.AssociateAuthData(Dictionary authData, string platform); +``` + +### 退出登陆 + +```c# +TDSUser.Logout(); +``` + +## 3.好友系统 + +### 申请成为好友 + +```c# +TDSUser tom, jerry; +await tom.ApplyFriendship(jerry); +``` +申请成功的回调中,我们会得到一个 LCFriendshipRequest 的实例,这个实例中包含了两个用户: +- sourceUser,指请求的发起方,上面的例子中就是 `tom`。 +- friend,指请求的目的方,上面的例子中就是 `jerry`。 + +tom 也可以在申请好友的时候,添加更多的属性,例如 tom 希望加 jerry 为好友的时候,也设定一个名为 cat 的圈子,可以这样操作: + +```cs +Dictionary attrs = new Dictionary { + { "group", "cat" } +}; +await tom.ApplyFriendship(jerry, attrs); +``` + +### 获取好友申请列表 +好友申请有三种状态: + +- `pending`,对方没有回应,还处于等待中。 +- `accepted`,对方已经接受,现在双方成为好友。 +- `declined`,对方已经拒绝。 + +好友请求创建之后默认是 `pending` 状态。 + +jerry 这里可以通过 `friendshipRequestQuery` 来查找不同状态的请求。例如 jerry 想看看新的好友请求,可以这样操作: + +```cs +LCQuery query = jerry.GetFriendshipRequestQuery(LCFriendshipRequest.STATUS_PENDING, false, true); +ReadOnlyCollection reqs = await query.Find(); +foreach (LCFriendshipRequest req in reqs) { + Console.WriteLine(req); +} +``` + +### 处理好友申请 + +jerry 对于新的好友请求,可以同意或者拒绝,也可以什么都不做,无视这些请求,甚至直接删除。这些操作我们都是支持的,请看下面的示例: + +```cs +LCFriendshipRequest tomRequest, tuffyRequest, otherRequest; +await jerry.AcceptFriendshipRequest(tomRequest); +await jerry.DeclineFriendshipRequest(tuffyRequest); +await jerry.DeleteFriendshipRequest(otherRequest); +``` + +注意: +* 在 jerry 拒绝了 tom 的好友请求之后,如果 tom 再次请求成为 jerry 的好友,tom 在执行 applyFriendshipInBackground 时会直接得到错误的应答,表明 jerry 不想和 ta 成为好友。 +* jerry 同意了 tuffy 的好友请求之后,它们就成为了好友,之后两个人中任何一人再次调用 applyFriendshipInBackground 申请横位好友时,也会直接得到错误的应答,表明它们已经是好友无需再次申请。 +* jerry 删除陌生人的好友请求后,对方还可以再次发起请求。 + +### 响应好友变化通知 + +TDS 好友模块支持客户端监听好友状态变化,在游戏中实时给玩家提示。好友状态变化的接口包括 + +```cs +public class FriendshipNotification { + public Action OnNewRequestComing { get; set; } + public Action OnRequestAccepted { get; set; } + public Action OnRequestDeclined { get; set; } +} +``` + +其中: +- onNewRequestComing 表示有其他人申请成为当前用户的好友,通过调用 `LCFriendshipRequest#getSourceUser()` 方法可以获得发起方用户信息。 +- onRequestAccepted 表示当前用户的好友申请被对方通过,通过调用 `LCFriendshipRequest#getFriend()` 方法可以获得对方用户信息。 +- onRequestDeclined 表示当前用户的好友申请被对方拒绝,通过调用 `LCFriendshipRequest#getFriend()` 方法可以获得对方用户信息。 + +开发者可以通过 `TDSUser#registerFriendshipNotification` 来注册通知接收器,通过调用 `TDSUser#unregisterFriendshipNotification` 来取消通知接收器。 + +### 获取好友列表 + +调用 `TDSUser#friendshipQuery()` 可以得到查询好友的 `LCQuery` 实例,之后调用 `LCQuery#findInBackground()` 方法就可以得到好友列表。示例如下: + +```cs +LCQuery query = jerry.GetFirendshipQuery(); +``` + +LCFriendship 里面会包含两个用户: + +- `LCFriendship#getLCUser(LCFriendship.ATTR_USER)` 得到的是 jerry 自己; +- `LCFriendship#getLCUser(LCFriendship.ATTR_FOLLOWEE)` 得到的就是另一方的用户信息。 + +### 删除好友 + +成为好友关系的两个用户,之后也可以单方面删除好友。例如 jerry 不想再和 tom 成为好友,那只需要在自己的好友列表中删除包含 tom 的那条 LCFriendship 记录即可: + +```cs +await friendship.Delete(); +``` + +### 查询好友关系 + +我们使用 LCQuery 可以单独查询两个用户是否为好友关系。 + +```cs +LCQuery query = jerry.GetFirendshipQuery(); +query.whereEqualTo("followee", tom); +int count = await query.Count(); +if (count > 0) { + // tom is a friend of jerry. +} else { + // tom isn't a friend of jerry. +} +``` + +这一查询是通过网络发送到服务端执行的,一般情况下,我们推荐开发者在游戏启动时拉取一次当前登录用户的好友列表,然后缓存在本地,以后需要检查另外玩家是否为当前用户的好友时,直接从缓存中查询即可。如果担心好友数据变化,缓存没有得到及时更新,可以调用前面「响应好友变化通知」的方法,对好友数据更新进行监听,这样在绝大部分时候数据同步都是可以保证的。 + +## 4.云存档 + +### 构建云存档元数据 + +```c# +var gameSave = new TapGameSave +{ + Name = "GameSave_Name",// 存档名称 + Summary = "GameSave_Description", // 该字段会作为展示给用户的实际存档名 + ModifiedAt = DateTime.Now.ToLocalTime(), // 原文件修改时间 + PlayedTime = 1000L, // 游戏时长,单位 ms (非必填) + ProgressValue = 100, // 游戏进度 ,单位 int (非必填) + CoverFilePath = pic, // 游戏封面,可以传入一个本地文件路径,SDK 限制为 png/jpeg 格式 + GameFilePath = dll // 存档源文件,可以传入一个本地文件路径 +}; + +``` +### 保存存档 + +保存存档时,会去检查当前`TDSUser`是否已经登录以及元数据。 + +同时 SDK 在上传时会去限制存档本身以及相关联的两个文件( Cover 以及 GameFile )的权限为当前用户本身。 +```c# +await gameSave.Save(); +``` + +### 查询当前用户的所有存档 + +```c# +var collection = await TapGameSave.GetCurrentUserGameSaves(); + +foreach(var gameSave in collection){ + // 存档概览 + var name = gameSave.Summary; + // 原文件修改时间 + var modifiedAt = gameSave.ModifiedAt; + // 游戏时长 + var playedTime = gameSave.PlayedTime; + // 游戏进度 + var progressValue = gameSave.ProgressValue; + // 游戏封面 + var coverFile = gameSave.CoverFile; + // 存档源文件 + var gameFile = gameSave.GameFile; + // 源文件下载地址 + var gameFileUrl = gameFile.Url; +} +``` + +### 查询云存档 +云存档只能查询当前用户的所有存档,需要查询该用户的特定存档时,可以增加相应过滤,可参考 [查询条件](https://developer.taptap.com/docs/sdk/storage/guide/objc/#%E6%9F%A5%E8%AF%A2%E6%9D%A1%E4%BB%B6) +```c# +TDSUser user = await TDSUser.GetCurrent(); +LCQuery gameSaveQuery = TapGameSave.GetQueryWithUser(user); +// 查询 Name 为 TDSUser_GameSave_Name 的云存档 +gameSaveQuery.WhereEqualTo("name","TDSUser_GameSave_Name"); +var collection = await gameSaveQuery.Find(); +``` diff --git a/README.md.meta b/README.md.meta new file mode 100644 index 0000000..74191cc --- /dev/null +++ b/README.md.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c5330aab2c6a41699a1601f1af6b27d9 +timeCreated: 1616755935 \ No newline at end of file diff --git a/VERSIONNOTE.md b/VERSIONNOTE.md new file mode 100644 index 0000000..f0903d4 --- /dev/null +++ b/VERSIONNOTE.md @@ -0,0 +1,6 @@ +### Dependencies + +- TapTap.Login v3.9.0 +- TapTap.Common v3.9.0 +- LeanCloud.Realtime v0.10.11 +- LeanCloud.Storage v0.10.11 \ No newline at end of file diff --git a/VERSIONNOTE.md.meta b/VERSIONNOTE.md.meta new file mode 100644 index 0000000..4bb7039 --- /dev/null +++ b/VERSIONNOTE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d5391b17003874fb2afc3e309a3f63ef +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package.json b/package.json new file mode 100644 index 0000000..d1ad86b --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "com.taptap.tds.bootstrap", + "displayName": "TapTap Bootstrap", + "description": "TapTap Develop Service", + "version": "3.9.0", + "unity": "2018.3", + "license": "MIT", + "dependencies": { + "com.taptap.tds.common": "https://github.com/TapTap/TapCommon-Unity.git#3.9.0", + "com.taptap.tds.login": "https://github.com/TapTap/TapLogin-Unity.git#3.9.0", + "com.leancloud.realtime": "https://github.com/leancloud/csharp-sdk-upm.git#realtime-0.10.11", + "com.leancloud.storage": "https://github.com/leancloud/csharp-sdk-upm.git#storage-0.10.11" + } +} diff --git a/package.json.meta b/package.json.meta new file mode 100644 index 0000000..a42bf59 --- /dev/null +++ b/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e618b9375caf846708cffea428908521 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: