//
//  H5View.m
//  TestGameWeb
//
//  Created by Mac on 2024/1/30.
//

#import "H5View.h"
#import "CircularProgressBar.h"
#import <WebKit/WebKit.h>
#import "CustomView.h"
#import "UnityFramework.h"
#import <objc/runtime.h>

@implementation H5View{
    //    WKWebView * webview;
    //    WKWebView * webview_1;
    NSMutableArray<WKWebView *> *webviews;
    
    CircularProgressBar* bar;       //奖励按钮进度条
    UIView * flyBtn;            //飞行奖励按钮节点，也可以用UIButton但要屏蔽事件
    UIImageView* flyBg;         //飞行奖励闪光背景
    UIImageView* rewardBtn;     //奖励按钮节点
    NSTimer* updateTimer;       //动效定时器
    CGPoint points[4];          //飞行按钮飞行点位
    NSInteger pointIndex;       //当前飞行下标
    BOOL canFly;                //是否可飞行
    CGPoint targetPoint;        //飞行的下一个点
    CGPoint delta;              //飞行移动的delta
    BOOL canCheckTouch;         //加这个变量来防止检测点击事件出现多次
    BOOL canCT;                 //点击是否可穿透
    NSString* lastUrl;          //记录上一次打开的url
    BOOL inited;                //当前view是否被初始化
    CGPoint hitTestLocation;    //hitest 点击的点
    float bgAngle;              //飞行按钮背景图的角度
    BOOL is_first_btn;     //是否是第一次生成网页按钮
    int flyCtRate;//飞行按钮穿透概率
    float stopTouchTime;
    
    int otherH5switch;  //是否自动刷h5界面
    int H5Refreshtime;    //h5刷新默认间隔时间
    int Dailyrefreshtimes;  //每天h5剩余刷新次数
    UIScrollView *scrollView;
    BOOL is_transparent;
    BOOL dark_though;
    NSMutableArray * dark_though_rate;
    
    //    float Dark_stopRefeshTime;
    //    float Dark_stopRefeshTime_1;
    NSMutableArray *Dark_stopRefeshTimes;
    
    NSMutableArray *dark_H5Refreshtime;    //h5刷新默认间隔时间
    NSMutableArray *dark_Dailyrefreshtimes;  //每天h5剩余刷新次数
    NSMutableArray *dark_url_array;
    BOOL inH5ui;
    
    NSMutableArray *light_url_array;
    
    BOOL isClickProgress;
    BOOL isClickFly;
    int light_though_rate;
    
    
    BOOL isShowFlyBtn;
    BOOL isShowRewardBtn;
    
    int isMultiView;
    float top_;
    float height_;
    BOOL is_gift;
    
    //    int offset_y;
    //    int offset_y1;
    NSMutableArray *offset_y;
    //    UITapGestureRecognizer *tapGesture;
    //    UITapGestureRecognizer *tapGesture_1;
    BOOL in_game;
    NSMutableArray *web_through_array;
    
    NSString* webview_url;
    NSString* webview_1_url;
    
    NSMutableArray *ClickAddtime;
    
    BOOL webview_IsCLickAd;
    BOOL webview_1_IsCLickAd;
    
    
    //    float web_1_through_time;
    //    float web_2_through_time;
    NSMutableArray<NSNumber *> *web_through_times;
    //    int dark_webview1_random_refresh_time;
    //    int dark_webview2_random_refresh_time;
    NSMutableArray<NSNumber *> *dark_webview_random_refresh_times;
    
    //    float web_1_disable_time;
    //    float web_2_disable_time;
    NSMutableArray<NSNumber *> *web_disable_times;
    
}


