From 2a011653190c36e6fb1f790b3819a1d6b0744aef Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期五, 18 七月 2025 16:01:58 +0800 Subject: [PATCH] 0312 补充越南 ios sdk --- Channel/IOS/hyyngame_ios/Plugins/enkds/Enkds.bundle/anniu.png | 0 Channel/IOS/hyyngame_ios/Plugins/enkds/Enkds.mm | 378 +++++++++++++++++++++++++++++++++++++++++++++++ Channel/IOS/hyyngame_ios/Plugins/enkds/Enkds.h | 82 ++++++++++ 3 files changed, 460 insertions(+), 0 deletions(-) diff --git a/Channel/IOS/hyyngame_ios/Plugins/enkds/Enkds.bundle/anniu.png b/Channel/IOS/hyyngame_ios/Plugins/enkds/Enkds.bundle/anniu.png new file mode 100644 index 0000000..dcebca0 --- /dev/null +++ b/Channel/IOS/hyyngame_ios/Plugins/enkds/Enkds.bundle/anniu.png Binary files differ diff --git a/Channel/IOS/hyyngame_ios/Plugins/enkds/Enkds.h b/Channel/IOS/hyyngame_ios/Plugins/enkds/Enkds.h new file mode 100644 index 0000000..f55c65d --- /dev/null +++ b/Channel/IOS/hyyngame_ios/Plugins/enkds/Enkds.h @@ -0,0 +1,82 @@ +#ifndef __ENKDS_H_ +#define __ENKDS_H_ + +#import <Foundation/Foundation.h> +#import <UIKit/UIKit.h> +#import <WebKit/WebKit.h> +#import <TUYEFramework/TUYESDK.h> + +#define FUNC_NAME_GAME "ynmbxxjUtil" +#define FUNCTION_NAME "HandleMsgWithSDK" + + +#define STOUni_BatteryLevel 1 +#define STOUni_BatteryCharging 2 +#define STOUni_SdkInitComplete 3 +#define STOUni_DeviceInfo 4 +#define STOUni_PushClientID 5 +#define STOUni_EnkdsInitOk 100 +#define STOUni_EnkdsInitFail 101 +#define STOUni_EnkdsLoginOk 102 +#define STOUni_EnkdsLoginFail 103 +#define STOUni_EnkdsLoginCancel 104 +#define STOUni_EnkdsLogoutOk 105 +#define STOUni_EnkdsLogoutFail 106 +#define STOUni_EnkdsSwitchAccountOk 107 +#define STOUni_EnkdsPayOk 108 +#define STOUni_EnkdsPayFail 109 +#define STOUni_EnkdsPayCancel 110 +#define STOUni_EnkdsRegisterOk 111 +#define STOUni_FBShareResult 112 //fb鍒嗕韩缁撴灉 + +#define UTOSDK_BatteryListenStart 1 +#define UTOSDK_BatteryListenStop 2 +#define UTOSDK_CopyContent 7 +#define UTOSDK_OpenWebView 8 +#define UTOSDK_Init 9 +#define UTOSDK_EnkdsjInit 100 +#define UTOSDK_EnkdsjLogin 101 +#define UTOSDK_EnkdsjLogout 102 +#define UTOSDK_EnkdsjSwitchAccount 103 +#define UTOSDK_EnkdsjPay 104 +#define UTOSDK_PayFinished 105 +#define UTOSDK_CreateRole 106 +#define UTOSDK_RoleLogin 107 +#define UTOSDK_RoleLevelUp 108 +#define UTOSDK_ShareToFaceBook 112 //FB鍒嗕韩 +#define UTOSDK_GotoPingfen 113 //鍓嶅線璇勫垎 +#define UTOSDK_FansHouse 120 //绮変笣灞� +#define UTOSDK_GotoShop 121 //鎵撳紑鍟嗗簵 +#define UTOSDK_TrackEvent 122 //鑷畾涔変簨浠� +#define UTOSDK_MakeKeyAndVisible 300 +#define UTOSDK_SendRegistEvent 500 +#define UTOSDK_SendLoginEvent 600 + +#define KIsiPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) + + + +@interface Enkds : NSObject<WKUIDelegate, WKNavigationDelegate> { + WKWebView* m_wkWebView; + WKWebView* m_jiaWKWebView; + UIButton* c_loseBtn; +} + +-(void) HandleGameMessage:(NSString*) json; +-(void) Init; +-(id) APNativeJSONObject:(NSData*) data; + +-(void) YngameSDKInit:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; + +@end + +@interface Enkds ()<DelegateTUYESDK> +//@property (weak, nonatomic) IBOutlet UILabel *demoTitleLabel; +//@property(nonatomic)UIInterfaceOrientationMask korientationMask; +//@property (weak, nonatomic) IBOutlet UILabel *resultLabel; +//@property (nonatomic, strong)TUYESDK *sdkManager; +//@property (weak, nonatomic) IBOutlet UIImageView *backImageView; + +@end + +#endif diff --git a/Channel/IOS/hyyngame_ios/Plugins/enkds/Enkds.mm b/Channel/IOS/hyyngame_ios/Plugins/enkds/Enkds.mm new file mode 100644 index 0000000..28052c0 --- /dev/null +++ b/Channel/IOS/hyyngame_ios/Plugins/enkds/Enkds.mm @@ -0,0 +1,378 @@ +#import "Enkds.h" +#ifdef NSFoundationVersionNumber_iOS_9_x_Max +#import <UserNotifications/UserNotifications.h> +#endif +#import "SystemConfiguration/CaptiveNetwork.h" + +@implementation Enkds + +static int cClassBattery = -1; +static int cZhuangtaiBattery = -1; +static NSString* cYingyongID; +static NSString* cYouxiID; +static NSString* sYonghuMing; +static NSThread* _xianchengThd; + + + +-(id)init +{ + self = [super init]; + + m_jiaWKWebView = [[WKWebView alloc] initWithFrame:CGRectZero]; + NSURL *dizhi = [NSURL URLWithString:@"www.google.com"]; + NSURLRequest *request = [NSURLRequest requestWithURL:dizhi + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:8.f]; + [m_jiaWKWebView loadRequest:request]; + + return self; +} + +-(void) Init +{ + UIDevice *_device = [UIDevice currentDevice]; + _device.batteryMonitoringEnabled = true; + + NSString* _uniqueID = @"ddgg"; + //鑾峰彇IDFA + NSString* _idfa = @"acd"; + + // 鍙栧緱UserAgent + [m_jiaWKWebView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable userAgent, NSError * _Nullable error) { + + NSLog(@"%@", userAgent); + NSString* _userAgent = [NSString stringWithFormat:@"%@", userAgent]; + // 鍙戦�佽澶囦俊鎭� + NSMutableDictionary *d_i_ct = [NSMutableDictionary dictionaryWithObjectsAndKeys: + _uniqueID,@"unique_id", + _idfa,@"android_id", + [NSNumber numberWithInt:STOUni_DeviceInfo],@"code", + _userAgent,@"userAgent",nil]; + [self SendMessageToUnity:d_i_ct]; + }]; + + + [TUYESDK sharedGameSDK] .sdkDelegate = (id<DelegateTUYESDK>)self; + UIViewController *view = UnityGetGLViewController(); + [[TUYESDK sharedGameSDK] initSDKwithViewController:view gameId:1141 appId:93 channelId:332]; +} + + +- (void)smpcQpLogoutResult:(NSNotification *)notify { + NSLog(@"sdk璇锋眰閫�鍑�"); + //娉ㄩ攢鎴愬姛 + NSDictionary *d_i_ct = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:STOUni_EnkdsLogoutOk], @"code", nil]; + [self SendMessageToUnity:d_i_ct]; + +} + +-(void)SendMessageToUnity:(NSDictionary*)dict +{ + BOOL _result = [NSJSONSerialization isValidJSONObject:dict]; + if(_result) + { + NSData* _jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:NULL]; + UnitySendMessage(FUNC_NAME_GAME, FUNCTION_NAME, + [[[NSString alloc] initWithData:_jsonData encoding:NSUTF8StringEncoding] UTF8String]); + } +} + +-(void) BatteryThread { + while (TRUE) + { + [NSThread sleepForTimeInterval:1]; + + UIDevice *_device = [UIDevice currentDevice]; + + int _state = [_device batteryState]; + if(_state != cZhuangtaiBattery){ + cZhuangtaiBattery = _state; + NSDictionary *d_i_ct = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:cZhuangtaiBattery], @"status", + [NSNumber numberWithInt:STOUni_BatteryCharging], @"code", nil]; + + [self SendMessageToUnity:d_i_ct]; + } + + int _level = (int)([_device batteryLevel] * 100); + if(_level != cClassBattery){ + cClassBattery = _level; + NSDictionary *d_i_ct = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:cClassBattery], @"level", + [NSNumber numberWithInt:STOUni_BatteryLevel], @"code", nil]; + + [self SendMessageToUnity:d_i_ct]; + } + } +} + +-(void) OpenURL:(NSString*) url { + + if(m_jiaWKWebView != NULL) { + [self btnClick:NULL]; + return; + } + + CGRect b_ounds = UnityGetMainWindow().bounds; + + float s_cale = b_ounds.size.width / (1300 + 34); + + float w_idth = (900 + 82) * s_cale; + float h_eight = (500 + 60) * s_cale; + + float _offsetX = (b_ounds.size.width - w_idth) * .5f; + float _offsetY = (b_ounds.size.height - h_eight) * .5f; + + m_jiaWKWebView = [[WKWebView alloc] initWithFrame:CGRectMake(_offsetX, _offsetY, w_idth, h_eight)]; + m_jiaWKWebView.UIDelegate = self; + m_jiaWKWebView.navigationDelegate = self ; + m_jiaWKWebView.scrollView.scrollEnabled = YES; + m_jiaWKWebView.scrollView.bounces = NO; + NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:url]]; + [m_jiaWKWebView loadRequest:request]; + + +} + +-(void) btnClick:(UIButton*)sender { + [c_loseBtn removeFromSuperview]; + [c_loseBtn removeTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; + c_loseBtn = NULL; + + NSURLCache *_cache = [NSURLCache sharedURLCache]; + [_cache removeAllCachedResponses]; + [_cache setDiskCapacity:0]; + [_cache setMemoryCapacity:0]; + + [m_jiaWKWebView removeFromSuperview]; + m_jiaWKWebView = NULL; +} + + +//-(void)webViewDidFinishLoad:(WKWebView *)webView{ +- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{ + + CGRect _bounds = UnityGetMainWindow().bounds; + + float _scale = _bounds.size.width / 1334; + + float _width = 982 * _scale; + float _height = 560 * _scale; + + c_loseBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + [c_loseBtn setFrame:CGRectMake(_width - 600 * _scale, _height - 86 * _scale, 360 * _scale, 72 * _scale)]; + [c_loseBtn setTitle:@"OK" forState:UIControlStateNormal]; + + NSString *_bundlePath = [[NSBundle mainBundle] pathForResource:@"Enkds.bundle" ofType:nil]; + NSBundle *_bundle = [NSBundle bundleWithPath:_bundlePath]; + NSString *pic1Path = [_bundle pathForResource:@"anniu.png" ofType:nil]; + + [c_loseBtn setBackgroundImage:[UIImage imageWithContentsOfFile:pic1Path] forState:UIControlStateNormal]; + [c_loseBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; + [c_loseBtn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; + + [m_jiaWKWebView addSubview:c_loseBtn]; + + UIView *view = UnityGetGLViewController().view; + [view addSubview:m_jiaWKWebView]; +} + +-(void)YngameSDKInit:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + NSLog(@"鍒濆鍖栨垚鍔�"); + + [[TUYESDK sharedGameSDK] application:application + didFinishLaunchingWithOptions:launchOptions]; + +} + + +#pragma mark - 鍥炶皟缁撴灉 +- (void)onInitSuccess +{ + NSLog(@"\n***************鍒濆鍖栨垚鍔�****************"); + NSDictionary *d_i_ct = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:STOUni_EnkdsInitOk], @"code", nil]; + [self SendMessageToUnity:d_i_ct]; + + NSMutableDictionary *d_i_ct1 = [NSMutableDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:STOUni_SdkInitComplete], @"code", + @"hyenglish", @"channelPlatform", nil]; + [self SendMessageToUnity:d_i_ct1]; +} +- (void)onInitFail:(NSError *)kerror +{ + NSDictionary *d_i_ct = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:STOUni_EnkdsInitFail], @"code", nil]; + [self SendMessageToUnity:d_i_ct]; +} + + +- (void)onLoginSuccess:(id )user +{ + + NSString *uid = user[@"user_id"]; + NSString *gameUID = [NSString stringWithFormat:@"%@@1", uid]; + + NSLog(@" 鐧婚檰鍙傛暟锛氥��%@ %@ %@銆�", uid, user[@"timestamp"], user[@"sign"]); + + NSDictionary *d_i_ct = [NSDictionary dictionaryWithObjectsAndKeys: + [NSDictionary dictionaryWithObjectsAndKeys:user[@"sign"], @"token", + uid, @"userName", + user[@"timestamp"], @"token_expire", + gameUID, @"account", nil],@"info", + [NSNumber numberWithInt:STOUni_EnkdsLoginOk], @"code", nil]; + [self SendMessageToUnity:d_i_ct]; +} + +- (void)onLoginFail:(NSError *)kerror +{ + //self.resultLabel.text = [NSString stringWithFormat:@"鐧诲綍澶辫触\nerror:%@",kerror.localizedDescription]; + NSDictionary *d_i_ct = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:STOUni_EnkdsLoginFail], @"code", nil]; + [self SendMessageToUnity:d_i_ct]; +} + +- (void)onLogout +{ + NSLog(@"娉ㄩ攢"); + //self.resultLabel.text = @"娉ㄩ攢鎴愬姛"; + NSDictionary *d_i_ct = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:STOUni_EnkdsLogoutOk], @"code", nil]; + [self SendMessageToUnity:d_i_ct]; +} +- (void)onPaySuccess{ + NSLog(@"鍏呭�艰皟鐢ㄨ繑鍥�"); + NSDictionary *d_i_ct = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:STOUni_EnkdsPayOk], @"code", nil]; + [self SendMessageToUnity:d_i_ct]; +} + + +-(id) APNativeJSONObject:(NSData *)data{ + if (!data) { + return nil; + } + + NSError *error = nil; + id retId = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; + + if (error) { + NSLog(@"%s trans data to obj with error: %@", __func__, error); + return nil; + } + + return retId; +} + +-(void)HandleGameMessage:(NSString *)json { + + NSLog(@"鏀跺埌Unity鍙戞潵鐨勬秷鎭� => %@", json); + + NSData *_jsonData = [json dataUsingEncoding:NSUTF8StringEncoding]; + NSDictionary *d_i_ct = [self APNativeJSONObject:_jsonData]; + + switch([[d_i_ct objectForKey:@"code"] intValue]){ + case UTOSDK_Init: + cYingyongID = d_i_ct[@"appID"]; + cYouxiID = d_i_ct[@"gameID"]; + [self Init]; + + break; + case UTOSDK_CopyContent: + [UIPasteboard generalPasteboard].string = d_i_ct[@"content"]; + break; + case UTOSDK_EnkdsjInit: + break; + case UTOSDK_MakeKeyAndVisible: + { + UIWindow * _window = [[UIApplication sharedApplication].delegate window]; + if (_window != nil && _window.rootViewController != nil) { + [_window makeKeyAndVisible]; + } + } + break; + case UTOSDK_OpenWebView: + [self OpenURL:d_i_ct[@"url"]]; + break; + case UTOSDK_EnkdsjLogin: + { + [[TUYESDK sharedGameSDK] login]; + } + break; + case UTOSDK_EnkdsjLogout: + { + [[TUYESDK sharedGameSDK] logout]; + } + break; + case UTOSDK_CreateRole: + { + [[TUYESDK sharedGameSDK] roleCreateWithRoleId:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"roleID"]] roleName:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"roleName"]] roleLevel:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"level"]] serverName:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"serverName"]] serverId:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"sid"]] userMoney:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"money"]] vipLevel:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"vipLevel"]]]; + break; + } + case UTOSDK_RoleLogin: + { + // 鏇存柊瑙掕壊淇℃伅 + [[TUYESDK sharedGameSDK] roleLoginWithRoleId:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"roleID"]] roleName:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"roleName"]] roleLevel:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"level"]] serverName:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"serverName"]] serverId:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"sid"]] userMoney:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"money"]] vipLevel:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"vipLevel"]]]; + break; + } + + case UTOSDK_RoleLevelUp: + { + // 鏇存柊瑙掕壊淇℃伅 + [[TUYESDK sharedGameSDK] roleLevelUpWithRoleId:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"roleID"]] roleName:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"roleName"]] roleLevel:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"level"]] serverName:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"serverName"]] serverId:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"sid"]] userMoney:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"money"]] vipLevel:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"vipLevel"]]]; + break; + } + case UTOSDK_EnkdsjPay: + { + + NSString *extra = [NSString stringWithFormat:@"1_%@_%@_%@", [NSString stringWithFormat:@"%@", [d_i_ct objectForKey:@"orderId"]], + [NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"sid"]], + [NSString stringWithFormat:@"%@", [d_i_ct objectForKey:@"cpInfo"]]]; + + [[TUYESDK sharedGameSDK] IAPWithProductId:[NSString stringWithFormat:@"%@", [d_i_ct objectForKey:@"storeOrderInfo"]] productDesc:[NSString stringWithFormat:@"%@", [d_i_ct objectForKey:@"title"]] amount:[NSString stringWithFormat:@"%@", [d_i_ct objectForKey:@"mount"]] cpOrderId:[NSString stringWithFormat:@"%@", [d_i_ct objectForKey:@"orderId"]] callBackUrl:@"Pxrv%3A%3EW%3B%2A%2A%2B%28%2FE7cuz8w9PGOp5%60%23%3Bd.AGQ%2CYI%5E_N5%3EPsDXi6YTE%2F%2B14~%2F%40%7C%20%5D_52." callBackInfo:extra roleId:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"roleID"]] roleName:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"roleName"]] roleLevel:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"level"]] serverId:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"sid"]] serverName:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"serverName"]]]; + + break; + } + case UTOSDK_BatteryListenStart: + if(_xianchengThd == NULL) + { + _xianchengThd = [[NSThread alloc] initWithTarget:self selector:@selector(BatteryThread) object:nil]; + [_xianchengThd setName:@"BatteryCheck"]; + } + if(![_xianchengThd isExecuting]) + { + [_xianchengThd start]; + } + break; + case UTOSDK_BatteryListenStop: + break; + case UTOSDK_ShareToFaceBook: + { + [[TUYESDK sharedGameSDK] shareUrlWithResult:^(BOOL isSuccess) { + NSLog(@"%@%@",@"facebookShareURL ",isSuccess?@"YES":@"NO"); + }]; + + NSDictionary *d_i_ct = [NSDictionary dictionaryWithObjectsAndKeys: + [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"state", nil],@"info", + [NSNumber numberWithInt:STOUni_FBShareResult], @"code", nil]; + [self SendMessageToUnity:d_i_ct]; + break; + } + + case UTOSDK_GotoPingfen: + [[TUYESDK sharedGameSDK] appStoreStar]; + break; + case UTOSDK_FansHouse: + [[TUYESDK sharedGameSDK] facebookFansHome]; + break; + case UTOSDK_GotoShop: + [[TUYESDK sharedGameSDK] appStore]; + break; + case UTOSDK_TrackEvent: + //isRepeat:NO浠呬笂鎶ヤ竴娆★紝YES鍏佽閲嶅涓婃姤锛堜竴鑸湅杩愯惀瑕佹眰锛� + [[TUYESDK sharedGameSDK] reportTrackEvent:[NSString stringWithFormat:@"%@",[d_i_ct objectForKey:@"eventName"]] isRepeat:[[d_i_ct objectForKey:@"eventName"] boolValue]]; + break; + } +} +@end + + -- Gitblit v1.8.0