QsdkMgr.mm 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  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. @"gameextrasParams":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. void QSDK_UpdateRoleInfo(int type,const char * roleName,const char * roleId,
  151. const char * roleLv, const char * serverName,
  152. const char * serverId,const char * extra)
  153. {
  154. SPSDKReportType RType = SPSDKReportTypeOnlinePeriod;
  155. if(type == 0)
  156. {
  157. RType = SPSDKReportTypeCreateRole;
  158. }
  159. else if(type == 1)
  160. {
  161. RType = SPSDKReportTypeEnterGame;
  162. }
  163. else
  164. {
  165. return;
  166. }
  167. SPRoleData *roleData = [SPRoleData new];
  168. roleData.roleName =QsdkCreateNSString(roleName);
  169. roleData.roleLevel = QsdkCreateNSString(roleLv);
  170. roleData.roleId = QsdkCreateNSString(roleId);
  171. roleData.serverId = QsdkCreateNSString(serverId);
  172. roleData.serverName = QsdkCreateNSString(serverName);
  173. [SPSDK.instance reportRole:roleData type:RType callback:^(BOOL success, id data)
  174. {
  175. }];
  176. }
  177. }