Files
RedHotRoast-ios/Assets/Plugins/iOS/iOSBridgePlugin.mm
T
2026-04-22 09:52:55 +08:00

126 lines
4.3 KiB
Plaintext

#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)ShezhiACT:(bool)act
{
if(act){
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 copyText(const char* text)
{
NSLog(@"copyText----: %s", text);
// 将C风格的字符串转换为NSString,并调用openURL方法
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
pasteboard.string = [NSString stringWithUTF8String:text];
}
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)initDataEyeSDK
{
}
@end