QsdkMgr.mm 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. #import <Foundation/Foundation.h>
  2. #import <SPHSDK_DZ/SPSDK.h>
  3. static NSString* UnityListenerGoName;
  4. void SendMsgToUnity(NSString* messageName,NSString* parameters)
  5. {
  6. if (!UnityListenerGoName) {
  7. NSLog(@"U3D not set listener");
  8. return;
  9. }
  10. if ([parameters isKindOfClass:NSString.class] && [parameters length]) {
  11. UnitySendMessage([UnityListenerGoName UTF8String], [messageName UTF8String], [parameters UTF8String]);
  12. }
  13. else{
  14. UnitySendMessage([UnityListenerGoName UTF8String], [messageName UTF8String], "");
  15. }
  16. }
  17. NSString* QsdkCreateNSString (const char* string)
  18. {
  19. if (string)
  20. return [NSString stringWithUTF8String: string];
  21. else
  22. return [NSString stringWithUTF8String: ""];
  23. }
  24. //=============================回调函数=============================================
  25. //=============================回调函数=============================================
  26. //=============================回调函数=============================================
  27. //
  28. void SDK_observer_CallBack(SPSDKEvent event, NSDictionary *data)
  29. {
  30. switch(event)
  31. {
  32. case SPSDKEventLogout:
  33. {
  34. //
  35. NSLog(@"退出登录成功");
  36. SendMsgToUnity(@"onLogoutSuccess",@"");
  37. }
  38. break;
  39. default:
  40. break;
  41. }
  42. }
  43. void SDK_Init_Callback(BOOL success, id data)
  44. {
  45. if(success)
  46. {
  47. SendMsgToUnity(@"onInitSuccess",@"Init:Init Success");
  48. }
  49. else
  50. {
  51. SendMsgToUnity(@"onInitSuccess",@"Fail");
  52. }
  53. }
  54. void SDK_Logout_Callback(BOOL success, id data)
  55. {
  56. }
  57. void SDK_Login_Callback(BOOL success, SPUserData *data)
  58. {
  59. if (success)
  60. {
  61. //[self log:[NSString stringWithFormat:@"登录成功:%@",data.username]];
  62. int code = 0;
  63. SendMsgToUnity(@"onLoginSuccess",[NSString stringWithFormat:@"%d[]%@[]%@[]%@[]%@",code,@"success", data.token, data.username, data.timestamp]);
  64. }else
  65. {
  66. //[self log:[NSString stringWithFormat:@"登录失败❌:%@",data]];
  67. SendMsgToUnity(@"onLoginFail",[NSString stringWithFormat:@"登录失败:%@",data]);
  68. }
  69. }
  70. void SDK_Pay_Callback(BOOL success, id data)
  71. {
  72. if(success)
  73. {
  74. SendMsgToUnity(@"onPaySuccess",@"支付Suc");
  75. }
  76. else
  77. {
  78. SendMsgToUnity(@"onPayFail",@"");
  79. }
  80. }
  81. void SDK_UpdateRoleInfo_Callback(BOOL success, id data)
  82. {
  83. }
  84. //=============================回调函数=============================================
  85. //=============================回调函数=============================================
  86. extern "C"
  87. {
  88. void QSDK_SetListener(const char *gameObjectName){
  89. UnityListenerGoName = QsdkCreateNSString(gameObjectName);
  90. }
  91. void QSDK_Init() {
  92. //SendMsgToUnity(@"onInitSuccess",@"Init:Init Success");
  93. //SendMsgToUnity(@"onInitSuccess",@"Fail");
  94. //SDK初始化 code: 0:成功, 1:失败
  95. NSString *gameId = @"127";
  96. NSDictionary<NSString *, id> *infoDictionary = [NSBundle mainBundle].infoDictionary;
  97. id value = [infoDictionary objectForKey:@"xuanyou_GameId"];
  98. if (value != NULL && [value isKindOfClass:[NSString class]]) {
  99. gameId = (NSString *)value;
  100. }
  101. NSDictionary *game = @{
  102. // @"timestamp":@"XXXX",///设置此值来切换线上域名
  103. // @"tempDomain":@"",///设置此值来切换线上域名
  104. @"gameId":gameId,///替换为实际游戏id
  105. };
  106. [SPSDK.instance registerGame:game callback:^(BOOL success, id data)
  107. {
  108. SDK_Init_Callback(success,data);
  109. }];
  110. SPSDK.instance.observer = ^(SPSDKEvent event, NSDictionary *data)
  111. {
  112. SDK_observer_CallBack(event,data);
  113. };
  114. }
  115. void QSDK_login()
  116. {
  117. //使用SDK登录界面登录
  118. [SPSDK.instance login:^(BOOL success, SPUserData *data)
  119. {
  120. SDK_Login_Callback(success,data);
  121. }];
  122. }
  123. void QSDK_Pay(const char *productId,const char *productName,const char * amount,const char *orderNo,
  124. const char *callBackUrl,const char *extrasParams,
  125. const char * gameName,const char * serverName,
  126. const char* productDesc,
  127. const char* serverID,const char* accountID,const char* roleID,const char* roleLv) {
  128. NSDictionary *ext = @{
  129. @"extra":QsdkCreateNSString(extrasParams),
  130. };
  131. //支付
  132. SPProductData *product = [SPProductData new];
  133. product.productId = QsdkCreateNSString(productId);
  134. product.productName = QsdkCreateNSString(productName);
  135. product.amount =QsdkCreateNSString(amount);
  136. product.extra = ext;
  137. [SPSDK.instance pay:product callback:^(BOOL success, id data)
  138. {
  139. SDK_Pay_Callback(success,data);
  140. }];
  141. }
  142. void QSDK_logout() {
  143. //退出登录
  144. NSLog(@"U3D call SDK logout");
  145. [SPSDK.instance logout:^(BOOL success, id data)
  146. {
  147. SDK_Logout_Callback(success,data);
  148. }];
  149. }
  150. extern NSDictionary* GetParameters(NSArray* arr);
  151. void QSDK_UpdateRoleInfo(int type,const char * roleName,const char * roleId,
  152. const char * roleLv, const char * serverName,
  153. const char * serverId,const char * extra)
  154. {
  155. SPRoleData *roleData = [SPRoleData new];
  156. roleData.roleName =QsdkCreateNSString(roleName);
  157. roleData.roleLevel = QsdkCreateNSString(roleLv);
  158. roleData.roleId = QsdkCreateNSString(roleId);
  159. roleData.serverId = QsdkCreateNSString(serverId);
  160. roleData.serverName = QsdkCreateNSString(serverName);
  161. SPSDKReportType RType = SPSDKReportTypeOnlinePeriod;
  162. if(type == 0)
  163. {
  164. RType = SPSDKReportTypeCreateRole;
  165. }
  166. else if(type == 1)
  167. {
  168. RType = SPSDKReportTypeEnterGame;
  169. }
  170. else if(type == 4)
  171. {
  172. RType = SPSDKReportTypeOther;
  173. NSString* exStr = QsdkCreateNSString(extra);
  174. NSArray* dataArr = [exStr componentsSeparatedByString: @","];
  175. if(dataArr != nullptr && dataArr.count >= 4)
  176. {
  177. /*for(int i =4;i> dataArr.count;i+=2)
  178. {
  179. [NSDictionary dictionaryWithObject:dataArr[i+1] forKey:dataArr[i]];
  180. }*/
  181. if(dataArr.count==4)
  182. {
  183. roleData.extra = @{
  184. @"firEventName":dataArr[1],
  185. @"adjEventToken":dataArr[3],
  186. };
  187. }
  188. else
  189. {
  190. roleData.extra = @{
  191. @"firEventName":dataArr[1],
  192. @"adjEventToken":dataArr[3],
  193. @"firEventParameters":GetParameters(dataArr),
  194. };
  195. }
  196. }
  197. }
  198. [SPSDK.instance reportRole:roleData type:RType callback:^(BOOL success, id data)
  199. {
  200. }];
  201. }
  202. }
  203. NSDictionary* GetParameters(NSArray* arr)
  204. {
  205. int count = ((int)arr.count/2) - 2;
  206. int start = 4;
  207. if(count ==1){return @{arr[start]:arr[start+1],};}
  208. else if(count ==2){return @{arr[start]:arr[start+1],arr[start+2]:arr[start+3],}; }
  209. else if(count ==3){return @{arr[start]:arr[start+1],arr[start+2]:arr[start+3],arr[start+4]:arr[start+5],};}
  210. else if(count ==4){return @{arr[start]:arr[start+1],arr[start+2]:arr[start+3],arr[start+4]:arr[start+5],arr[start+6]:arr[start+7],};}
  211. else if(count ==5){return @{arr[start]:arr[start+1],arr[start+2]:arr[start+3],arr[start+4]:arr[start+5],arr[start+6]:arr[start+7],arr[start+8]:arr[start+9],};}
  212. else if(count ==6){return @{arr[start]:arr[start+1],arr[start+2]:arr[start+3],arr[start+4]:arr[start+5],arr[start+6]:arr[start+7],arr[start+8]:arr[start+9],arr[start+10]:arr[start+11],};}
  213. else if(count ==7){return @{arr[start]:arr[start+1],arr[start+2]:arr[start+3],arr[start+4]:arr[start+5],arr[start+6]:arr[start+7],arr[start+8]:arr[start+9],arr[start+10]:arr[start+11],arr[start+12]:arr[start+13],};}
  214. else if(count ==8){return @{arr[start]:arr[start+1],arr[start+2]:arr[start+3],arr[start+4]:arr[start+5],arr[start+6]:arr[start+7],arr[start+8]:arr[start+9],arr[start+10]:arr[start+11],arr[start+12]:arr[start+13],arr[start+14]:arr[start+15],};}
  215. else if(count ==9){return @{arr[start]:arr[start+1],arr[start+2]:arr[start+3],arr[start+4]:arr[start+5],arr[start+6]:arr[start+7],arr[start+8]:arr[start+9],arr[start+10]:arr[start+11],arr[start+12]:arr[start+13],arr[start+14]:arr[start+15],arr[start+16]:arr[start+17],};}
  216. else if(count >=10){return @{arr[start]:arr[start+1],arr[start+2]:arr[start+3],arr[start+4]:arr[start+5],arr[start+6]:arr[start+7],arr[start+8]:arr[start+9],arr[start+10]:arr[start+11],arr[start+12]:arr[start+13],arr[start+14]:arr[start+15],arr[start+16]:arr[start+17],arr[start+18]:arr[start+19],};}
  217. return [NSDictionary dictionary];
  218. }