Skip to content

Commit 664c07c

Browse files
author
ci-gitlab
committed
feat:update upm
0 parents  commit 664c07c

File tree

276 files changed

+8225
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

276 files changed

+8225
-0
lines changed

CHANGELOG.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# ChangeLog
2+
3+
## 3.7.1
4+
5+
## 3.7.0
6+
7+
## 3.6.3
8+
9+
### Optimization and fixed bugs
10+
- Android 修复特定机型上繁体中文的识别
11+
- Android 修复初始化时未配置 TapDBConfig 会初始化失败的问题
12+
13+
## 3.6.1
14+
15+
## 3.6.0
16+
17+
## 3.5.2
18+
19+
### New Feature
20+
- 新增多语言配置
21+
22+
## 3.5.0
23+
24+
### Optimization and fixed bugs
25+
- 支持性更新
26+
27+
## 3.4.0
28+
29+
## 3.3.0
30+
31+
- Native Update
32+
33+
## 3.2.0
34+
35+
- Native Update
36+
37+
## 3.1.0
38+
39+
- Native Update
40+
41+
## 3.0.0
42+
43+
### Optimization
44+
45+
- Bridge 新增 Task 桥接
46+
47+
## 2.1.7
48+
49+
### None
50+
51+
## 2.1.6
52+
53+
### BreakingChanges
54+
55+
- 修改 **TapCommon.OpenReviewInTapGlobal()** 方法命名
56+
57+
## 2.1.5
58+
59+
### Optimization and fixed bugs
60+
61+
- 内部优化
62+
63+
## 2.1.4
64+
65+
### Optimization and fixed bugs
66+
67+
- 优化多语言相关
68+
- 修复 JSON 解析错误
69+
70+
## 2.1.3
71+
72+
### New Feature
73+
74+
* iOS 新增 TapTap 以及 Tap.IO 客户端安装判断
75+
76+
## 2.1.2
77+
78+
### Optimization and fixed bugs
79+
80+
* 修复 iOS ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 设置问题可能导致的 AppStore 审核无法通过
81+
82+
## 2.1.1
83+
84+
### Feature
85+
86+
* Android 新增 TapTap App 相关支持功能
87+
88+
## 2.1.0
89+
90+
* 新增长链接支持 TapTap.Friends
91+
* 海内外域名切换
92+
93+
## 2.0.0
94+
95+
### Feature
96+
97+
* TapTap Common

