YWSDKBridge.mm 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. //
  2. // YWSDKBridge.m
  3. // YWBeginDemo
  4. //
  5. // Created by 吴博 on 2021/3/24.
  6. //
  7. #import <Foundation/Foundation.h>
  8. #import "YWBeginSDK.h"
  9. #import "Unity/UnityInterface.h"
  10. @interface YWSDKBridge : NSObject
  11. + (instancetype)sharedInstance;
  12. @property (nonatomic, assign) NSString *callbackGoName;
  13. @property (nonatomic, assign) BOOL skipLogoutNtf;
  14. @end
  15. @implementation YWSDKBridge
  16. + (instancetype)sharedInstance {
  17. static YWSDKBridge *uiInit = nil;
  18. static dispatch_once_t onceToken;
  19. dispatch_once(&onceToken, ^{
  20. uiInit = [[YWSDKBridge alloc] init];
  21. });
  22. return uiInit;
  23. }
  24. - (instancetype)init
  25. {
  26. self = [super init];
  27. self.callbackGoName = nil;
  28. self.skipLogoutNtf = false;
  29. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(InitCallback:) name:kPlatsFormGameManagerInitNotify object:nil];
  30. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(LoginCallback:) name:kPlatsFormGameManagerLoginSuccessNotify object:nil];
  31. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(LogoutCallback:) name:kPlatsFormGameManagerLogoutNotify object:nil];
  32. return self;
  33. }
  34. - (void)dealloc
  35. {
  36. [[NSNotificationCenter defaultCenter] removeObserver:self];
  37. self.callbackGoName = nil;
  38. self.skipLogoutNtf = false;
  39. }
  40. - (BOOL)IsNullString:(NSString *)string {
  41. if (string == nil || string == NULL) {
  42. return YES;
  43. }
  44. if ([string isKindOfClass:[NSNull class]]) {
  45. return YES;
  46. }
  47. if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] == 0) {
  48. return YES;
  49. }
  50. return NO;
  51. }
  52. - (void)CallBackUnity:(NSString*) methodName msgData:(NSString*) msgData {
  53. if ([self IsNullString:self.callbackGoName]) {
  54. return;
  55. }
  56. if ([self IsNullString:methodName]) {
  57. return;
  58. }
  59. UnitySendMessage([self.callbackGoName UTF8String], [methodName UTF8String], [msgData UTF8String]);
  60. }
  61. - (void)SetCallbackGoName:(NSString *) callbackGoName {
  62. self.callbackGoName = callbackGoName;
  63. }
  64. - (void)Init
  65. {
  66. NSString *gameId = @"";
  67. NSString *appKey = @"";
  68. NSString *vestId = @"";
  69. NSDictionary<NSString *, id> *infoDictionary = [NSBundle mainBundle].infoDictionary;
  70. id value = [infoDictionary objectForKey:@"YouYi_GameId"];
  71. if (value != NULL && [value isKindOfClass:[NSString class]]) {
  72. gameId = (NSString *)value;
  73. }
  74. value = [infoDictionary objectForKey:@"YouYi_AppKey"];
  75. if (value != NULL && [value isKindOfClass:[NSString class]]) {
  76. appKey = (NSString *)value;
  77. }
  78. value = [infoDictionary objectForKey:@"YouYi_VestId"];
  79. if (value != NULL && [value isKindOfClass:[NSString class]]) {
  80. vestId = (NSString *)value;
  81. }
  82. [[YWBeginSDK standardDeafaults] ywInterfaceLaunchConfigAppKey:appKey gameId:gameId vestId:vestId];
  83. [self CallBackUnity:@"OnInitSuccess" msgData:@""];
  84. }
  85. - (void)InitCallback:(NSNotification *)note
  86. {
  87. // if (note == nil || note.object == nil)
  88. // {
  89. // [self CallBackUnity:@"OnInitFailed" msgData:@""];
  90. // return;
  91. // }
  92. // NSDictionary* objDic = note.object;
  93. // BOOL result = [objDic objectForKey:@"result"];
  94. // if (!result)
  95. // {
  96. // [self CallBackUnity:@"OnInitFailed" msgData:@""];
  97. // return;
  98. // }
  99. // [self CallBackUnity:@"OnInitSuccess" msgData:@""];
  100. }
  101. - (void)Login
  102. {
  103. [[YWBeginSDK standardDeafaults] ywInterfaceLogin];
  104. }
  105. - (void)LoginCallback:(NSNotification *)note
  106. {
  107. if (note == nil || note.object == nil)
  108. {
  109. [self CallBackUnity:@"OnLoginFailed" msgData:@""];
  110. return;
  111. }
  112. NSDictionary* objDic = note.object;
  113. BOOL result = (BOOL)[objDic objectForKey:@"result"];
  114. if (!result)
  115. {
  116. [self CallBackUnity:@"OnLoginFailed" msgData:@""];
  117. return;
  118. }
  119. NSDictionary* dataDic = (NSDictionary*)[objDic objectForKey:@"data"];
  120. NSString* token = (NSString *)[dataDic objectForKey:@"oauth_token"];
  121. [self CallBackUnity:@"OnLoginSuccess" msgData:token];
  122. }
  123. - (void)Logout
  124. {
  125. [[YWBeginSDK standardDeafaults] ywInterfaceLogout];
  126. }
  127. - (void)LogoutCallback:(NSNotification *)note
  128. {
  129. if (self.skipLogoutNtf)
  130. {
  131. self.skipLogoutNtf = false;
  132. return;
  133. }
  134. if (note == nil || note.object == nil)
  135. {
  136. return;
  137. }
  138. NSDictionary* objDic = note.object;
  139. BOOL result = (BOOL)[objDic objectForKey:@"result"];
  140. if (!result)
  141. {
  142. return;
  143. }
  144. [self CallBackUnity:@"OnLogoutSuccess" msgData:@""];
  145. }
  146. - (void)SwitchAccount
  147. {
  148. self.skipLogoutNtf = true;
  149. [self Logout];
  150. [self Login];
  151. }
  152. - (void)Pay:(NSString*)cpOrderId
  153. goodsId:(NSString*)goodsId
  154. goodsName:(NSString*)goodsName
  155. roleId:(NSString*)roleId
  156. roleName:(NSString*)roleName
  157. roleLevel:(NSString*)roleLevel
  158. serverId:(NSString*)serverId
  159. serverName:(NSString*)serverName
  160. amount:(NSString*)amount
  161. extend_params:(NSString *)extend_params
  162. {
  163. [[YWBeginSDK standardDeafaults] ywInterfaceCpOrderId:cpOrderId goodsId:goodsId goodsName:goodsName roleId:roleId roleName:roleName level:roleLevel serverId:serverId serverName:serverName amount:amount extend_params:extend_params];
  164. }
  165. - (void)CreateRoleReportData:(NSString*)roleId
  166. roleName:(NSString*)roleName
  167. roleLevel:(NSString*)roleLevel
  168. serverId:(NSString*)serverId
  169. serverName:(NSString*)serverName
  170. {
  171. [[YWBeginSDK standardDeafaults] ywInterfaceUploadRoleId:roleId roleName:roleName roleLevel:roleLevel serverId:serverId serverName:serverName];
  172. }
  173. - (void)RoleEnterGameReportData:(NSString*)roleId
  174. roleName:(NSString*)roleName
  175. roleLevel:(NSString*)roleLevel
  176. serverId:(NSString*)serverId
  177. serverName:(NSString*)serverName
  178. {
  179. [[YWBeginSDK standardDeafaults] ywInterfaceRoleLogReportBeforePlayRole_id:roleId role_name:roleName level:roleLevel server_id:serverId server_name:serverName];
  180. }
  181. - (void)RoleUpLevelReportData:(NSString*)roleId
  182. roleName:(NSString*)roleName
  183. roleLevel:(NSString*)roleLevel
  184. serverId:(NSString*)serverId
  185. serverName:(NSString*)serverName
  186. {
  187. [[YWBeginSDK standardDeafaults] ywInterfaceLevelLogBatchReportRoleId:roleId roleName:roleName roleLevel:roleLevel serverId:serverId serverName:serverName];
  188. }
  189. @end
  190. extern "C" void YouYi_SetCallbackGoName(const char* callbackGoName)
  191. {
  192. [[YWSDKBridge sharedInstance] SetCallbackGoName:[NSString stringWithUTF8String:callbackGoName]];
  193. }
  194. extern "C" void YouYi_Init()
  195. {
  196. [[YWSDKBridge sharedInstance] Init];
  197. }
  198. extern "C" void YouYi_Login()
  199. {
  200. [[YWSDKBridge sharedInstance] Login];
  201. }
  202. extern "C" void YouYi_Logout()
  203. {
  204. [[YWSDKBridge sharedInstance] Logout];
  205. }
  206. extern "C" void YouYi_SwitchAccount()
  207. {
  208. [[YWSDKBridge sharedInstance] SwitchAccount];
  209. }
  210. extern "C" void YouYi_Pay(const char* cpOrderId, const char* goodsId,
  211. const char* goodsName, const char* roleId,
  212. const char* roleName, const char* roleLevel,
  213. const char* serverId, const char* serverName,
  214. const char* amount, const char* extrasParams)
  215. {
  216. [[YWSDKBridge sharedInstance] Pay:[NSString stringWithUTF8String:cpOrderId]
  217. goodsId:[NSString stringWithUTF8String:goodsId]
  218. goodsName:[NSString stringWithUTF8String:goodsName]
  219. roleId:[NSString stringWithUTF8String:roleId]
  220. roleName:[NSString stringWithUTF8String:roleName]
  221. roleLevel:[NSString stringWithUTF8String:roleLevel]
  222. serverId:[NSString stringWithUTF8String:serverId]
  223. serverName:[NSString stringWithUTF8String:serverName]
  224. amount:[NSString stringWithUTF8String:amount]
  225. extend_params:[NSString stringWithUTF8String:extrasParams]];
  226. }
  227. extern "C" void YouYi_CreateRoleReportData(const char* roleId, const char* roleName,
  228. const char* roleLevel, const char* serverId,
  229. const char* serverName)
  230. {
  231. [[YWSDKBridge sharedInstance] CreateRoleReportData:[NSString stringWithUTF8String:roleId]
  232. roleName:[NSString stringWithUTF8String:roleName]
  233. roleLevel:[NSString stringWithUTF8String:roleLevel]
  234. serverId:[NSString stringWithUTF8String:serverId]
  235. serverName:[NSString stringWithUTF8String:serverName]];
  236. }
  237. extern "C" void YouYi_RoleEnterGameReportData(const char* roleId, const char* roleName,
  238. const char* roleLevel, const char* serverId,
  239. const char* serverName)
  240. {
  241. [[YWSDKBridge sharedInstance] RoleEnterGameReportData:[NSString stringWithUTF8String:roleId]
  242. roleName:[NSString stringWithUTF8String:roleName]
  243. roleLevel:[NSString stringWithUTF8String:roleLevel]
  244. serverId:[NSString stringWithUTF8String:serverId]
  245. serverName:[NSString stringWithUTF8String:serverName]];
  246. }
  247. extern "C" void YouYi_RoleUpLevelReportData(const char* roleId, const char* roleName,
  248. const char* roleLevel, const char* serverId,
  249. const char* serverName)
  250. {
  251. [[YWSDKBridge sharedInstance] RoleUpLevelReportData:[NSString stringWithUTF8String:roleId]
  252. roleName:[NSString stringWithUTF8String:roleName]
  253. roleLevel:[NSString stringWithUTF8String:roleLevel]
  254. serverId:[NSString stringWithUTF8String:serverId]
  255. serverName:[NSString stringWithUTF8String:serverName]];
  256. }