Skip to content

Commit fac20a5

Browse files
GH4NGSlotSun
authored andcommitted
fix: Crash on iOS
- crash 发生在ffi调用过程中 flutter_js ffi 调用native JavascriptCore 机制本身是同步 安全性考虑改为同步
1 parent f6ae585 commit fac20a5

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

simple_live_core/lib/src/danmaku/douyin_danmaku.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,11 @@ class DouyinDanmaku implements LiveDanmaku {
9292

9393
var url = "$uri&signature=$sign";
9494
var backupUrl = url.replaceAll("webcast3-ws-web-lq", "webcast5-ws-web-lf");
95-
print(url);
9695
webScoketUtils = WebScoketUtils(
9796
url: url,
9897
backupUrl: backupUrl,
9998
headers: {
100-
"User-Agnet": DouyinRequestParams.kDefaultUserAgent,
99+
"User-Agent": DouyinRequestParams.kDefaultUserAgent,
101100
"Cookie": danmakuArgs.cookie,
102101
"Origin": "https://live.douyin.com"
103102
},
@@ -230,7 +229,8 @@ class DouyinDanmaku implements LiveDanmaku {
230229
.map((entry) => '${entry.key}=${entry.value}')
231230
.join(',');
232231
var md5SigParam = md5.convert(utf8.encode(sigParam)).toString();
233-
JsEvalResult jsEvalResult = JsEngine.jsRuntime.evaluate("get_sign('$md5SigParam')");
232+
JsEvalResult jsEvalResult =
233+
await JsEngine.evaluateAsync("get_sign('$md5SigParam')"); // 异步执行
234234
return jsEvalResult.stringResult;
235235
} catch (e) {
236236
CoreLog.error(e);

simple_live_core/lib/src/douyu_site.dart

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,8 @@ class DouyuSite implements LiveSite {
325325
try{
326326
var did = '10000000000000000000000000001501';
327327
JsEngine.init();
328-
JsEvalResult jsEvalResult = JsEngine.jsRuntime.evaluate("$html;ub98484234();");
328+
JsEvalResult jsEvalResult =
329+
await JsEngine.evaluateAsync("$html;ub98484234();");
329330
var res = jsEvalResult.stringResult;
330331
String t10 = (DateTime.now().millisecondsSinceEpoch ~/ 1000).toString();
331332
RegExp vReg = RegExp(r'v=(\d+)');
@@ -336,9 +337,12 @@ class DouyuSite implements LiveSite {
336337
.replaceAll(RegExp(r'return rt;}\);?'), 'return rt;}')
337338
.replaceAll('(function (', 'function sign(')
338339
.replaceAll('CryptoJS.MD5(cb).toString()', '"$rb"');
339-
final params = JsEngine.jsRuntime.evaluate("$jsSign;sign($rid,'$did',$t10);").stringResult;
340-
return params;
341-
}catch(e){
340+
341+
final params =
342+
await JsEngine.evaluateAsync("$jsSign;sign($rid,'$did',$t10);");
343+
344+
return params.stringResult;
345+
} catch (e) {
342346
CoreLog.error(e);
343347
return "";
344348
} finally{

0 commit comments

Comments
 (0)