CHANGELOG.md.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Documentation.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Documentation/Bridge.md

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
# TapCommon 用于支持 TapSDK 其他模块中 Android、iOS 与 Unity 的通信
2+
3+
> 目前 TapSDK 业务中,Unity 业务层实现的功能不多,主要作为桥接来调用 Android、iOS SDK 中的方法。
4+
5+
## 一、实现 Unity 调用 Android、iOS 方法
6+
7+
> 为了方便 Unity 一套代码可以调用双端方法,所以定义原生接口时,需要考虑 Android、iOS 语言之间的差异。
8+
9+
### Android 接口定义
10+
11+
- 使用 `@BridgeService``@BridgeMethod``@BridgeParam` 注解修饰 ```方法``参数`
12+
- `Activity``BridgeCallback` 这两个类型参数不需要 `@BridgeParam` 注解。
13+
- `@BridgeParam` 仅支持基本数据类型(包含 `String`)。
14+
15+
```java
16+
@BridgeService("TestService")
17+
public class TestService implementation IBridgeService {
18+
19+
@BridgeMethod("testMethodWithCallback")
20+
void testMethodWithCallback(BridgeCallback callback);
21+
22+
@BridgeMethod("testMethodWithArgsAndCallback")
23+
void testMethodWithArgsAndCallback(Activity activity, @BridgeParam("args1") String appId, @BridgeParam("args2") int args2, BridgeCallback callback);
24+
25+
}
26+
27+
```
28+
29+
### Android 接口实现
30+
31+
```java
32+
public class TestService implementation TestService {
33+
34+
@Override
35+
public void testMethodWithCallback(BridgeCallback callback){
36+
callback.onResult("testMethodWithCallback 回调给 Unity 的参数");
37+
}
38+
39+
@Override
40+
public void testMethodWithArgsAndCallback(Activity activity, String appId,int args2, BridgeCallback callback){
41+
callback.onResult("testMethodWithArgsAndCallback 回调给 Unity 的参数");
42+
}
43+
44+
}
45+
46+
```
47+
48+
### iOS 接口定义
49+
50+
> iOS 方法名通过反射获取到的为 `args1:args2:bridgeCallback` ,所以 iOS 的方法定义与 Android 略有不同。
51+
52+
- 类名必须同 Android `@BridgeService` 所修饰的类名一致。
53+
- 参数名例如 `args1``args2` 必须同 Android `@BridgeParam` 修饰的一致,用于回调的 `iOS` 闭包的参数名必须为 `bridgeCallback`
54+
- 当参数个数仅为 0 或者 仅为 闭包时,方法名必须同 Android `@BridgeMethod` 修饰的方法一致。
55+
56+
```objectivec
57+
@interface TestService
58+
59+
// 匹配的是 Android 中 testMethodWithCallback 方法
60+
+(void) testMethodWithCallback:(void (^)(NSString *result))callback;
61+
62+
// 匹配的是 Android 中 testMethodWithArgsAndCallback 方法
63+
+(void) args1:(NSString*)args1 args2:(NSNumber*)args2 bridgeCallback:(void (^)(NSString *result))callback;
64+
65+
@end
66+
```
67+
68+
### iOS 接口实现
69+
70+
```objectivec
71+
@implementation TestService
72+
73+
+(void) testMethodWithCallback:(void (^)(NSString *result)) callback{
74+
callback(@"testMethodWithCallback 回调给 Unity 的参数");
75+
}
76+
77+
+(void) args1:(NSString*)args1 args2:(NSNumber*)args2 bridgeCallback:(void (^)(NSString *result))callback{
78+
callback(@"testMethodWithArgsAndCallback 回调给 Unity 的参数");
79+
}
80+
81+
@end
82+
```
83+
84+
### Unity 调用上文中定义的 Android、iOS 接口
85+
86+
#### 1.初始化
87+
88+
```c#
89+
// Android 初始化
90+
//CLZ_NAME 和IMP_NAME为 接口以及实现类的全路径包名 例如:com.tds.bridge.TestService,com.tds.bridge.TestServiceImpl
91+
EngineBridge.GetInstance().Register(CLZ_NAME, IMP_NAME);
92+
93+
// iOS 无需初始化
94+
```
95+
#### 2.调用方法
96+
97+
`Bridge.CallHandler` 为异步方法,执行线程的流程为:
98+
99+
Unity Thread -> Native MainThread -> Execute Function -> Unity Thread
100+
101+
所以执行 `CallHandler` 的 Thread 和 `Action<Result>` 的 Thread 都为 Unity 当前 Thread。
102+
103+
```c#
104+
var command = new Command.Builder()
105+
.Service("TestService") // @BridgeService 值以及 iOS 类名
106+
.Method("testMethodWithArgsAndCallback") // @BridgeMethod 值 以及 iOS 方法名
107+
.Args("args1","value") // @BridgeParam 值 以及 iOS 参数名
108+
.Args("args2",1) // 同上
109+
.Callback(true) // 是否需要添加 BridgeCallback
110+
.OnceTime(true) // 当前 BridgeCallback 是否常驻内存
111+
.CommandBuilder();
112+
113+
// 需要回调
114+
EngineBridge.GetInstance().CallHandler(command,result=>{
115+
if(EngineBridge.CheckResult(result)){
116+
// 桥接调用成功
117+
// 当前 Content 则为 Android、iOS 通过 BridgeCallback 传给 Unity 的值
118+
var content = result.content;
119+
}
120+
});
121+
122+
// 不需要回调
123+
EngineBridge.GetInstance().CallHandler(command);
124+
```
125+
126+
## 二、Android 、iOS 调用 Unity
127+
128+
鉴于 TapSDK 3.1.+ 之后,Android 与 iOS 需要同步 `TapBootstrap``TDSUser` 的部分参数,所以 `TapCommon` 在当前版本支持了原生简单的调用 Unity 接口。
129+
130+
以下以 Android、iOS 需要 Unity 提供 `sessionToken` 以及 `objectId` 为例
131+
132+
### Unity 实现 ITapPropertiesProxy 接口并注册
133+
134+
```c#
135+
public class SessionTokenProxy:ITapPropertiesProxy{
136+
137+
public string GetProperties(){
138+
return "sessionToken-kafjaskldfjasjdhfajkdfajdfas";
139+
}
140+
141+
}
142+
143+
public class ObjectIdProxy:ITapPropertiesProxy {
144+
145+
public string GetProperties(){
146+
return "objectId-dafasdfad";
147+
}
148+
149+
}
150+
151+
// 通过 TapCommon 注册 Native 需要调用的接口
152+
TapCommon.RegisterProperties("sessionToken",new SessionTokenProxy());
153+
154+
TapCommon.RegisterProperties("objectid",new ObjectIdProxy());
155+
```
156+
157+
### Android、iOS 调用 Unity 实现的 ITapPropertiesProxy 来获取所需要的值
158+
159+
Android 获取 `sessionToken` 以及 `objectId`
160+
161+
```java
162+
String sessionToken = TapPropertiesHolder.INSTANCE.getProperty("sessionToken");
163+
String objectId = TapPropertiesHolder.INSTANCE.getProperty("objectId");
164+
```
165+
166+
iOS 获取 `sessionToken` 以及 `objectId`
167+
168+
```objectivec
169+
NSString* sessionToken = [[TapPropertiesHolder shareInstance] getProperty:@"sessionToken"];
170+
NSString* objectId = [[TapPropertiesHolder shareInstance] getProperty:@"objectId"];
171+
```
172+
173+
174+
175+
176+
177+
178+

