#import "iOSBridgePlugin.h"
#import <UIKit/UIKit.h>
#import <EventMark.h>

@implementation iOSBridgePlugin

+ (void)openURL:(NSString *)url1
{
    // 使用UIApplication的openURL方法打开外部浏览器
    NSURL *url = [NSURL URLWithString:url1];
       if (url && [[UIApplication sharedApplication] canOpenURL:url]) {
           // 使用iOS 10及以上版本推荐的方法
           [[UIApplication sharedApplication] openURL:url
                                              options:@{}
                                    completionHandler:nil];
       } else {
           // URL无效或无法打开
           NSLog(@"Invalid URL or cannot open URL: %@", url1);
       }
}
+ (void)SetDarkthrough:(bool)though
{
    if(though){
        UIWindow *keyWindow = nil;
            for (UIWindowScene* windowScene in [UIApplication sharedApplication].connectedScenes) {
                if (windowScene.activationState == UISceneActivationStateForegroundActive) {
                    keyWindow = windowScene.windows.firstObject;
                    break;
                }
            }
        
            UIView *rootView = keyWindow.rootViewController.view;
        
        for (UIView *subview in rootView.subviews) {
            if ([NSStringFromClass([subview class]) isEqualToString:@"WKWebView"]) {
                [self enableUserInteractionForView:subview];
            }
        }
    }
    else{
        UIWindow *keyWindow = nil;
        for (UIWindowScene* windowScene in [UIApplication sharedApplication].connectedScenes) {
            if (windowScene.activationState == UISceneActivationStateForegroundActive) {
                keyWindow = windowScene.windows.firstObject;
                break;
            }
        }

        UIView *rootView = keyWindow.rootViewController.view;
        
        for (UIView *subview in rootView.subviews) {
            if ([NSStringFromClass([subview class]) isEqualToString:@"WKWebView"]) {

                [self disableUserInteractionForView:subview];
            }

        }
    }
    
}
+ (void)enableUserInteractionForView:(UIView *)view {
    view.userInteractionEnabled = YES;
    for (UIView *subview in view.subviews) {
        [self enableUserInteractionForView:subview];
        for (UIGestureRecognizer *gesture in subview.gestureRecognizers) {
            if ([gesture isKindOfClass:[UITapGestureRecognizer class]]) {
                gesture.enabled = YES;  // 禁用手势识别器
            }
        }
    }
}
+ (void)disableUserInteractionForView:(UIView *)view {
    view.userInteractionEnabled = NO;
    for (UIView *subview in view.subviews) {
        [self disableUserInteractionForView:subview];  // 递归禁用所有子视图的交互
        for (UIGestureRecognizer *gesture in subview.gestureRecognizers) {
            // 仅禁用非 UITapGestureRecognizer 类型的手势识别器
            if ([gesture isKindOfClass:[UITapGestureRecognizer class]]) {
                gesture.enabled = NO;  // 禁用手势识别器
            }
        }
    }
}
// 为了让Unity能够找到这个方法，我们需要提供一个C风格的函数入口点
extern "C"
{
    void _openURL(const char* url)
    {
        // 将C风格的字符串转换为NSString，并调用openURL方法
        [iOSBridgePlugin openURL:[NSString stringWithUTF8String:url]];
    }
    
   void _dataEyeEvent(const char* dictionaryJson, const char* eventName)
    {
        // NSLog(@"barry  _dataEyeEvent Json== %s", dictionaryJson);
        // NSLog(@"barry  _dataEyeEvent eventName== %s", eventName);
        // 将C风格的字符串转换为NSString
        NSString *jsonString = [NSString stringWithUTF8String:dictionaryJson];
        NSString *eventNameString = [NSString stringWithUTF8String:eventName];

        // NSLog(@"barry  _dataEyeEvent Json== %@", jsonString);
        // NSLog(@"barry  _dataEyeEvent eventName== %@", eventNameString);
        
        // 调用trackProduct方法并传递两个参数
        [[EventMark sharedEventMark] trackProduct:eventNameString dictionaryJson:jsonString];
    }
    void copyText(const char* text)
    {
        NSLog(@"copyText----: %s", text);
        // 将C风格的字符串转换为NSString，并调用openURL方法
        UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
        pasteboard.string = [NSString stringWithUTF8String:text];
    }
}
- (void)initDataEyeSDK 
{

}

@end