//单利模式
+(id) shared{
    static H5View *view = nil;
    static dispatch_once_t onceToken;
    
    dispatch_once(&onceToken, ^{view = [[self alloc] init];});
    
    return view;
}
//初始化页面
-(void)initView{
    if (inited)return;
    
    
    
    [self initFlyBtn];
    
    [self setHidden:YES];       //默认为隐藏状态
    [self hideView];
    canCheckTouch = true;
    inited = true;
    //    Dark_stopRefeshTime=0;
    //    Dark_stopRefeshTime_1=0;
    dark_though_rate= [NSMutableArray array];
    dark_webview_random_refresh_times = [NSMutableArray array];
    web_through_times= [NSMutableArray array];
    web_disable_times= [NSMutableArray array];
    Dark_stopRefeshTimes= [NSMutableArray array];
    webviews= [NSMutableArray array];
    offset_y=[NSMutableArray array];
    //    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.1
    //                                                      target:self
    //                                                    selector:@selector(timerAction:)
    //                                                    userInfo:nil
    //                                                     repeats:YES];
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.1
                                                      target:self
                                                    selector:@selector(timerAction:)
                                                    userInfo:nil
                                                     repeats:YES];
    
    // 将 timer 添加到 NSRunLoopCommonModes 模式
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
    
    CustomView *custom = [[CustomView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
    custom.backgroundColor = [UIColor clearColor];
    custom.userInteractionEnabled=YES;
    
    [self.window.rootViewController.view addSubview:custom];
    
//
//    UnityFramework *unityFramework = [UnityFramework getInstance];
//    UnityAppController *appController = [unityFramework appController];
//
//    // 获取 Unity 根节点视图
//    UIView *unityRootView = [appController rootView];
//    unityRootView.alpha=0.2;
}

-(void)initWebview:(int)type{
//    NSLog(@"kkkkkkkkkkkkkkkkkkkkkk%d",type);
    //    if(type==2&&!isMultiView) return;
    //    if (webview != nil) {        // 移除WebView的委托
    //        if(type==1){
    //            webview.navigationDelegate = nil;
    //
    //            // 停止加载和清理缓存
    //            [webview stopLoading];
    //            [webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
    //            [NSURLCache.sharedURLCache removeAllCachedResponses];
    //
    //            // 从视图层次结构中移除WebView
    //            [webview removeFromSuperview];
    //            webview = nil;
    //        }
    //
    //    }
    
    if( webviews[type]!=nil){
        webviews[type].navigationDelegate = nil;
        
        // 停止加载和清理缓存
        [webviews[type] stopLoading];
        [webviews[type] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
        [NSURLCache.sharedURLCache removeAllCachedResponses];
        
        // 从视图层次结构中移除WebView
        [webviews[type] removeFromSuperview];
        webviews[type] = [NSNull null];
        //webviews[type] = nil;
    }
    
    //  [webviews removeObjectAtIndex:type];
    
    
    //    if (webview_1 != nil) {
    //        // 移除WebView的委托
    //        if(type==2){
    //            webview_1.navigationDelegate = nil;
    //
    //            // 停止加载和清理缓存
    //            [webview_1 stopLoading];
    //            [webview_1 loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
    //            [NSURLCache.sharedURLCache removeAllCachedResponses];
    //
    //            // 从视图层次结构中移除WebView
    //            [webview_1 removeFromSuperview];
    //            webview_1 = nil;
    //        }
    //
    //    }
    WKWebViewConfiguration *webViewConfiguration = [[WKWebViewConfiguration alloc] init];
    
    if(is_transparent){
        webViewConfiguration.allowsInlineMediaPlayback = YES;
        webViewConfiguration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeAll;

        NSString *css = @"body { -webkit-user-select: none; user-select: none; }";
        NSString *jsCSS = [NSString stringWithFormat:
            @"var style = document.createElement('style'); "
             "style.innerHTML = '%@'; "
             "document.head.appendChild(style);", css];

        NSString *js =
        @"(function() { "
         // 禁用所有表单元素
         "var elements = document.querySelectorAll('input, textarea, select'); "
         "elements.forEach(function(element) { "
         "    element.disabled = true; "
         "    element.setAttribute('readonly', 'true'); "
         "}); "

         // 拦截 focus，强制失焦，防止输入法弹出
         "document.addEventListener('focusin', function(event) { "
         "    if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA' || event.target.tagName === 'SELECT') { "
         "        event.target.blur(); "
         "    } "
         "}); "

         // 禁用所有音频和视频
         "document.querySelectorAll('audio, video').forEach(function(el) { "
         "    el.muted = true; "
         "    el.pause(); "
         "}); "

         // 处理触摸事件，阻止广告类元素的触摸
         "document.addEventListener('touchstart', function(event) { "
         "    const target = event.target; "
         "    if (target.matches('.ad-class') || target.closest('.ad-class')) { "
         "        setTimeout(function() { "
         "            const touchCancelEvent = new TouchEvent('touchcancel', { "
         "                bubbles: true, "
         "                cancelable: true, "
         "                touches: [], "
         "                targetTouches: [], "
         "                changedTouches: event.changedTouches, "
         "                shiftKey: event.shiftKey "
         "            }); "
         "            target.dispatchEvent(touchCancelEvent); "
         "        }, 1000); "
         "        event.preventDefault(); "
         "    } "
         "}, { passive: false }); "

         // 监控 DOM 变化，禁用新插入的输入框
         "new MutationObserver(function(mutations) { "
         "    mutations.forEach(function(mutation) { "
         "        mutation.addedNodes.forEach(function(node) { "
         "            if (node.tagName === 'INPUT' || node.tagName === 'TEXTAREA' || node.tagName === 'SELECT') { "
         "                node.disabled = true; "
         "                node.setAttribute('readonly', 'true'); "
         "                node.blur(); "
         "            } "
         "        }); "
         "    }); "
         "}).observe(document.body, { childList: true, subtree: true }); "

        "})();";

        NSString *combinedJS = [NSString stringWithFormat:@"%@ %@", jsCSS, js];

        
        
        
        
        WKUserScript *userScript = [[WKUserScript alloc]
                                    initWithSource:combinedJS
                                    injectionTime:WKUserScriptInjectionTimeAtDocumentEnd
                                    forMainFrameOnly:NO];
        
        [webViewConfiguration.userContentController addUserScript:userScript];
        
    }
    
    
    //    if(type==1) {
    //        webview = [[WKWebView alloc] initWithFrame:self.frame configuration:webViewConfiguration];
    //        [self addSubview:webview];
    //        webview.allowsLinkPreview = NO;
    //        [self insertSubview:webview atIndex:0];
    //        //  webview .alpha=0.5;
    //    }
    
    webviews[type] = [[WKWebView alloc] initWithFrame:self.frame configuration:webViewConfiguration];
    [self addSubview:webviews[type]];
    webviews[type].allowsLinkPreview = NO;
    [self insertSubview:webviews[type] atIndex:0];
   // webviews[type] .alpha=0.5;
    
    //    if(type==2){
    //        webview_1 = [[WKWebView alloc] initWithFrame:self.frame configuration:webViewConfiguration];
    //        [self addSubview:webview_1];
    //        webview_1.allowsLinkPreview = NO;
    //        [self insertSubview:webview_1 atIndex:0];
    //    }
    
    for (NSInteger i = 0; i < webviews.count; i++) {
        webviews[i].navigationDelegate=self;
        webviews[i].UIDelegate = self;
    }
    
    //  webviews[type].navigationDelegate=self;
    //    webview_1.navigationDelegate=self;
    //    webview.tag = 1;
    //    webview_1.tag = 2;
    // webviews[type].UIDelegate=self;
    //    webview_1.UIDelegate=self;
    // 将WebView添加到当前视图的最后面
    //  [self insertSubview:webview atIndex:0];
    // 将WebView添加到当前视图的最后面
    //[self insertSubview:webview_1 atIndex:1];
    
    
    //        if (webview.superview == nil)
    //
    [self ChangeViewRect:!is_transparent];
    // [self showWebview:@"https://baidu.com"];
    
}

//- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
//  //  NSLog(@"pppppppppppppppppJavaScript 点击了链接: ");
//    if ([message.name isEqualToString:@"linkClicked"]) {
//        NSString *urlString = message.body;
//
//
//        // 在这里处理链接点击，例如加载链接
//        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
//        [webview loadRequest:request];
//    }
//}

- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures {
    if (!navigationAction.targetFrame.isMainFrame) {
        [webView loadRequest:navigationAction.request];
    }
    return nil;
}


//当前view的显/隐
-(void)showView:(BOOL)show{
    
    if (!show){
        [self hideView];
    }else{
        //[self setHidden:NO];
        
        // NSLog(@"xianshimingchuantouuuuuuuuuuuuuu1----%d", inH5ui);
        if(!inH5ui) return;
        //  NSLog(@"xianshimingchuantouuuuuuuuuuuuuu2----%d", show);
        if(is_transparent){
            webviews[0].hidden=YES;
            NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@""] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0];
            [webviews[0] loadRequest:request];
            
            [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(delayShowH5) object:nil];
            [self performSelector:@selector(delayShowH5) withObject:nil afterDelay:1.5];
        }
        
        
        [self.superview bringSubviewToFront:self];
        
        is_transparent=NO;
        if (isShowRewardBtn) {
            [rewardBtn setHidden:NO];
        } else {
            [rewardBtn setHidden:YES];
        }
        
        [self showWebview:lastUrl]; //打开webview时url为上一次
        [self ChangeViewRect:true];
        [self startFlyAnim];    //每一次显示时强行执行飞行按钮的动画
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            self .alpha=1;
        }
    }
}

//隐藏view
-(void)hideView{
    [self stopUpdate];
    
    if(!is_transparent){
        
        //        webview.hidden=YES;
        //        webview_1.hidden=YES;
        
        
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@""] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0];
        //        [webview loadRequest:request];
        //        [webview_1 loadRequest:request];
        for (NSInteger i = 0; i < webviews.count; i++) {
            webviews[i].hidden = YES;
            [ webviews[i] loadRequest:request];
        }
        [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(delayShowH5) object:nil];
        [self performSelector:@selector(delayShowH5) withObject:nil afterDelay:0.5];
    }
    is_transparent=YES;
    
    [self.superview sendSubviewToBack:self];
    
    self.userInteractionEnabled=TRUE;
    [flyBtn setHidden:YES];
    [rewardBtn setHidden:YES];
    //    Dark_stopRefeshTime=0;
    //    Dark_stopRefeshTime_1=0;
    for (NSInteger i = 0; i < Dark_stopRefeshTimes.count; i++) {
        Dark_stopRefeshTimes[i]=@(0);
    }
    
    
    for (NSInteger i = 0; i < webviews.count; i++) {
        [self showDarkWebview:i];
    }
    //    [self showDarkWebview:1];
    //    [self showDarkWebview:2];
    
    [self ChangeViewRect:false];
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        self .alpha=0;
    }
}

-(void)delayShowH5{
    //    webview.hidden=NO;
    //    webview_1.hidden=NO;
    for (NSInteger i = 0; i < webviews.count; i++) {
        webviews[i].hidden=NO;
    }
}
-(void)setInH5View:(BOOL)flag{
    //  NSLog(@"aaaaaaaaaaaaaaaaaa%d",flag);
    inH5ui=flag;
}