Documentation/Bridge.md.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Documentation/README.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
## TapTap.Common
2+
3+
### 接口描述
4+
5+
#### 1.获取地区
6+
7+
```c#
8+
TapCommon.GetRegionCode(isMainland =>
9+
{
10+
// true 中国大陆 false 非中国大陆
11+
});
12+
```
13+
14+
#### 2. TapTap 是否安装
15+
16+
```c#
17+
TapCommon.IsTapTapInstalled(installed =>
18+
{
19+
// true 安装 false 未安装
20+
});
21+
```
22+
23+
#### 3. TapTap IO 是否安装
24+
25+
```c#
26+
TapCommon.IsTapTapGlobalInstalled(installed =>
27+
{
28+
// true 安装 false 未安装
29+
});
30+
```
31+
32+
### Android 独占方法
33+
34+
#### 4. 在 TapTap 更新游戏
35+
36+
```c#
37+
TapCommon.UpdateGameInTapTap(appId,updateSuccess =>
38+
{
39+
// true 更新成功 false 更新失败
40+
});
41+
```
42+
43+
#### 5. 在 TapTap IO 更新游戏
44+
45+
```c#
46+
TapCommon.UpdateGameInTapGlobal(appId,updateSuccess =>
47+
{
48+
// true 更新成功 false 更新失败
49+
});
50+
```
51+
52+
#### 6. 在 TapTap 打开当前游戏的评论区
53+
54+
```c#
55+
TapCommon.OpenReviewInTapTap(appId,openSuccess =>
56+
{
57+
// true 打开评论区 false 打开失败
58+
});
59+
```
60+
61+
#### 6. 在 TapTap IO 打开当前游戏的评论区
62+
63+
```c#
64+
TapCommon.OpenReviewInTapGlobal(appId,openSuccess =>
65+
{
66+
// true 打开评论区 false 打开失败
67+
});
68+
```
69+
70+
#### 7. 唤起 TapTap 客户端更新游戏
71+
72+
appId: 游戏在 TapTap 商店的唯一身份标识
73+
74+
例如:https://www.taptap.com/app/187168 ,其中 187168 是 appid.
75+
76+
```c#
77+
// 在 TapTap 客户端更新游戏,失败时通过浏览器打开 Tap 网站对应的游戏页面
78+
// 当你在国内区上架时使用
79+
bool isSuccess = await TapCommon.UpdateGameAndFailToWebInTapTap(string appId);
80+
// 当你在海外区上架时使用
81+
bool isSuccess = await TapCommon.UpdateGameAndFailToWebInTapGlobal(string appId):
82+
```
83+
84+
如果你需要在唤起 Tap 客户端失败时跳转到自己的网页
85+
86+
```c#
87+
bool isSuccess = await TapCommon.UpdateGameAndFailToWebInTapTap(string appId, string webUrl)
88+
bool isSuccess = await TapCommon.UpdateGameAndFailToWebInTapGlobal(string appId, string webUrl)
89+
```

Documentation/README.md.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)