com.taptap.sdk.core 4.9.0 → 4.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Mobile/Editor/NativeDependencies.xml +2 -2
- package/Mobile/Runtime/TapCoreMobile.cs +17 -0
- package/Runtime/Internal/Utils/TapLoom.cs +70 -1
- package/Runtime/Public/TapTapSDK.cs +4 -3
- package/Runtime/Public/TapTapSdkOptions.cs +1 -1
- package/Standalone/Runtime/Internal/Http/TapHttpUtils.cs +1 -1
- package/Standalone/Runtime/Internal/Openlog/TapOpenlogStandalone.cs +2 -2
- package/{Runtime/Public → Standalone/Runtime/Internal}/TapLocalizeManager.cs +31 -31
- package/Standalone/Runtime/Internal/Tracker.cs +1 -38
- package/Standalone/Runtime/Public/TapCoreStandalone.cs +5 -0
- package/package.json +1 -1
- /package/{Runtime/Public → Standalone/Runtime/Internal}/TapLocalizeManager.cs.meta +0 -0
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
<repositories>
|
|
5
5
|
<repository>https://repo.maven.apache.org/maven2</repository>
|
|
6
6
|
</repositories>
|
|
7
|
-
<androidPackage spec="com.taptap.sdk:tap-core-unity:4.9.
|
|
7
|
+
<androidPackage spec="com.taptap.sdk:tap-core-unity:4.9.2"/>
|
|
8
8
|
</androidPackages>
|
|
9
9
|
<iosPods>
|
|
10
10
|
<sources>
|
|
11
11
|
<source>https://github.com/CocoaPods/Specs.git</source>
|
|
12
12
|
</sources>
|
|
13
|
-
<iosPod addToAllTargets="false" bitcodeEnabled="false" name="TapTapSDK/Core" version="4.9.
|
|
13
|
+
<iosPod addToAllTargets="false" bitcodeEnabled="false" name="TapTapSDK/Core" version="4.9.2"/>
|
|
14
14
|
</iosPods>
|
|
15
15
|
</dependencies>
|
|
@@ -20,6 +20,23 @@ namespace TapSDK.Core.Mobile
|
|
|
20
20
|
TapLog.Log("TapCoreMobile constructor");
|
|
21
21
|
TapLoom.Initialize();
|
|
22
22
|
EngineBridgeInitializer.Initialize();
|
|
23
|
+
// 由于当通过 Application.Quit 退出时,iOS 端不会收到 applicationWillTerminate 的通知,
|
|
24
|
+
// 所以不会调用 C++ 的 OnAppStop 方法,导致小概率会因 C++ 资源未正确释放触发崩溃,所以添加监听
|
|
25
|
+
#if UNITY_IOS
|
|
26
|
+
EventManager.AddListener(
|
|
27
|
+
EventManager.OnApplicationQuit,
|
|
28
|
+
(quit) =>
|
|
29
|
+
{
|
|
30
|
+
TapLog.Log("TapSDK Unity OnApplicationQuit");
|
|
31
|
+
Bridge.CallHandler(
|
|
32
|
+
EngineBridgeInitializer
|
|
33
|
+
.GetBridgeServer()
|
|
34
|
+
.Method("handleEngineQuitEvent")
|
|
35
|
+
.CommandBuilder()
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
#endif
|
|
23
40
|
}
|
|
24
41
|
|
|
25
42
|
public void Init(TapTapSdkOptions coreOption, TapTapSdkBaseOptions[] otherOptions)
|
|
@@ -15,7 +15,11 @@ namespace TapSDK.Core.Internal.Utils
|
|
|
15
15
|
private static TapLoom _current;
|
|
16
16
|
private int _count;
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
private bool isPause = false;
|
|
19
|
+
|
|
20
|
+
// 记录主线程 ID
|
|
21
|
+
private static int _mainThreadId = -1;
|
|
22
|
+
|
|
19
23
|
public static TapLoom Current
|
|
20
24
|
{
|
|
21
25
|
get
|
|
@@ -29,6 +33,7 @@ namespace TapSDK.Core.Internal.Utils
|
|
|
29
33
|
{
|
|
30
34
|
_current = this;
|
|
31
35
|
initialized = true;
|
|
36
|
+
_mainThreadId = Thread.CurrentThread.ManagedThreadId;
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
static bool initialized;
|
|
@@ -80,6 +85,11 @@ namespace TapSDK.Core.Internal.Utils
|
|
|
80
85
|
}
|
|
81
86
|
}
|
|
82
87
|
|
|
88
|
+
/// <summary>
|
|
89
|
+
/// 在线程池中执行任务,非主线程
|
|
90
|
+
/// </summary>
|
|
91
|
+
/// <param name="a"> 任务 </param>
|
|
92
|
+
/// <returns></returns>
|
|
83
93
|
public static Thread RunAsync(Action a)
|
|
84
94
|
{
|
|
85
95
|
Initialize();
|
|
@@ -92,6 +102,65 @@ namespace TapSDK.Core.Internal.Utils
|
|
|
92
102
|
return null;
|
|
93
103
|
}
|
|
94
104
|
|
|
105
|
+
/// <summary>
|
|
106
|
+
/// 阻塞式在主线程执行任务并返回值,当发生异常或超时时,返回默认值
|
|
107
|
+
/// </summary>
|
|
108
|
+
/// <param name="func"> 任务 </param>
|
|
109
|
+
/// <param name="defaultValue"> 默认值 </param>
|
|
110
|
+
/// <param name="timeout"> 超时时间,默认 100 毫秒</param>
|
|
111
|
+
/// <returns> 任务返回值或默认值 </returns>
|
|
112
|
+
public static object RunOnMainThreadSync(
|
|
113
|
+
Func<object> func,
|
|
114
|
+
object defaultValue,
|
|
115
|
+
int timeout = 100
|
|
116
|
+
)
|
|
117
|
+
{
|
|
118
|
+
// 主线程未就绪,直接返回默认值
|
|
119
|
+
if (_mainThreadId < 0)
|
|
120
|
+
{
|
|
121
|
+
return defaultValue;
|
|
122
|
+
}
|
|
123
|
+
// 已经在主线程,直接执行
|
|
124
|
+
if (Thread.CurrentThread.ManagedThreadId == _mainThreadId)
|
|
125
|
+
{
|
|
126
|
+
return func();
|
|
127
|
+
}
|
|
128
|
+
object result = defaultValue;
|
|
129
|
+
var evt = new ManualResetEvent(false);
|
|
130
|
+
try
|
|
131
|
+
{
|
|
132
|
+
QueueOnMainThread(() =>
|
|
133
|
+
{
|
|
134
|
+
try
|
|
135
|
+
{
|
|
136
|
+
result = func();
|
|
137
|
+
}
|
|
138
|
+
catch (Exception ex)
|
|
139
|
+
{
|
|
140
|
+
TapLogger.Error("RunOnMainThreadSync failed " + ex.Message);
|
|
141
|
+
}
|
|
142
|
+
finally
|
|
143
|
+
{
|
|
144
|
+
try
|
|
145
|
+
{
|
|
146
|
+
evt.Set();
|
|
147
|
+
}
|
|
148
|
+
catch (ObjectDisposedException)
|
|
149
|
+
{
|
|
150
|
+
// evt 已被释放,直接忽略
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
evt.WaitOne(timeout);
|
|
156
|
+
}
|
|
157
|
+
finally
|
|
158
|
+
{
|
|
159
|
+
evt.Dispose(); // WaitOne 返回后再 Dispose
|
|
160
|
+
}
|
|
161
|
+
return result;
|
|
162
|
+
}
|
|
163
|
+
|
|
95
164
|
private static void RunAction(object action)
|
|
96
165
|
{
|
|
97
166
|
try
|
|
@@ -12,7 +12,7 @@ using System.ComponentModel;
|
|
|
12
12
|
|
|
13
13
|
namespace TapSDK.Core {
|
|
14
14
|
public class TapTapSDK {
|
|
15
|
-
public static readonly string Version = "4.9.
|
|
15
|
+
public static readonly string Version = "4.9.2";
|
|
16
16
|
|
|
17
17
|
public static string SDKPlatform = "TapSDK-Unity";
|
|
18
18
|
|
|
@@ -38,11 +38,12 @@ namespace TapSDK.Core {
|
|
|
38
38
|
{
|
|
39
39
|
if (coreOption == null)
|
|
40
40
|
throw new ArgumentException("[TapSDK] options is null!");
|
|
41
|
+
|
|
41
42
|
TapTapSDK.taptapSdkOptions = coreOption;
|
|
42
43
|
TapLog.Enabled = coreOption.enableLog;
|
|
43
44
|
platformWrapper?.Init(coreOption);
|
|
44
|
-
// 初始化各个模块
|
|
45
45
|
|
|
46
|
+
// 初始化各个模块
|
|
46
47
|
Type[] initTaskTypes = GetInitTypeList();
|
|
47
48
|
if (initTaskTypes != null)
|
|
48
49
|
{
|
|
@@ -59,7 +60,6 @@ namespace TapSDK.Core {
|
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
TapTapEvent.Init(HandleEventOptions(coreOption));
|
|
62
|
-
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
public static void Init(TapTapSdkOptions coreOption, TapTapSdkBaseOptions[] otherOptions)
|
|
@@ -72,6 +72,7 @@ namespace TapSDK.Core {
|
|
|
72
72
|
platformWrapper?.Init(coreOption, otherOptions);
|
|
73
73
|
|
|
74
74
|
|
|
75
|
+
|
|
75
76
|
Type[] initTaskTypes = GetInitTypeList();
|
|
76
77
|
if (initTaskTypes != null)
|
|
77
78
|
{
|
|
@@ -202,7 +202,7 @@ namespace TapSDK.Core.Standalone.Internal.Openlog
|
|
|
202
202
|
// 芯片型号,eg:Qualcomm Technologies, Inc SM7250
|
|
203
203
|
generalParameter[TapOpenlogParamConstants.PARAM_HARDWARE] = SystemInfo.processorType;
|
|
204
204
|
// SDK设置的地区,例如 zh_CN
|
|
205
|
-
generalParameter[TapOpenlogParamConstants.PARAM_SDK_LOCALE] =
|
|
205
|
+
generalParameter[TapOpenlogParamConstants.PARAM_SDK_LOCALE] = TapLocalizeManager.GetCurrentLanguageString();
|
|
206
206
|
// taptap的用户ID的外显ID(加密)
|
|
207
207
|
generalParameter[TapOpenlogParamConstants.PARAM_OPEN_ID] = openid;
|
|
208
208
|
}
|
|
@@ -227,7 +227,7 @@ namespace TapSDK.Core.Standalone.Internal.Openlog
|
|
|
227
227
|
// 网络类型,eg:wifi, mobile
|
|
228
228
|
props[TapOpenlogParamConstants.PARAM_NETWORK_TYPE] = "";
|
|
229
229
|
// SDK设置的地区,例如 zh_CN
|
|
230
|
-
props[TapOpenlogParamConstants.PARAM_SDK_LOCALE] =
|
|
230
|
+
props[TapOpenlogParamConstants.PARAM_SDK_LOCALE] = TapLocalizeManager.GetCurrentLanguageString();
|
|
231
231
|
return props;
|
|
232
232
|
}
|
|
233
233
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
using System.Threading;
|
|
2
|
+
using TapSDK.Core.Internal.Utils;
|
|
1
3
|
using UnityEngine;
|
|
2
4
|
|
|
3
|
-
namespace TapSDK.Core
|
|
5
|
+
namespace TapSDK.Core.Standalone
|
|
4
6
|
{
|
|
5
7
|
public class TapLocalizeManager
|
|
6
8
|
{
|
|
@@ -24,7 +26,6 @@ namespace TapSDK.Core
|
|
|
24
26
|
}
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
private TapTapLanguageType _language = TapTapLanguageType.Auto;
|
|
28
29
|
private bool _regionIsCn;
|
|
29
30
|
|
|
30
31
|
public static void SetCurrentRegion(bool isCn)
|
|
@@ -32,6 +33,8 @@ namespace TapSDK.Core
|
|
|
32
33
|
Instance._regionIsCn = isCn;
|
|
33
34
|
}
|
|
34
35
|
|
|
36
|
+
private TapTapLanguageType _language = TapTapLanguageType.Auto;
|
|
37
|
+
|
|
35
38
|
public static void SetCurrentLanguage(TapTapLanguageType language)
|
|
36
39
|
{
|
|
37
40
|
Instance._language = language;
|
|
@@ -39,14 +42,7 @@ namespace TapSDK.Core
|
|
|
39
42
|
|
|
40
43
|
public static TapTapLanguageType GetCurrentLanguage()
|
|
41
44
|
{
|
|
42
|
-
|
|
43
|
-
Instance._language = GetSystemLanguage();
|
|
44
|
-
if (Instance._language == TapTapLanguageType.Auto)
|
|
45
|
-
{
|
|
46
|
-
Instance._language = Instance._regionIsCn ? TapTapLanguageType.zh_Hans : TapTapLanguageType.en;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return Instance._language;
|
|
45
|
+
return Instance._language != TapTapLanguageType.Auto ? Instance._language : GetSystemLanguage();
|
|
50
46
|
}
|
|
51
47
|
|
|
52
48
|
public static string GetCurrentLanguageString() {
|
|
@@ -66,37 +62,38 @@ namespace TapSDK.Core
|
|
|
66
62
|
return "th_TH";
|
|
67
63
|
case TapTapLanguageType.id:
|
|
68
64
|
return "id_ID";
|
|
65
|
+
case TapTapLanguageType.de:
|
|
66
|
+
return "de";
|
|
67
|
+
case TapTapLanguageType.es:
|
|
68
|
+
return "es_ES";
|
|
69
|
+
case TapTapLanguageType.fr:
|
|
70
|
+
return "fr";
|
|
71
|
+
case TapTapLanguageType.pt:
|
|
72
|
+
return "pt_PT";
|
|
73
|
+
case TapTapLanguageType.ru:
|
|
74
|
+
return "ru";
|
|
75
|
+
case TapTapLanguageType.tr:
|
|
76
|
+
return "tr";
|
|
77
|
+
case TapTapLanguageType.vi:
|
|
78
|
+
return "vi_VN";
|
|
69
79
|
default:
|
|
70
|
-
return
|
|
80
|
+
return Instance._regionIsCn ? "zh_CN" : "en_US";
|
|
71
81
|
}
|
|
72
82
|
}
|
|
73
83
|
|
|
74
84
|
public static string GetCurrentLanguageString2() {
|
|
75
|
-
|
|
76
|
-
switch (lang) {
|
|
77
|
-
case TapTapLanguageType.zh_Hans:
|
|
78
|
-
return "zh-CN";
|
|
79
|
-
case TapTapLanguageType.en:
|
|
80
|
-
return "en-US";
|
|
81
|
-
case TapTapLanguageType.zh_Hant:
|
|
82
|
-
return "zh-TW";
|
|
83
|
-
case TapTapLanguageType.ja:
|
|
84
|
-
return "ja-JP";
|
|
85
|
-
case TapTapLanguageType.ko:
|
|
86
|
-
return "ko-KR";
|
|
87
|
-
case TapTapLanguageType.th:
|
|
88
|
-
return "th-TH";
|
|
89
|
-
case TapTapLanguageType.id:
|
|
90
|
-
return "id-ID";
|
|
91
|
-
default:
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
85
|
+
return GetCurrentLanguageString().Replace("_", "-");
|
|
94
86
|
}
|
|
95
87
|
|
|
96
88
|
private static TapTapLanguageType GetSystemLanguage()
|
|
97
89
|
{
|
|
98
90
|
var lang = TapTapLanguageType.Auto;
|
|
99
|
-
|
|
91
|
+
// Application.systemLanguage 必须在主线程访问,所以这里需要使用 TapLoom 确保调用线程
|
|
92
|
+
var defaultSystemLanguage = Instance._regionIsCn ? SystemLanguage.ChineseSimplified : SystemLanguage.English;
|
|
93
|
+
var sysLanguage = TapLoom.RunOnMainThreadSync(
|
|
94
|
+
() => Application.systemLanguage,
|
|
95
|
+
defaultSystemLanguage
|
|
96
|
+
);
|
|
100
97
|
switch (sysLanguage)
|
|
101
98
|
{
|
|
102
99
|
case SystemLanguage.ChineseSimplified:
|
|
@@ -120,6 +117,9 @@ namespace TapSDK.Core
|
|
|
120
117
|
case SystemLanguage.Indonesian:
|
|
121
118
|
lang = TapTapLanguageType.id;
|
|
122
119
|
break;
|
|
120
|
+
default:
|
|
121
|
+
lang = Instance._regionIsCn ? TapTapLanguageType.zh_Hans : TapTapLanguageType.en;
|
|
122
|
+
break;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
return lang;
|
|
@@ -127,7 +127,7 @@ namespace TapSDK.Core.Standalone.Internal {
|
|
|
127
127
|
|
|
128
128
|
props["is_automatically_log"] = isAutomationlly ? "true" : "false";
|
|
129
129
|
|
|
130
|
-
var language =
|
|
130
|
+
var language = TapLocalizeManager.GetCurrentLanguageString();
|
|
131
131
|
props["sdk_locale"] = language;
|
|
132
132
|
props["lang_system"] = DeviceInfo.GetLanguage();
|
|
133
133
|
|
|
@@ -240,43 +240,6 @@ namespace TapSDK.Core.Standalone.Internal {
|
|
|
240
240
|
}
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
-
public static string getServerLanguage() {
|
|
244
|
-
// 将 TapCoreStandalone.coreOptions.preferredLanguage 转成 zh_TW/en/zh_CN/en_GB/jp/fil 等格式
|
|
245
|
-
switch (TapCoreStandalone.coreOptions.preferredLanguage) {
|
|
246
|
-
case TapTapLanguageType.zh_Hans:
|
|
247
|
-
return "zh_CN";
|
|
248
|
-
case TapTapLanguageType.zh_Hant:
|
|
249
|
-
return "zh_TW";
|
|
250
|
-
case TapTapLanguageType.en:
|
|
251
|
-
return "en_US";
|
|
252
|
-
case TapTapLanguageType.ja:
|
|
253
|
-
return "ja_JP";
|
|
254
|
-
case TapTapLanguageType.ko:
|
|
255
|
-
return "ko_KR";
|
|
256
|
-
case TapTapLanguageType.th:
|
|
257
|
-
return "th_TH";
|
|
258
|
-
case TapTapLanguageType.id:
|
|
259
|
-
return "id_ID";
|
|
260
|
-
case TapTapLanguageType.de:
|
|
261
|
-
return "de";
|
|
262
|
-
case TapTapLanguageType.es:
|
|
263
|
-
return "es_ES";
|
|
264
|
-
case TapTapLanguageType.fr:
|
|
265
|
-
return "fr";
|
|
266
|
-
case TapTapLanguageType.pt:
|
|
267
|
-
return "pt_PT";
|
|
268
|
-
case TapTapLanguageType.ru:
|
|
269
|
-
return "ru";
|
|
270
|
-
case TapTapLanguageType.tr:
|
|
271
|
-
return "tr";
|
|
272
|
-
case TapTapLanguageType.vi:
|
|
273
|
-
return "vi_VN";
|
|
274
|
-
default:
|
|
275
|
-
// 默认cn返回简体中文,Overseas返回英文
|
|
276
|
-
return TapCoreStandalone.coreOptions.region == TapTapRegionType.CN ? "zh_CN" : "en_US";
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
|
|
280
243
|
private string Network {
|
|
281
244
|
get {
|
|
282
245
|
switch (Application.internetReachability) {
|
|
@@ -70,8 +70,12 @@ namespace TapSDK.Core.Standalone
|
|
|
70
70
|
TapVerifyInitStateUtils.ShowVerifyErrorMsg("clientToken 不能为空", "clientToken 不能为空");
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
|
+
|
|
73
74
|
TapLog.Log("SDK Init Options : ", "coreOption : " + JsonConvert.SerializeObject(coreOption) + "\notherOptions : " + JsonConvert.SerializeObject(otherOptions));
|
|
74
75
|
coreOptions = coreOption;
|
|
76
|
+
// 设置区域与语言
|
|
77
|
+
TapLocalizeManager.SetCurrentRegion(coreOption.region == TapTapRegionType.CN);
|
|
78
|
+
TapLocalizeManager.SetCurrentLanguage(coreOption.preferredLanguage);
|
|
75
79
|
if (Prefs == null)
|
|
76
80
|
{
|
|
77
81
|
Prefs = new Prefs();
|
|
@@ -123,6 +127,7 @@ namespace TapSDK.Core.Standalone
|
|
|
123
127
|
}
|
|
124
128
|
TapLog.Log("UpdateLanguage called with language: " + language);
|
|
125
129
|
coreOptions.preferredLanguage = language;
|
|
130
|
+
TapLocalizeManager.SetCurrentLanguage(language);
|
|
126
131
|
}
|
|
127
132
|
|
|
128
133
|
public static string getGatekeeperConfigUrl(string key)
|
package/package.json
CHANGED
|
File without changes
|