-(void)upDataH5times:(char*)weblink times:(int)times is_dark:(BOOL)is_dark{
    
    NSString *myNSString = [[NSString alloc] initWithUTF8String:weblink];
    if(is_dark){
        for (int counter = 0; counter < dark_url_array.count; counter++) {
            
            if(  [dark_url_array[counter][0] isEqualToString:myNSString]){
                dark_url_array[counter][2]=@(times);
                
                dark_though_rate[[dark_url_array[counter][4] intValue]-1]=@([dark_url_array[counter][3] intValue]);
                
                
                break;
            }
        }
    }
    else{
        for (int counter = 0; counter < light_url_array.count; counter++) {
            
            if(  [light_url_array[counter][0] isEqualToString:myNSString]){
                light_url_array[counter][2]=@(times);
                light_though_rate=[light_url_array[counter][3] intValue];
                // NSLog(@"[uuuuuuuuuuuuuuuuu: %s剩余的可刷新次数%u", weblink, times);
                break;
            }
        }
    }
    
    
}




- (void)timerAction:(NSTimer *)timer {
    // 定时器触发时执行的操作
    //    web_1_through_time+=0.1;
    //    web_2_through_time+=0.1;
    for (NSUInteger i = 0; i < web_through_times.count; i++) {
        web_through_times[i] = @([web_through_times[i] floatValue] + 0.1f);
       // NSLog(@"[uuuuuuuuuuuuuuuuu未穿透时间: %f",[web_through_times[i] floatValue]);
    }
    
    
    stopTouchTime+=0.1;
    for (NSInteger i = 0; i < Dark_stopRefeshTimes.count; i++) {
        Dark_stopRefeshTimes[i]=@([Dark_stopRefeshTimes[i ] floatValue ] +0.1f);
    }
    
    //    Dark_stopRefeshTime+=0.1;
    //    Dark_stopRefeshTime_1+=0.1;
    
    
    if(is_transparent){
        for(NSUInteger i=0;i<webviews.count;i++){
            if([dark_Dailyrefreshtimes[i] intValue]>0&&[Dark_stopRefeshTimes[i] floatValue]>[dark_webview_random_refresh_times[i]intValue]){
                dark_Dailyrefreshtimes[i]=@([dark_Dailyrefreshtimes[i] intValue]-1);
               // UnitySendMessage("WebviewManager", "H5AutoRefresh","dark_Dailyrefreshtimes|"+i );
                NSString *msg = [NSString stringWithFormat:@"dark_Dailyrefreshtimes|%d", i];
                UnitySendMessage("WebviewManager", "H5AutoRefresh", [msg UTF8String]);
                Dark_stopRefeshTimes[i]=@(0);
                dark_webview_random_refresh_times[i]=@([dark_H5Refreshtime[i*2] intValue] + arc4random_uniform([dark_H5Refreshtime[i*2+1] intValue]  - [dark_H5Refreshtime[i*2] intValue]  + 1));
//                NSLog(@"hhhhhhhhhhhh3333333kkkk%d",[dark_webview_random_refresh_times[0] intValue]);
//


                [self showDarkWebview:i];
                [self ChangeViewRect:false];
            }
        }
        
        //        if([dark_Dailyrefreshtimes[0]intValue]>0&&Dark_stopRefeshTime>[dark_webview_random_refresh_times      [0]intValue]){
        //            dark_Dailyrefreshtimes[0]=@([dark_Dailyrefreshtimes[0] intValue]-1);
        //            UnitySendMessage("WebviewManager", "H5AutoRefresh","dark_Dailyrefreshtimes|0" );
        //            Dark_stopRefeshTime=0;
        //            dark_webview_random_refresh_times[0]=@([dark_H5Refreshtime[0] intValue] + arc4random_uniform([dark_H5Refreshtime[1] intValue]  - [dark_H5Refreshtime[0] intValue]  + 1));
        //            NSLog(@"hhhhhhhhhhhh3333333kkkk%d",[dark_webview_random_refresh_times[0] intValue]);
        //
        //            [self showDarkWebview:0];
        //            [self ChangeViewRect:false];
        //        }
        //
        //        if([dark_Dailyrefreshtimes[1] intValue]>0&&Dark_stopRefeshTime_1>[dark_webview_random_refresh_times      [1]intValue]){
        //            dark_Dailyrefreshtimes[1]=@([dark_Dailyrefreshtimes[1] intValue]-1);
        //            UnitySendMessage("WebviewManager", "H5AutoRefresh","dark_Dailyrefreshtimes|1" );
        //            Dark_stopRefeshTime_1=0;
        //            dark_webview_random_refresh_times[1]=@([dark_H5Refreshtime[2] intValue] + arc4random_uniform([dark_H5Refreshtime[3] intValue]  - [dark_H5Refreshtime[2] intValue]  + 1));
        //            NSLog(@"hhhhhhhhhhhh3333333kkkk%d",[dark_webview_random_refresh_times[1] intValue]);
        //            [self showDarkWebview:1];
        //            [self ChangeViewRect:false];
        //        }
        
        
    }
    else{
        if(otherH5switch!=1 ) return;
        if(Dailyrefreshtimes<=0 ) return;
        if(stopTouchTime>H5Refreshtime){
            UnitySendMessage("WebviewManager", "H5AutoRefresh","Dailyrefreshtimes" );
            [self showWebview:lastUrl];
            [self ChangeViewRect:true];
            stopTouchTime=0;
            Dailyrefreshtimes--;
        }
    }
    
    
}


// 处理网页开始加载
//- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {
//    NSLog(@"WebView with tag %ld started loading", (long)webView.tag);
//    [self injectJavaScriptIntoWebView:webView]; // 在开始加载时重新注入 JavaScript
//}
//
//// 处理网页加载完成
//- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
//    NSLog(@"WebView with tag %ld finished loading", (long)webView.tag);
//    [self injectJavaScriptIntoWebView:webView]; // 在加载完成时重新注入 JavaScript
//}







- (void)yourMethodToCall {
    if(!is_transparent) {
        webviews[0].hidden=NO;
    }
    
}

//显示webview
-(void)showWebview:(NSString*)url{
    if (is_transparent) return;     //view在隐藏状态下不显示webview，因为目前只需要处理明webview 的显示。
    //  NSLog(@"xianshimingchuantouuuuuuuuuuuuuu3----%d");
    [self initWebview:0];
    float maxvalue=0;
    for (int counter = 0; counter < light_url_array.count; counter++) {
        if([light_url_array[counter][2] intValue]>0 ){
            maxvalue+=[light_url_array[counter][1] floatValue];
        }
        
    }
    float random3  ;
    float rate=0;
    if(maxvalue>0){
        random3=arc4random_uniform(maxvalue);
        for (int counter = 0; counter < light_url_array.count; counter++) {
            if([light_url_array[counter][2] intValue]==0) continue;
            float myFloat = [light_url_array[counter][1] floatValue];
            light_though_rate=[light_url_array[counter][3] intValue];
            rate+=myFloat;
            if(random3<=rate){
                url=light_url_array[counter][0];
                light_url_array[counter][2]=@([light_url_array[counter][2] floatValue]-1);
                break;
            }
        }
    }
    else{
        random3=arc4random_uniform(100);
        for (int counter = 0; counter < light_url_array.count; counter++) {
            float myFloat = [light_url_array[counter][1] floatValue];
            light_though_rate=[light_url_array[counter][3] intValue];
            rate+=myFloat;
            if(random3<=rate){
                url=light_url_array[counter][0];
                break;
            }
        }
    }
    // NSLog(@"xianshimingchuantouuuuuuuuuuuuuu3----%@",url);
    UnitySendMessage("WebviewManager", "SendH5Event", "test");
    stopTouchTime=0;
    //@"https://tool.lu/timestamp/?ivk_sa=1023231z"@"https://fanyi.baidu.com/
    if(url.length!=0) webview_url=url;
    else return;
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] ];
    [webviews[0] loadRequest:request];
    webview_IsCLickAd=YES;
    if (webviews[0].superview == nil)
        [self insertSubview:webviews[0] atIndex:0];
    UnitySendMessage("WebviewManager", "H5AutoRefresh",[[url stringByAppendingString:@"|h5"] UTF8String]);
}


