126 lines
4.3 KiB
Plaintext
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
|