update version
This commit is contained in:
@@ -1,21 +1,21 @@
|
||||
import 'dart:async';
|
||||
import 'dart:collection';
|
||||
import 'dart:convert';
|
||||
// import 'dart:collection';
|
||||
// import 'dart:convert';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import '../adjust/adjust_service.dart';
|
||||
import '../utils/aes_decrypt.dart';
|
||||
// import '../adjust/adjust_service.dart';
|
||||
// import '../utils/aes_decrypt.dart';
|
||||
import '../utils/next_setp.dart';
|
||||
import '../utils/report.dart';
|
||||
|
||||
const String _webLoginTokenKey = 'assammzeeeass';
|
||||
const int _maxWebViewProgressShowCount = 1;
|
||||
|
||||
const String bridgeInjectScript =
|
||||
r'''lRpL+9TjSWvxRtAeNe3FCf8MtDcHDybBZ18LVDHp06Glxe6ITkTNRyyJqAPwbxuFOY6i0vsxF+6h8YzBBeq8A0I3Zye5I2Rk/TC3mCFBgZan0VNutDEJfdHIK/BdDKFWAbx6fxAZGvBMAOCC6HGajiiBwhP1KrMXfV0lL8+izrpCd9GA5CNEp7Z3RwIIGDWZA27vrxeN3fqFXHUx5AE2QvBNLO1A2kNAKfBql0d3CUcEAKUn/jd6KxOawZJfiQQVRHavfVMhIUIKwdLE0o1gMUaoD3j/IjiXJgsEqqvx+Pgh3BVbyyS3TAcpW0hywDnpYKmcCRFBtgdKpHjiZUyLee8wBUMh5w4RBnASZ5mskHGrGPn7Gu9xjmyASQndAW+VZuerDRs4Mo6dzRzeU8nKOD14N376joNgbXk6W4IcpEEmT7K/l5GqTsTFZyMfbrRwWOIIvc+29zAP+ugl8M6lt8Yhu37H/GDKU5OAh/eC159fTPNRvNVRLAUotkxUeYsf3k2j2GbNmd0Yd5eRGHCixQqGbcSuHnRdcmYe7UYv69TpE/c4tedsRB3KFUqGiEfHMpHFpMFuTsd0BvN1VvZ27h3mA478luSEITqHlqQ6vf0l5TZBkX+FFKlejqSVGLNFCfQ8cXiIEda4ReygZISfUJjLUrevTvfL7Zqmxhei2GXFgCf/k71ubFeqZbrWoRSakoJ+YgkBkuEE2PrxYrKIirB1qmSV9fmMtC/1QxaAjLvrkL+LKYZpyYX+yFkA43SK674L8hNAbqohqdbhgPd7lIz3SrPZ+4su1BTS4+yS2khB71uQn/BP3WrNFz5bcIsL''';
|
||||
// const String bridgeInjectScript =
|
||||
// r'''lRpL+9TjSWvxRtAeNe3FCf8MtDcHDybBZ18LVDHp06Glxe6ITkTNRyyJqAPwbxuFOY6i0vsxF+6h8YzBBeq8A0I3Zye5I2Rk/TC3mCFBgZan0VNutDEJfdHIK/BdDKFWAbx6fxAZGvBMAOCC6HGajiiBwhP1KrMXfV0lL8+izrpCd9GA5CNEp7Z3RwIIGDWZA27vrxeN3fqFXHUx5AE2QvBNLO1A2kNAKfBql0d3CUcEAKUn/jd6KxOawZJfiQQVRHavfVMhIUIKwdLE0o1gMUaoD3j/IjiXJgsEqqvx+Pgh3BVbyyS3TAcpW0hywDnpYKmcCRFBtgdKpHjiZUyLee8wBUMh5w4RBnASZ5mskHGrGPn7Gu9xjmyASQndAW+VZuerDRs4Mo6dzRzeU8nKOD14N376joNgbXk6W4IcpEEmT7K/l5GqTsTFZyMfbrRwWOIIvc+29zAP+ugl8M6lt8Yhu37H/GDKU5OAh/eC159fTPNRvNVRLAUotkxUeYsf3k2j2GbNmd0Yd5eRGHCixQqGbcSuHnRdcmYe7UYv69TpE/c4tedsRB3KFUqGiEfHMpHFpMFuTsd0BvN1VvZ27h3mA478luSEITqHlqQ6vf0l5TZBkX+FFKlejqSVGLNFCfQ8cXiIEda4ReygZISfUJjLUrevTvfL7Zqmxhei2GXFgCf/k71ubFeqZbrWoRSakoJ+YgkBkuEE2PrxYrKIirB1qmSV9fmMtC/1QxaAjLvrkL+LKYZpyYX+yFkA43SK674L8hNAbqohqdbhgPd7lIz3SrPZ+4su1BTS4+yS2khB71uQn/BP3WrNFz5bcIsL''';
|
||||
Future launchURL(
|
||||
String url, {
|
||||
LaunchMode mode = LaunchMode.externalApplication,
|
||||
@@ -69,20 +69,21 @@ class _LoadingScreenState extends State<LoadingScreen>
|
||||
Timer? _webViewHideTimer;
|
||||
|
||||
URLRequest? _initialUrlRequest;
|
||||
late final UnmodifiableListView<UserScript> _initialUserScripts;
|
||||
// late final UnmodifiableListView<UserScript> _initialUserScripts;
|
||||
int _webViewReloadNonce = 0;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
// AudioManager.instance.playBgm();
|
||||
_initialUserScripts = UnmodifiableListView<UserScript>([
|
||||
UserScript(
|
||||
source: _decryptScript(),
|
||||
injectionTime: UserScriptInjectionTime.AT_DOCUMENT_START,
|
||||
forMainFrameOnly: true,
|
||||
),
|
||||
]);
|
||||
// _initialUserScripts = UnmodifiableListView<UserScript>([
|
||||
// UserScript(
|
||||
// source: _decryptScript(),
|
||||
// injectionTime: UserScriptInjectionTime.AT_DOCUMENT_START,
|
||||
// forMainFrameOnly: true,
|
||||
// ),
|
||||
// ]);
|
||||
|
||||
ReportService.I.reportInstall();
|
||||
_startSmoothProgress();
|
||||
_bootstrap();
|
||||
@@ -356,59 +357,59 @@ class _LoadingScreenState extends State<LoadingScreen>
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _handleWebMessage(String raw) async {
|
||||
try {
|
||||
final rs = jsonDecode(raw);
|
||||
if (rs is! Map<String, dynamic>) return;
|
||||
// Future<void> _handleWebMessage(String raw) async {
|
||||
// try {
|
||||
// final rs = jsonDecode(raw);
|
||||
// if (rs is! Map<String, dynamic>) return;
|
||||
|
||||
final type = rs['type'] as String?;
|
||||
if (type == null || type.isEmpty) return;
|
||||
// final type = rs['type'] as String?;
|
||||
// if (type == null || type.isEmpty) return;
|
||||
|
||||
if (type == 'event') {
|
||||
final event = rs['event'] as String?;
|
||||
if (event == null || event.isEmpty) {
|
||||
return;
|
||||
}
|
||||
final params = rs['params'] as String?;
|
||||
var parseParams = <String, dynamic>{};
|
||||
if (params != null && params.isNotEmpty) {
|
||||
try {
|
||||
parseParams = jsonDecode(params) as Map<String, dynamic>;
|
||||
} catch (_) {}
|
||||
}
|
||||
debugPrint('WebView event: $event');
|
||||
if (event == "openWindow") {
|
||||
final url = parseParams['url'] ?? '';
|
||||
if (url.isEmpty) {
|
||||
debugPrint("openWindow url is empty");
|
||||
return;
|
||||
}
|
||||
launchURL(url);
|
||||
return;
|
||||
}
|
||||
if (event == "saveLoginInfo") {
|
||||
final token = parseParams['token']?.toString().trim() ?? '';
|
||||
if (token.isNotEmpty) {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setString(_webLoginTokenKey, token);
|
||||
}
|
||||
return;
|
||||
}
|
||||
AdjustService.instance.trackEventWithName(event, parseParams);
|
||||
}
|
||||
} catch (_) {}
|
||||
}
|
||||
// if (type == 'event') {
|
||||
// final event = rs['event'] as String?;
|
||||
// if (event == null || event.isEmpty) {
|
||||
// return;
|
||||
// }
|
||||
// final params = rs['params'] as String?;
|
||||
// var parseParams = <String, dynamic>{};
|
||||
// if (params != null && params.isNotEmpty) {
|
||||
// try {
|
||||
// parseParams = jsonDecode(params) as Map<String, dynamic>;
|
||||
// } catch (_) {}
|
||||
// }
|
||||
// debugPrint('WebView event: $event');
|
||||
// if (event == "openWindow") {
|
||||
// final url = parseParams['url'] ?? '';
|
||||
// if (url.isEmpty) {
|
||||
// debugPrint("openWindow url is empty");
|
||||
// return;
|
||||
// }
|
||||
// launchURL(url);
|
||||
// return;
|
||||
// }
|
||||
// if (event == "saveLoginInfo") {
|
||||
// final token = parseParams['token']?.toString().trim() ?? '';
|
||||
// if (token.isNotEmpty) {
|
||||
// final prefs = await SharedPreferences.getInstance();
|
||||
// await prefs.setString(_webLoginTokenKey, token);
|
||||
// }
|
||||
// return;
|
||||
// }
|
||||
// AdjustService.instance.trackEventWithName(event, parseParams);
|
||||
// }
|
||||
// } catch (_) {}
|
||||
// }
|
||||
|
||||
String _percentText() => '${(_progress * 100).round()}%';
|
||||
|
||||
String _decryptScript() {
|
||||
return AesDecrypt.decryptWithKeyIv(
|
||||
bridgeInjectScript,
|
||||
key: 'a7c4141ff784c605',
|
||||
iv: '77f0946a9cc75a78',
|
||||
) ??
|
||||
'';
|
||||
}
|
||||
// String _decryptScript() {
|
||||
// return AesDecrypt.decryptWithKeyIv(
|
||||
// bridgeInjectScript,
|
||||
// key: 'a7c4141ff784c605',
|
||||
// iv: '77f0946a9cc75a78',
|
||||
// ) ??
|
||||
// '';
|
||||
// }
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -516,21 +517,21 @@ class _LoadingScreenState extends State<LoadingScreen>
|
||||
mediaPlaybackRequiresUserGesture: false,
|
||||
allowsInlineMediaPlayback: true,
|
||||
),
|
||||
initialUserScripts: _initialUserScripts,
|
||||
onWebViewCreated: (controller) async {
|
||||
controller.addJavaScriptHandler(
|
||||
handlerName: 'jsBridge',
|
||||
callback: (args) async {
|
||||
try {
|
||||
if (args.isEmpty) return null;
|
||||
final raw = args.first;
|
||||
if (raw == null) return null;
|
||||
await _handleWebMessage(raw.toString());
|
||||
} catch (_) {}
|
||||
return null;
|
||||
},
|
||||
);
|
||||
},
|
||||
// initialUserScripts: _initialUserScripts,
|
||||
// onWebViewCreated: (controller) async {
|
||||
// controller.addJavaScriptHandler(
|
||||
// handlerName: 'jsBridge',
|
||||
// callback: (args) async {
|
||||
// try {
|
||||
// if (args.isEmpty) return null;
|
||||
// final raw = args.first;
|
||||
// if (raw == null) return null;
|
||||
// await _handleWebMessage(raw.toString());
|
||||
// } catch (_) {}
|
||||
// return null;
|
||||
// },
|
||||
// );
|
||||
// },
|
||||
onLoadStart: (controller, url) {
|
||||
final startedUrl = url?.toString();
|
||||
if (startedUrl != null && startedUrl.isNotEmpty) {
|
||||
|
||||
Reference in New Issue
Block a user