-(void)showDarkWebview:(int)type{
    if(!is_gift) return;
    [self initWebview:type];
    NSString* url=@"";
    UnitySendMessage("WebviewManager", "SendH5Event", "test");
    float maxvalue=0;
    float random3  ;
    float rate=0;
    
    
    
    for (int counter = 0; counter < dark_url_array.count; counter++) {
        if([dark_url_array[counter][2] intValue]>0 ){
            if([dark_url_array[counter][4] intValue]!=(type+1) ) continue;
            maxvalue+=[dark_url_array[counter][1] floatValue];
        }
        
    }
    
    if(maxvalue>0){
        random3=arc4random_uniform(maxvalue);
        for (int counter = 0; counter < dark_url_array.count; counter++) {
            if([dark_url_array[counter][2] intValue]<=0) continue;
            if([dark_url_array[counter][4] intValue]!=(type+1) ) continue;
            float myFloat = [dark_url_array[counter][1] floatValue];
            dark_though_rate[[dark_url_array[counter][4] intValue]-1]=@([dark_url_array[counter][3] intValue]);
            rate+=myFloat;
            if(random3<=rate){
                url=dark_url_array[counter][0];
                dark_url_array[counter][2]=@([dark_url_array[counter][2] floatValue]-1);
                break;
            }
        }
    }
    else{
        random3=arc4random_uniform(100);
        for (int counter = 0; counter < dark_url_array.count; counter++) {
            if([dark_url_array[counter][4] intValue]!=(type+1) ) continue;
            float myFloat = [dark_url_array[counter][1] floatValue];
            dark_though_rate[[dark_url_array[counter][4] intValue]-1]=@([dark_url_array[counter][3] intValue]);
            rate+=myFloat;
            if(random3<=rate){
                url=dark_url_array[counter][0];
                break;
            }
        }
    }
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
    if(url.length!=0) webview_url=url;
    else return;
    // NSLog(@"33333333333333333%@",url);
    webview_IsCLickAd=NO;
    [webviews[type] loadRequest:request];
    
    
    
    
    
    //
    //    if(type==1){
    //
    //        for (int counter = 0; counter < dark_url_array.count; counter++) {
    //            if([dark_url_array[counter][2] intValue]>0 ){
    //                if([dark_url_array[counter][4] intValue]!=1 ) continue;
    //                maxvalue+=[dark_url_array[counter][1] floatValue];
    //            }
    //
    //        }
    //
    //        if(maxvalue>0){
    //            random3=arc4random_uniform(maxvalue);
    //            for (int counter = 0; counter < dark_url_array.count; counter++) {
    //                if([dark_url_array[counter][2] intValue]<=0) continue;
    //                if([dark_url_array[counter][4] intValue]!=1 ) continue;
    //                float myFloat = [dark_url_array[counter][1] floatValue];
    //                dark_though_rate[[dark_url_array[counter][4] intValue]-1]=@([dark_url_array[counter][3] intValue]);
    //                rate+=myFloat;
    //                if(random3<=rate){
    //                    url=dark_url_array[counter][0];
    //                    dark_url_array[counter][2]=@([dark_url_array[counter][2] floatValue]-1);
    //                    break;
    //                }
    //            }
    //        }
    //        else{
    //            random3=arc4random_uniform(100);
    //            for (int counter = 0; counter < dark_url_array.count; counter++) {
    //                if([dark_url_array[counter][4] intValue]!=1 ) continue;
    //                float myFloat = [dark_url_array[counter][1] floatValue];
    //                dark_though_rate[[dark_url_array[counter][4] intValue]-1]=@([dark_url_array[counter][3] intValue]);
    //                rate+=myFloat;
    //                if(random3<=rate){
    //                    url=dark_url_array[counter][0];
    //                    break;
    //                }
    //            }
    //        }
    //        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
    //        if(url.length!=0) webview_url=url;
    //        else return;
    //        // NSLog(@"33333333333333333%@",url);
    //        webview_IsCLickAd=NO;
    //        [webview loadRequest:request];
    //
    //
    //
    //    }
    //    else if(type==2){
    //        //        if(!isMultiView) return;
    //        for (int counter = 0; counter < dark_url_array.count; counter++) {
    //            if([dark_url_array[counter][2] intValue]>0 ){
    //                if([dark_url_array[counter][4] intValue]!=2 ) continue;
    //                maxvalue+=[dark_url_array[counter][1] floatValue];
    //            }
    //
    //        }
    //
    //        rate=0;
    //        if(maxvalue>0){
    //            random3=arc4random_uniform(maxvalue);
    //            for (int counter = 0; counter < dark_url_array.count; counter++) {
    //                if([dark_url_array[counter][2] intValue]<=0) continue;
    //                if([dark_url_array[counter][4] intValue]!=2 ) continue;
    //                float myFloat = [dark_url_array[counter][1] floatValue];
    //                //                dark_though_rate=[dark_url_array[counter][3] intValue];
    //                dark_though_rate[[dark_url_array[counter][4] intValue]-1]=@([dark_url_array[counter][3] intValue]);
    //                rate+=myFloat;
    //                if(random3<=rate){
    //                    url=dark_url_array[counter][0];
    //                    dark_url_array[counter][2]=@([dark_url_array[counter][2] floatValue]-1);
    //                    break;
    //                }
    //            }
    //        }
    //        else{
    //            random3=arc4random_uniform(100);
    //            for (int counter = 0; counter < dark_url_array.count; counter++) {
    //                if([dark_url_array[counter][4] intValue]!=2 ) continue;
    //                float myFloat = [dark_url_array[counter][1] floatValue];
    //                dark_though_rate[[dark_url_array[counter][4] intValue]-1]=@([dark_url_array[counter][3] intValue]);
    //                rate+=myFloat;
    //                if(random3<=rate){
    //                    url=dark_url_array[counter][0];
    //                    break;
    //                }
    //            }
    //        }
    //
    //
    //        if(url.length!=0) webview_1_url=url;
    //        else return;
    //        NSMutableURLRequest *request_1 = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] ];
    //        webview_1_IsCLickAd=NO;
    //        [webview_1 loadRequest:request_1];
    //        // NSLog(@"333333333333333331%@",url);
    //    }
    
    UnitySendMessage("WebviewManager", "H5AutoRefresh",[[url stringByAppendingString:@"|h6"] UTF8String]);
    
}
//隐藏webview
-(void)hideWebview{
    [webviews[0] removeFromSuperview];
}

//设置飞行进度条进度
-(void)setIconProgress:(float)value{
    [bar setProgress:value];
    // NSLog(@"bbbbbbbbbbbbbbbbbbbbb%f",value);
    if(value>=1){
        UnitySendMessage("WebviewManager", "TouchClickPoint", "finish");
    }
}
//初始化飞行按钮
-(void)initFlyBtn{
    
    flyBtn = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    [self addSubview:flyBtn];
    
    //飞行闪光底图
    flyBg = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"7"]];
    flyBg.frame = CGRectMake(0, 0, 100, 100);
    [flyBtn addSubview:flyBg];
    [flyBtn setUserInteractionEnabled:NO];
    
    UIImageView* icon = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"3"]];
    icon.frame = CGRectMake(30, 30, 139*0.35, 97*0.35);
    [flyBtn addSubview:icon];
    
    //飞行点位
    float sw = self.frame.size.width;
    float sh = self.frame.size.height;
    
    points[0] = CGPointMake(sw * 0.5,0);
    points[1] = CGPointMake(-20,sh * 0.25);
    points[2] = CGPointMake(sw - flyBtn.frame.size.width+20,sh * 0.5);
    points[3] = CGPointMake(-20,sh - 220);
    
}

