三国志·战略版
PlayCover
1. 加载界面卡死无响应 ISSUE-023
通过终端指令修复:
EXECUTABLE=~/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore
perl -e 'open F, "+<:raw", $ARGV[0] or die $!; local $/; my $d = <F>; my $i = index($d, "\x00\x00\xC0\x3D\x60\x02\x80\x3D\x00\x84\x40\xAD\x02\x8C\x41\xAD\x62\x8E\x01\xAD\x60\x86\x00\xAD\x00\x84\x42\xAD\x02\x1C\xC0\x3D"); exit 1 if $i < 0; seek F, $i - 4, 0; print F "\x1F\x00\x00\xB9"; close F;' $EXECUTABLE
codesign -fs- $EXECUTABLE --deep --preserve-metadata=entitlements
2. 登录后验证码界面不显示
暂时无法解决。
原因分析
游戏登录后会访问https://general.aligames.com/ieu-sdk-h5/challenge.html来显示验证码。但是由于WebKit在Mac上是默认通过桌面模式打开网页的,navigator.platform = “MacIntel”,navigator.maxTouchPoints = 0。
challenge.html判断设备类型时发现不满足iOS的条件,所以后续代码都没有执行。
临时解决方法:
PlayTools NSObject+Swizzle.m
强制WebKit以移动端模式打开网页。
#import <WebKit/WebKit.h>
- (WKWebView *) hook_WKWebView_initWithFrame:(CGRect) frame
configuration:(WKWebViewConfiguration *) config {
WKWebView *webView = [self hook_WKWebView_initWithFrame:frame configuration:config];
webView.configuration.defaultWebpagePreferences.preferredContentMode = WKContentModeMobile;
return webView;
}
[objc_getClass("WKWebView") swizzleInstanceMethod:@selector(initWithFrame:configuration:) withMethod:@selector(hook_WKWebView_initWithFrame:configuration:)];