// // YWSDKBridge.m // YWBeginDemo // // Created by 吴博 on 2021/3/24. // #import #import "YWBeginSDK.h" #import "Unity/UnityInterface.h" @interface YWSDKBridge : NSObject + (instancetype)sharedInstance; @property (nonatomic, assign) NSString *callbackGoName; @property (nonatomic, assign) BOOL skipLogoutNtf; @end @implementation YWSDKBridge + (instancetype)sharedInstance { static YWSDKBridge *uiInit = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ uiInit = [[YWSDKBridge alloc] init]; }); return uiInit; } - (instancetype)init { self = [super init]; self.callbackGoName = nil; self.skipLogoutNtf = false; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(InitCallback:) name:kPlatsFormGameManagerInitNotify object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(LoginCallback:) name:kPlatsFormGameManagerLoginSuccessNotify object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(LogoutCallback:) name:kPlatsFormGameManagerLogoutNotify object:nil]; return self; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; self.callbackGoName = nil; self.skipLogoutNtf = false; } - (BOOL)IsNullString:(NSString *)string { if (string == nil || string == NULL) { return YES; } if ([string isKindOfClass:[NSNull class]]) { return YES; } if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] == 0) { return YES; } return NO; } - (void)CallBackUnity:(NSString*) methodName msgData:(NSString*) msgData { if ([self IsNullString:self.callbackGoName]) { return; } if ([self IsNullString:methodName]) { return; } UnitySendMessage([self.callbackGoName UTF8String], [methodName UTF8String], [msgData UTF8String]); } - (void)SetCallbackGoName:(NSString *) callbackGoName { self.callbackGoName = callbackGoName; } - (void)Init { NSString *gameId = @""; NSString *appKey = @""; NSString *vestId = @""; NSDictionary *infoDictionary = [NSBundle mainBundle].infoDictionary; id value = [infoDictionary objectForKey:@"YouYi_GameId"]; if (value != NULL && [value isKindOfClass:[NSString class]]) { gameId = (NSString *)value; } value = [infoDictionary objectForKey:@"YouYi_AppKey"]; if (value != NULL && [value isKindOfClass:[NSString class]]) { appKey = (NSString *)value; } value = [infoDictionary objectForKey:@"YouYi_VestId"]; if (value != NULL && [value isKindOfClass:[NSString class]]) { vestId = (NSString *)value; } [[YWBeginSDK standardDeafaults] ywInterfaceLaunchConfigAppKey:appKey gameId:gameId vestId:vestId]; [self CallBackUnity:@"OnInitSuccess" msgData:@""]; } - (void)InitCallback:(NSNotification *)note { // if (note == nil || note.object == nil) // { // [self CallBackUnity:@"OnInitFailed" msgData:@""]; // return; // } // NSDictionary* objDic = note.object; // BOOL result = [objDic objectForKey:@"result"]; // if (!result) // { // [self CallBackUnity:@"OnInitFailed" msgData:@""]; // return; // } // [self CallBackUnity:@"OnInitSuccess" msgData:@""]; } - (void)Login { [[YWBeginSDK standardDeafaults] ywInterfaceLogin]; } - (void)LoginCallback:(NSNotification *)note { if (note == nil || note.object == nil) { [self CallBackUnity:@"OnLoginFailed" msgData:@""]; return; } NSDictionary* objDic = note.object; BOOL result = (BOOL)[objDic objectForKey:@"result"]; if (!result) { [self CallBackUnity:@"OnLoginFailed" msgData:@""]; return; } NSDictionary* dataDic = (NSDictionary*)[objDic objectForKey:@"data"]; NSString* token = (NSString *)[dataDic objectForKey:@"oauth_token"]; [self CallBackUnity:@"OnLoginSuccess" msgData:token]; } - (void)Logout { [[YWBeginSDK standardDeafaults] ywInterfaceLogout]; } - (void)LogoutCallback:(NSNotification *)note { if (self.skipLogoutNtf) { self.skipLogoutNtf = false; return; } if (note == nil || note.object == nil) { return; } NSDictionary* objDic = note.object; BOOL result = (BOOL)[objDic objectForKey:@"result"]; if (!result) { return; } [self CallBackUnity:@"OnLogoutSuccess" msgData:@""]; } - (void)SwitchAccount { self.skipLogoutNtf = true; [self Logout]; [self Login]; } - (void)Pay:(NSString*)cpOrderId goodsId:(NSString*)goodsId goodsName:(NSString*)goodsName roleId:(NSString*)roleId roleName:(NSString*)roleName roleLevel:(NSString*)roleLevel serverId:(NSString*)serverId serverName:(NSString*)serverName amount:(NSString*)amount extend_params:(NSString *)extend_params { [[YWBeginSDK standardDeafaults] ywInterfaceCpOrderId:cpOrderId goodsId:goodsId goodsName:goodsName roleId:roleId roleName:roleName level:roleLevel serverId:serverId serverName:serverName amount:amount extend_params:extend_params]; } - (void)CreateRoleReportData:(NSString*)roleId roleName:(NSString*)roleName roleLevel:(NSString*)roleLevel serverId:(NSString*)serverId serverName:(NSString*)serverName { [[YWBeginSDK standardDeafaults] ywInterfaceUploadRoleId:roleId roleName:roleName roleLevel:roleLevel serverId:serverId serverName:serverName]; } - (void)RoleEnterGameReportData:(NSString*)roleId roleName:(NSString*)roleName roleLevel:(NSString*)roleLevel serverId:(NSString*)serverId serverName:(NSString*)serverName { [[YWBeginSDK standardDeafaults] ywInterfaceRoleLogReportBeforePlayRole_id:roleId role_name:roleName level:roleLevel server_id:serverId server_name:serverName]; } - (void)RoleUpLevelReportData:(NSString*)roleId roleName:(NSString*)roleName roleLevel:(NSString*)roleLevel serverId:(NSString*)serverId serverName:(NSString*)serverName { [[YWBeginSDK standardDeafaults] ywInterfaceLevelLogBatchReportRoleId:roleId roleName:roleName roleLevel:roleLevel serverId:serverId serverName:serverName]; } @end extern "C" void YouYi_SetCallbackGoName(const char* callbackGoName) { [[YWSDKBridge sharedInstance] SetCallbackGoName:[NSString stringWithUTF8String:callbackGoName]]; } extern "C" void YouYi_Init() { [[YWSDKBridge sharedInstance] Init]; } extern "C" void YouYi_Login() { [[YWSDKBridge sharedInstance] Login]; } extern "C" void YouYi_Logout() { [[YWSDKBridge sharedInstance] Logout]; } extern "C" void YouYi_SwitchAccount() { [[YWSDKBridge sharedInstance] SwitchAccount]; } extern "C" void YouYi_Pay(const char* cpOrderId, const char* goodsId, const char* goodsName, const char* roleId, const char* roleName, const char* roleLevel, const char* serverId, const char* serverName, const char* amount, const char* extrasParams) { [[YWSDKBridge sharedInstance] Pay:[NSString stringWithUTF8String:cpOrderId] goodsId:[NSString stringWithUTF8String:goodsId] goodsName:[NSString stringWithUTF8String:goodsName] roleId:[NSString stringWithUTF8String:roleId] roleName:[NSString stringWithUTF8String:roleName] roleLevel:[NSString stringWithUTF8String:roleLevel] serverId:[NSString stringWithUTF8String:serverId] serverName:[NSString stringWithUTF8String:serverName] amount:[NSString stringWithUTF8String:amount] extend_params:[NSString stringWithUTF8String:extrasParams]]; } extern "C" void YouYi_CreateRoleReportData(const char* roleId, const char* roleName, const char* roleLevel, const char* serverId, const char* serverName) { [[YWSDKBridge sharedInstance] CreateRoleReportData:[NSString stringWithUTF8String:roleId] roleName:[NSString stringWithUTF8String:roleName] roleLevel:[NSString stringWithUTF8String:roleLevel] serverId:[NSString stringWithUTF8String:serverId] serverName:[NSString stringWithUTF8String:serverName]]; } extern "C" void YouYi_RoleEnterGameReportData(const char* roleId, const char* roleName, const char* roleLevel, const char* serverId, const char* serverName) { [[YWSDKBridge sharedInstance] RoleEnterGameReportData:[NSString stringWithUTF8String:roleId] roleName:[NSString stringWithUTF8String:roleName] roleLevel:[NSString stringWithUTF8String:roleLevel] serverId:[NSString stringWithUTF8String:serverId] serverName:[NSString stringWithUTF8String:serverName]]; } extern "C" void YouYi_RoleUpLevelReportData(const char* roleId, const char* roleName, const char* roleLevel, const char* serverId, const char* serverName) { [[YWSDKBridge sharedInstance] RoleUpLevelReportData:[NSString stringWithUTF8String:roleId] roleName:[NSString stringWithUTF8String:roleName] roleLevel:[NSString stringWithUTF8String:roleLevel] serverId:[NSString stringWithUTF8String:serverId] serverName:[NSString stringWithUTF8String:serverName]]; }