//执行飞行按钮的动画
-(void)startFlyAnim{
    
    if (!isShowFlyBtn) {
        flyBtn.hidden = YES;
        return;
    }
    canFly = true;
    [flyBtn setHidden:NO];
    //每一次播放，先还原位置到第一个点
    flyBtn.transform = CGAffineTransformMakeTranslation(points[0].x, points[0].y);
    pointIndex = 0;
    [self flyAnim];
    //    float random3 = arc4random_uniform(100) ;
    //    if(random3<flyCtRate){
    //        [flyBtn setUserInteractionEnabled:NO];
    //    }
    //    else {
    //        [flyBtn setUserInteractionEnabled:YES];
    //    }
    
}

//停止飞行按钮的动画
-(void)stopFlyAnim{
    canFly = false;
    [self stopUpdate];
    [flyBtn setHidden:YES];
    
}

//飞行动画逻辑
-(void)flyAnim{
    if (!canFly) return;
    int pointsLen = sizeof(points)/ sizeof(points[0]);
    pointIndex = ++pointIndex % pointsLen;
    
    targetPoint = points[pointIndex];
    //NSLog(@"pointIndex: %ld", (long)pointIndex);
    [flyBtn setHidden:NO];
    
    if (updateTimer == nil){
        updateTimer = [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(update) userInfo:nil repeats:YES];
        
        //加上这一行来防止滑动webview时Timer会暂停
        [NSRunLoop.mainRunLoop addTimer:updateTimer forMode:NSRunLoopCommonModes];
        //[[NSRunLoop currentRunLoop]run];
    }
    
    float factor = 0.006;   //飞行速度的值
    delta = CGPointMake((targetPoint.x - flyBtn.frame.origin.x) * factor, (targetPoint.y - flyBtn.frame.origin.y) * factor);
}

//停止Timer的update
-(void)stopUpdate{
    //    while (updateTimer.valid && [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]);
    if (updateTimer != nil){
        [updateTimer invalidate];
        updateTimer = nil;
    }
}

//更新逻辑
-(void)update{
    if ([self CGPointDistance:flyBtn.frame.origin to:targetPoint] < 2){ //按钮移动的距离小于目标的n值来判断是否达到目标点
        [self flyAnim];  //递归飞往下一个点
        return;
    }
    flyBtn.transform = CGAffineTransformMakeTranslation(flyBtn.frame.origin.x + delta.x, flyBtn.frame.origin.y + delta.y);
    bgAngle = bgAngle + 0.03; //飞行动画旋转速度
    flyBg.transform = CGAffineTransformMakeRotation(bgAngle);
}

//计算两个点之间的算法
-(CGFloat) CGPointDistanceSquared:(CGPoint)from to: (CGPoint)to{
    return (from.x - to.x) * (from.x - to.x) + (from.y - to.y) * (from.y - to.y);
}

//计算两个点之间的算法
-(CGFloat) CGPointDistance:(CGPoint)from to: (CGPoint)to{
    return sqrt([self CGPointDistanceSquared:from to:to]);
}


//- (void)handleTap:(UITapGestureRecognizer *)sender {
//    CGPoint location = [sender locationInView:webview];
//    NSLog(@"Tap detected at location: %@", NSStringFromCGPoint(location));
//
//    // 模拟点击事件传递给第二个 WKWebView
//    NSString *js = [NSString stringWithFormat:@"\
//    var element = document.elementFromPoint(%f, %f);\
//    if (element) {\
//        var elementType = element.tagName.toLowerCase();\
//        var elementName = element.getAttribute('id') || element.getAttribute('class') || 'no-name';\
//        console.log('Element info: ' + elementType + ' ' + elementName);\
//        var events = ['mousedown', 'mouseup', 'click'];\
//        events.forEach(function(eventType) {\
//            var event = new MouseEvent(eventType, {\
//                bubbles: true,\
//                cancelable: true,\
//                view: window,\
//                clientX: %f,\
//                clientY: %f\
//            });\
//            element.dispatchEvent(event);\
//        });\
//        elementType + ' ' + elementName;\
//    } else {\
//        'no-element';\
//    }\
//    ", location.x, location.y, location.x, location.y];
//
//    [webview evaluateJavaScript:js completionHandler:^(id result, NSError *error) {
//        if (error) {
//           // NSLog(@"Error simulating mouse events111111111: %@", error);
//        } else {
//           // NSLog(@"Element info111111111: %@",result);
////
//            // 判断 result 是否包含 iframe 字符串
//            if ([result isKindOfClass:[NSString class]] && [(NSString *)result containsString:@"iframe"]) {
//               // NSLog(@"Result contains 'iframe' string");
//                if(self->is_transparent)   {
//                  //  NSLog(@"Element info11111111122223333: %d", Dark_stopRefeshTime);
//                    UnitySendMessage("WebviewManager", "ClickAdEvent", [[webview_url stringByAppendingString:@"|h6"] UTF8String]);
//                   // Dark_stopRefeshTime-=[ClickAddtime[0] intValue];
//                    if(!webview_IsCLickAd)   Dark_stopRefeshTime-= [self randomValueBetween];
//                      webview_IsCLickAd=YES;
//                  //  NSLog(@"Element info11111111122223333: %d", Dark_stopRefeshTime);
//                }
//                else {
//                    UnitySendMessage("WebviewManager", "ClickAdEvent", [[webview_url stringByAppendingString:@"|h5"] UTF8String]);
//                }
//
//            }
////            else {
////                NSLog(@"Result does not contain 'iframe' string");
////            }
//        }
//    }];
//}
- (int)randomValueBetween{
    int lowerBound =[ClickAddtime[0] intValue];
    int upperBound =[ClickAddtime[1] intValue];
    return lowerBound + arc4random_uniform((upperBound - lowerBound + 1));
}


//- (void)handleTap_1:(UITapGestureRecognizer *)sender {
//    CGPoint location = [sender locationInView:webview_1];
//    NSLog(@"Tap detected at location: %@", NSStringFromCGPoint(location));
//
//    // 模拟点击事件传递给第二个 WKWebView
//    NSString *js = [NSString stringWithFormat:@"\
//    var element = document.elementFromPoint(%f, %f);\
//    if (element) {\
//        var elementType = element.tagName.toLowerCase();\
//        var elementName = element.getAttribute('id') || element.getAttribute('class') || 'no-name';\
//        console.log('Element info: ' + elementType + ' ' + elementName);\
//        var events = ['mousedown', 'mouseup', 'click'];\
//        events.forEach(function(eventType) {\
//            var event = new MouseEvent(eventType, {\
//                bubbles: true,\
//                cancelable: true,\
//                view: window,\
//                clientX: %f,\
//                clientY: %f\
//            });\
//            element.dispatchEvent(event);\
//        });\
//        elementType + ' ' + elementName;\
//    } else {\
//        'no-element';\
//    }\
//    ", location.x, location.y, location.x, location.y];
//
//    [webview_1 evaluateJavaScript:js completionHandler:^(id result, NSError *error) {
//        if (error) {
//            // NSLog(@"Error simulating mouse events1111111112222: %@", error);
//        } else {
//            //  NSLog(@"Element info1111111112222: %@", result);
//
//            // 判断 result 是否包含 iframe 字符串
//            if ([result isKindOfClass:[NSString class]] && [(NSString *)result containsString:@"iframe"]) {
//
//                // NSLog(@"Element info11111111122223333: %d", Dark_stopRefeshTime_1);
//                UnitySendMessage("WebviewManager", "ClickAdEvent", [[webview_1_url stringByAppendingString:@"|h6"] UTF8String]);
//                if(!webview_1_IsCLickAd)  Dark_stopRefeshTime_1-=[self randomValueBetween];
//                webview_1_IsCLickAd=YES;
//                // NSLog(@"Element info11111111122223333: %d", Dark_stopRefeshTime_1);
//            }
//            //            else {
//            //                NSLog(@"Result does not contain 'iframe' string");
//            //            }
//        }
//    }];
//}


//hitTest 能在不接受点击事件的view也能捕获多点位的信息
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    
    
    
    hitTestLocation = point;
    //  NSLog(@"Hit point11111110 x: %f, y:%f", hitTestLocation.x, hitTestLocation.y);
    //    if(inH5ui&& hitTestLocation.y<100){
    //        hitTestLocation.y+=66;
    //    }
    //
    
    if (canCheckTouch){
        //NSLog(@"Hit point11111112 x: %f, y:%f", hitTestLocation.x, hitTestLocation.y);
        [self checkPointInsideBtn:hitTestLocation];
        [self delayInvoke:0.3 cb:^(void){ self->canCheckTouch = YES; }];//加个定时器来防止出发多次检测点击
        CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;
        // 获取屏幕高度
        CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
        NSString *jsCode = [NSString stringWithFormat:@"%f|%f",hitTestLocation.x/screenWidth, hitTestLocation.y/screenHeight];
        if (dark_though){
            // NSLog(@"Hit point1111113 x: %f, y:%f", hitTestLocation.x, hitTestLocation.y);
            UnitySendMessage("WebviewManager", "TouchClickPoint",[jsCode UTF8String]);
            
        }
        
        
    }
    canCheckTouch = false;
    //    if(is_transparent&&dark_though){
    //        if(point.y>self.frame.size.height){
    //            point.y-=top_;
    //        }
    //    }
    //    if(tapGesture==nil) {
    //        tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
    //
    //        tapGesture_1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap_1:)];
    //
    //    }
    
    UIView* touchedView;
    int click_web=0;
    
    if(!dark_though){
        touchedView=[super hitTest:point withEvent:event];
    }
    else{
        //        NSLog(@"[ggggggggggggggggggg21: %@剩余的可刷新次数", web_through_array[0]);
        //        NSLog(@"[ggggggggggggggggggg21: %@剩余的可刷新次数", web_through_array[1]);
        //
        float random_ = arc4random_uniform(100) ;
        int add_value=0;
        //  random_=0;//zhushi
        if(!is_transparent){
            touchedView=[webviews[0] hitTest:point withEvent:event];
        }
        else{
            for(NSUInteger i=0;i<web_through_array.count;i++){
                if(random_<add_value+[web_through_array[i] intValue]){
                    //  NSLog(@"[ggggggggggggggggggg21: %lu webviews的长度", (unsigned long)webviews.count);
                    touchedView=[webviews[i] hitTest:point withEvent:event];
                    click_web=i;
                    break;
                }
                else add_value+=[web_through_array[i] intValue];
            }
        }
        //
        //        if(!is_transparent|| random_<[web_through_array[0] intValue]){
        //            // if(true){
        //
        //            touchedView=[webview hitTest:point withEvent:event];
        //            //            tapGesture.delegate=touchedView;
        //            //            [touchedView addGestureRecognizer:tapGesture];
        //        }
        //        else {
        //            touchedView=[webview_1 hitTest:point withEvent:event];
        //            click_web=2;//quxiaozhushi
        //            //            tapGesture_1.delegate=touchedView;
        //            //            [touchedView addGestureRecognizer:tapGesture_1];
        //        }
    }
    
    
    //    [self.webView2 addGestureRecognizer:tapGesture];
    
    
    if(is_transparent&&dark_though){//暗穿透
        
        float random3 = arc4random_uniform(100) ;
        //  NSLog(@"eeeeeeeeeeeeeeeeeee%i",dark_though_rate);
        //  random3=0;//zhushi
        // NSLog(@"Point coordinates: max = %f,",self.bounds.size.width);
        
        if(isMultiView>1)
        {
            
            if(random3< [dark_though_rate[click_web] intValue]){
                //  NSLog(@"触发点击:%f",web_1_through_time);
                // NSLog(@"eeeeeeeeeeeeeeeeeee:%f",web_1_disable_time);
                if ([web_through_times[click_web] floatValue] < 0) {
                    //   NSLog(@"触发点击，时间小于0:%f",web_1_through_time);
                    return touchedView;
                }
                else   if([web_through_times[click_web] floatValue] <[web_disable_times[click_web] floatValue] ){
                    //   NSLog(@"触发点击，时间小于停用时间:%f",web_1_through_time);
                    //                        webview.userInteractionEnabled = NO;
                    //                        [self delayInvoke:0.2 cb:^(void){ webview.userInteractionEnabled = YES; }];
                    
                    return  nil;
                }
                else {
                    //                        web_1_disable_time=[ClickAddtime[0] floatValue] + ([ClickAddtime[1] floatValue] - [ClickAddtime[0] floatValue]) * drand48();
                    web_disable_times[click_web]=@([ClickAddtime[click_web] floatValue]);
                    web_through_times[click_web]  =@(-0.05);
                    // NSLog(@"触发点击，时间设置为-0.5:%f",web_1_through_time);
                    return touchedView;
                }
            }
            else return  nil;
            
            
            
            
            //            if(click_web==1){
            //                if(random3< [dark_though_rate[0] intValue]){
            //                    //  NSLog(@"触发点击:%f",web_1_through_time);
            //                    // NSLog(@"eeeeeeeeeeeeeeeeeee:%f",web_1_disable_time);
            //                    if(web_1_through_time<0){
            //                        //   NSLog(@"触发点击，时间小于0:%f",web_1_through_time);
            //                        return touchedView;
            //                    }
            //                    else   if(web_1_through_time<web_1_disable_time){
            //                        //   NSLog(@"触发点击，时间小于停用时间:%f",web_1_through_time);
            //                        //                        webview.userInteractionEnabled = NO;
            //                        //                        [self delayInvoke:0.2 cb:^(void){ webview.userInteractionEnabled = YES; }];
            //
            //                        return  nil;
            //                    }
            //                    else {
            //                        //                        web_1_disable_time=[ClickAddtime[0] floatValue] + ([ClickAddtime[1] floatValue] - [ClickAddtime[0] floatValue]) * drand48();
            //                        web_1_disable_time=[ClickAddtime[0] floatValue];
            //                        web_1_through_time=-0.05;
            //                        // NSLog(@"触发点击，时间设置为-0.5:%f",web_1_through_time);
            //                        return touchedView;
            //                    }
            //                }
            //                else return  nil;
            //            }
            //            else{
            //                if(random3< [dark_though_rate[1] intValue]){
            //                    if(web_2_through_time<0){
            //                        return touchedView;
            //                    }
            //                    if(web_2_through_time<web_2_disable_time)return  nil;
            //                    else {
            //                        //                        web_2_disable_time=[ClickAddtime[0] floatValue] + ([ClickAddtime[1] floatValue] - [ClickAddtime[0] floatValue]) * drand48();
            //                        web_2_disable_time=[ClickAddtime[1] floatValue] ;
            //                        web_2_through_time=-0.1;
            //                        return touchedView;
            //                    }
            //                }
            //                else return  nil;
            //            }
        }
        else{
            
            //                if(random3< [dark_though_rate[0] intValue]){
            //                    return touchedView;
            //                }
            //                else return  nil;
            
            
            if(random3< [dark_though_rate[0] intValue]){
                if([web_through_times[0] floatValue]<0){
                    return touchedView;
                }
                if([web_through_times[0] floatValue]<[web_disable_times[0] floatValue])return  nil;
                else {
                    web_disable_times[0]=@([ClickAddtime[0] floatValue]);
                    //                    web_1_through_time=-0.1;
                    web_through_times[0]=@(-0.05);
                    return touchedView;
                }
            }
            else return  nil;
        }
        
        
    }
    else if(isClickProgress&&!is_transparent){//明穿透,点击能量环时
        float random3 = arc4random_uniform(100) ;
        //NSLog(@"eeeeeeeeeeeeeeeeeee%i",light_though_rate);
        if(random3< light_though_rate){
            return touchedView;
        }
        else return  nil;
        
    }
    else if(isClickFly&&!is_transparent){
        float random3 = arc4random_uniform(100) ;
        // NSLog(@"eeeeeeeeeeeeeeeeeee%i",light_though_rate);
        if(random3< flyCtRate){
            return touchedView;
        }
        else return  nil;
        
    }
    else  return touchedView;
}

//设置全屏
-(void)setFullScreen{
    self.frame = self.bounds;
}

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
    if (navigationAction.navigationType == WKNavigationTypeLinkActivated && !navigationAction.targetFrame.isMainFrame) {
        decisionHandler(WKNavigationActionPolicyCancel);
        [webView loadRequest:navigationAction.request];
    } else {
        decisionHandler(WKNavigationActionPolicyAllow);
    }
}

- (void)addH5Field:(int)field1 field2:(int)field2 field3:(int)field3 field4:(int)field4 field5:(int)field5 field6:(char* )darkWVRefreshtime_str field7:(char* )darkWVDailyrefreshtimes_str dark_url:(char*)dark_url light_url:(char*)light_url field8:(BOOL )field8 web_through_probability:(char*)web_through_probability click_add_time:(char*)click_add_time{
    // 在这里实现方法
    flyCtRate=field1;//飞行道具的穿透概率
    otherH5switch=field2;
    H5Refreshtime=field3;
    Dailyrefreshtimes=field4;
    is_gift=field8;
    
    //dark_though_rate=field5;
    //    dark_H5Refreshtime=field6;
    //    dark_Dailyrefreshtimes=field7;
    //    NSLog(@"[ggggggggggggggggggg21: %@剩余的可刷新次数", dark_H5Refreshtime[0]);
    if(strlen(darkWVRefreshtime_str) != 0){
        //        NSString *objcString = [NSString stringWithUTF8String:darkWVRefreshtime_str];
        //        NSArray *stringArray = [objcString componentsSeparatedByString:@"|"];
        //        //NSLog(@"hhhhhhhhhhhh%@",objcString);
        //        NSMutableArray *intArray = [NSMutableArray array];
        //
        //        for (NSString *str in stringArray) {
        //            [intArray addObject:@([str intValue])];
        //        }
        //
        //        dark_H5Refreshtime=intArray;
        //        NSLog(@"hhhhhhhhhhhh3333333kkkk%d",[dark_H5Refreshtime[0] intValue]);
        //        NSLog(@"hhhhhhhhhhhh3333333kkkk%d",[dark_H5Refreshtime[1] intValue]);
        //        dark_webview1_random_refresh_time=[dark_H5Refreshtime[0] intValue] + arc4random_uniform([dark_H5Refreshtime[1] intValue]  - [dark_H5Refreshtime[0] intValue]  + 1);
        //        dark_webview2_random_refresh_time=[dark_H5Refreshtime[2] intValue] + arc4random_uniform([dark_H5Refreshtime[3] intValue]  - [dark_H5Refreshtime[2] intValue]  + 1);
        //
        if (strlen(darkWVRefreshtime_str) != 0) {
            NSString *objcString = [NSString stringWithUTF8String:darkWVRefreshtime_str];
            NSArray *stringArray = [objcString componentsSeparatedByString:@"|"];
            NSMutableArray *intArray = [NSMutableArray array];
            
            for (NSString *str in stringArray) {
                [intArray addObject:@([str intValue])];
            }
            
            dark_H5Refreshtime = intArray;
            
            // 每两个元素表示一个区间 [low, high]
            for (NSInteger i = 0; i + 1 < dark_H5Refreshtime.count; i += 2) {
                int low  = [dark_H5Refreshtime[i] intValue];
                int high = [dark_H5Refreshtime[i+1] intValue];
                int randomValue = low + arc4random_uniform(high - low + 1);
                [dark_webview_random_refresh_times addObject:@(randomValue)];
            }
            
            // 打印所有随机结果
            NSLog(@"随机刷新时间数组: %@", dark_webview_random_refresh_times);
        }
    }
    if(strlen(darkWVDailyrefreshtimes_str) != 0){
        
        NSLog(@"每日刷新: %s", darkWVDailyrefreshtimes_str);
        NSString *objcString = [NSString stringWithUTF8String:darkWVDailyrefreshtimes_str];
        NSArray *stringArray = [objcString componentsSeparatedByString:@"|"];
        NSMutableArray *intArray = [NSMutableArray array];
        
        for (NSString *str in stringArray) {
            [intArray addObject:@([str intValue])];
        }
        dark_Dailyrefreshtimes=intArray;
    }
    if(strlen(dark_url) != 0){
        NSString *objcString = [NSString stringWithUTF8String:dark_url];
        NSMutableArray *dynamicArray = [NSMutableArray array];
        // NSLog(@"hhhhhhhhhhhh%@",objcString);
        NSArray *stringArray = [objcString componentsSeparatedByString:@"|"];
        for (NSUInteger i = 0; i < [stringArray count]; i++) {
            //NSLog(@"hhhhhhhhhhhh%@",stringArray[i]);
            NSArray *stringArray_child = [stringArray[i] componentsSeparatedByString:@"#"];
            
            [dynamicArray addObject:stringArray_child];
        }
        dark_url_array=dynamicArray;
        int type_=-1;
        
        if(webviews.count<=0){
            isMultiView=0;
            for (int counter = 0; counter < dark_url_array.count; counter++) {
                
                if([dark_url_array[counter][4] intValue]!=type_ ) {
                    isMultiView++;
                    type_=[dark_url_array[counter][4] intValue];
                    [dark_though_rate addObject:@0];
                    
                    [web_through_times addObject:@0];
                    [web_disable_times addObject:@0];
                    [Dark_stopRefeshTimes addObject:@0];
                    [offset_y addObject:@([dark_url_array[counter][5] intValue])];
                    // [webviews addObject:[NSNull null]];
                    WKWebView *wv = [[WKWebView alloc] initWithFrame:CGRectZero];
                    [webviews addObject:wv];
                    NSLog(@"hhhhhhhhhhhh添加了一次%d",type_);
                }//判断是否为多webview显示
            }
        }
    }
    if(strlen(light_url) != 0){
        NSString *objcString = [NSString stringWithUTF8String:light_url];
        NSMutableArray *dynamicArray = [NSMutableArray array];
        //NSLog(@"hhhhhhhhhhhh%@",objcString);
        NSArray *stringArray = [objcString componentsSeparatedByString:@"|"];
        for (NSUInteger i = 0; i < [stringArray count]; i++) {
            //NSLog(@"hhhhhhhhhhhh%@",stringArray[i]);
            NSArray *stringArray_child = [stringArray[i] componentsSeparatedByString:@"#"];
            
            [dynamicArray addObject:stringArray_child];
        }
        light_url_array=dynamicArray;
    }
    if(strlen(web_through_probability) != 0){
        NSString *objcString = [NSString stringWithUTF8String:web_through_probability];
        NSArray *stringArray = [objcString componentsSeparatedByString:@"|"];
        NSMutableArray *intArray = [NSMutableArray array];
        
        for (NSString *str in stringArray) {
            [intArray addObject:@([str intValue])];
        }
        web_through_array=intArray;
    }
    if(strlen(click_add_time) != 0){
      //  NSLog(@"aaaaaaaaaaaaaaaaaattttttt%c",click_add_time);
        NSString *objcString = [NSString stringWithUTF8String:click_add_time];
        NSArray *stringArray = [objcString componentsSeparatedByString:@"|"];
        NSMutableArray *intArray = [NSMutableArray array];
        
        for (NSString *str in stringArray) {
            [intArray addObject:@([str floatValue])];
        }
        ClickAddtime=intArray;
    }

}

//设置view的padding
-(void)setViewPadding:(CGRect)rect{
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    NSLog(@"screenRect h:%f", screenRect.size.height);
    float left = rect.origin.x;
    
    float top = rect.origin.y*screenRect.size.height;
    
    //   float right = screenRect.size.width - rect.size.width;
    
    float bottom = rect.size.height*screenRect.size.height;
    
    float h = screenRect.size.height - top - bottom;
    //NSLog(@"left:%f, top: %f, right: %f, height: %f", left, top, right, h);
    self.frame = CGRectMake(0, 0,screenRect.size.width, screenRect.size.height);
    top_=top;
    height_=h;
    //    webview.frame = CGRectMake(0, 0, self.frame.size.width/2, self.frame.size.height);
    //    webview_1.frame = CGRectMake(self.frame.size.width/2, 0, self.frame.size.width/2, self.frame.size.height);
}
-(void)ChangeViewRect:(BOOL)is_light{
    if(is_light){
        webviews[0].frame = CGRectMake(0, top_, self.frame.size.width, height_);
        for(NSUInteger i=1;i<webviews.count;i++){
            webviews[i].frame = CGRectMake(0, 0,0, 0);
        }
        
    }
    else{
        for(NSUInteger i=0;i<webviews.count;i++){
            webviews[i].frame = CGRectMake(0, [offset_y[i] intValue], self.frame.size.width, self.frame.size.height);
        }
        //        if(isMultiView>1){
        //            webview.frame = CGRectMake(0, offset_y, self.frame.size.width, self.frame.size.height);
        //            webview_1.frame = CGRectMake(0,offset_y1, self.frame.size.width, self.frame.size.height);
        //            //              webview.frame = CGRectMake(0, offset_y, self.frame.size.width-100, self.frame.size.height);
        //            //           webview_1.frame = CGRectMake(100,offset_y1, self.frame.size.width-100, self.frame.size.height);
        //        }
        //        else{
        //            webview.frame = CGRectMake(0,offset_y, self.frame.size.width, self.frame.size.height);
        //            webview_1.frame = CGRectMake(0, offset_y1,0, 0);
        //        }
    }
}

-(void)SetDarkThough:(BOOL)though{
    dark_though=though;
    [self setHidden:!though];
}

-(void)setViewBtn:(CGRect)rect{
    
    
    if(is_first_btn) return;
    rewardBtn = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1"]];
    rewardBtn.frame = CGRectMake(self.bounds.size.width - rect.origin.x, rect.origin.y, 60, 60);
    [self addSubview:rewardBtn];
    
    //圈圈背景图
    UIImageView* fillBack = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"8"]];
    fillBack.frame = CGRectMake(0,0, rewardBtn.frame.size.width, rewardBtn.frame.size.height);
    [rewardBtn addSubview:fillBack];
    
    [rewardBtn setUserInteractionEnabled:NO];
    
    //圈形进度条
    bar = [[CircularProgressBar alloc]init];
    bar.frame = CGRectMake(0,0, rewardBtn.frame.size.width, rewardBtn.frame.size.height);
    bar.bounds = rewardBtn.bounds;
    //bar.backgroundColor = UIColor.greenColor;
    [bar updateUI];
    
    [rewardBtn addSubview:bar];
    //[self setBackgroundColor:UIColor.orangeColor];
    
    //icon图
    UIImageView* icon = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"30"]];
    icon.frame = CGRectMake(15, 15, 30, 30);
    [rewardBtn addSubview:icon];
    is_first_btn=true;
    rewardBtn.hidden=YES;
    
}
//检测一个点是否在某个按钮里
-(void)checkPointInsideBtn:(CGPoint)point{
    //点是否在飞行按钮里
    //if(!self.isHidden) stopTouchTime=0;
    if (!flyBtn.isHidden && CGRectContainsPoint(flyBtn.frame, point)){
        //  NSLog(@"Inside flyBtn");
        //避免手指按下立马出发点击事件
        [self delayInvoke:0.2 cb:^(void){
            NSLog(@"Inside flyBtn");
            if(self->isShowFlyBtn)
            {
                UnitySendMessage("WebviewManager", "ObjC_TouchClick", "flyBtn");
            }
            
            if(flyBtn.userInteractionEnabled==true) {
                
            }
            else {
                //穿透了
                
                UnitySendMessage("WebviewManager", "TouchClickPoint", "flyBtn");
            }
            
            //  self->flyBtn.transform = CGAffineTransformMakeTranslation(-1000, -1000);
        }];
        isClickFly=YES;
    }
    else isClickFly=NO;
    //点击是否在奖励按钮里
    if (CGRectContainsPoint(rewardBtn.frame, point)){
        //NSLog(@"Inside rewardBtn");
        [self delayInvoke:0.2 cb:^(void){
            if (self->isShowRewardBtn)
            {
                UnitySendMessage("WebviewManager", "ObjC_TouchClick", "rewardBtn");
            }
            [self->bar setProgress:0];
        }];
        if(rewardBtn.userInteractionEnabled==true) {
            
        }
        else {
            //穿透了
            UnitySendMessage("WebviewManager", "TouchClickPoint", "rewardBtn");
            [bar setProgress:0];
        }
        isClickProgress=YES;
    }
    else isClickProgress=NO;
    
}



//设置可穿透字段
-(void)enableCT:(BOOL)flag{
    // NSLog(@"Native enableCT: %d",flag);
    canCT = flag;
    [rewardBtn setUserInteractionEnabled:!flag];
    //[flyBtn setUserInteractionEnabled:!flag];
}


-(void)setClickView{
    
    in_game=YES;
}

//延迟执行逻辑
-(void)delayInvoke:(float)delay cb:(dispatch_block_t)cb{
    NSTimeInterval delayInSeconds = delay;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), cb);
}

//飞行按钮隐/藏
-(void)showFlyBtn:(BOOL)flag{
    //NSLog(@"showFlyBtn: %d", flag);
    //[flyBtn setHidden:!flag];
    if (flag){
        [self startFlyAnim];
    }else{
        [self stopFlyAnim];
    }
}

-(void)setFlyBtnTag:(BOOL)isShow{
    if(!is_gift) isShowFlyBtn = NO;
    else isShowFlyBtn = isShow;
}

-(void)setRewardBtnTag:(BOOL)isShow{
    if(!is_gift) isShowRewardBtn = NO;
    else isShowRewardBtn = isShow;
}

-(void)SetOffset:(int)offsety offset_y1:(int)offsety1
{
    // NSLog(@"barry ChangeViewRect-==== %d, %d",offset_y,offset_y1);
    //    offset_y = offsety;
    //    offset_y1 = offsety1;
}


@end
