| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- #import <Foundation/Foundation.h>
- #import <SMSDK/SMSDK.h>
- static NSString* UnityListenerGoName;
- void SendMsgToUnity(NSString* messageName,NSString* parameters)
- {
- if (!UnityListenerGoName) {
- NSLog(@"U3D not set listener");
- return;
- }
- if ([parameters isKindOfClass:NSString.class] && [parameters length]) {
- UnitySendMessage([UnityListenerGoName UTF8String], [messageName UTF8String], [parameters UTF8String]);
- }
- else{
- UnitySendMessage([UnityListenerGoName UTF8String], [messageName UTF8String], "");
- }
- }
- NSString* QsdkCreateNSString (const char* string)
- {
- if (string)
- return [NSString stringWithUTF8String: string];
- else
- return [NSString stringWithUTF8String: ""];
- }
- //=============================回调函数=============================================
- //=============================回调函数=============================================
- //=============================回调函数=============================================
- //
- // void SDK_observer_CallBack(SPSDKNotification *notification)
- // {
- // switch (notification.type) {
- // case SPNotificationTypeInitSDK:
- // {
-
- // }
- // break;
- // case SPNotificationTypeLogout:
- // {
- // NSLog(@"退出登录成功");
- // SendMsgToUnity(@"onLogoutSuccess",@"");
- // }
- // break;
- // default:
- // break;
- // }
- // }
- void SDK_Init_Callback(NSNotification * notify)
- {
- if (notify.object == kSMSDKSuccessResult) {
- SendMsgToUnity(@"onInitSuccess",@"Init:Init Success");
- //初始化成功, 調用登錄方法
-
- } else if (notify.object == kSMSDKFailedResult) {
-
- //初始化失敗, 可以重新初始化
- SendMsgToUnity(@"onInitSuccess",@"Fail");
- }
- }
- void SDK_Logout_Callback(NSNotification * notify)
- {
- }
- void SDK_Login_Callback(NSNotification * notify)
- {
- //登錄成功,根據token使用服務端api獲取用戶唯一標識 guid (guid獲取方法請查看服務端文檔)
- if (notify.object == kSMSDKSuccessResult) {
- //登錄成功
- NSString *tokenKey = notify.userInfo[kSMSDKLoginTokenKey];
- int code = 0;
- SendMsgToUnity(@"onLoginSuccess",[NSString stringWithFormat:@"%d[]%@[]%@[]%@[]%@",code,@"success", tokenKey, @"-1", @"-1"]);
- } else {
- //登錄失敗或者其他情況
- SendMsgToUnity(@"onLoginFail",@"登录失败");
- }
-
- }
- void SDK_Pay_Callback(NSNotification * notify)
- {
- //支付結果
- if (notify.object == kSMSDKSuccessResult) {
- //支付成功, 刷新用戶數據
- SendMsgToUnity(@"onPaySuccess",@"支付Suc");
- } else if (notify.object == kSMSDKUserCancelResult) {
- //支付取消, 刷新用戶數據数,保障不漏單
- SendMsgToUnity(@"onPayFail",@"");
- } else if (notify.object == kSMSDKFailedResult) {
- //支付錯誤, 刷新用戶數據,保障不漏單
- NSString *errMsg = notify.userInfo[kSMSDKErrorShowKey];
- SendMsgToUnity(@"onPayFail",errMsg);
- }
-
- }
- void SDK_ChangeAppkey_Callback(NSNotification * notify)
- {
- }
- void SDK_UpdateRoleInfo_Callback(BOOL success, id data)
- {
- }
- //=============================回调函数=============================================
- //=============================回调函数=============================================
- extern "C"
- {
-
- void QSDK_SetListener(const char *gameObjectName){
- UnityListenerGoName = QsdkCreateNSString(gameObjectName);
- }
-
- void QSDK_Init() {
- //SendMsgToUnity(@"onInitSuccess",@"Init:Init Success");
- //SendMsgToUnity(@"onInitSuccess",@"Fail");
- //SDK初始化 code: 0:成功, 1:失败
- NSString *gameId = @"127";
- NSDictionary<NSString *, id> *infoDictionary = [NSBundle mainBundle].infoDictionary;
- id value = [infoDictionary objectForKey:@"X7SDK_GameKey"];
- if (value != NULL && [value isKindOfClass:[NSString class]]) {
- gameId = (NSString *)value;
- }
- [[NSNotificationCenter defaultCenter] removeObserver:self name:SMSDKInitDidFinishNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(SDK_Init_Callback:) name:SMSDKInitDidFinishNotification object:nil];
-
- [[NSNotificationCenter defaultCenter] removeObserver:self name:SMSDKLoginNotification object:nil];
- SEL extractedExpr = @selector(SDK_Login_Callback:);
- [[NSNotificationCenter defaultCenter] addObserver:self selector:extractedExpr name:SMSDKLoginNotification object:nil];
-
- [[NSNotificationCenter defaultCenter] removeObserver:self name:SMSDKLogoutNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(SDK_Logout_Callback:) name:SMSDKLogoutNotification object:nil];
-
- [[NSNotificationCenter defaultCenter] removeObserver:self name:SMSDKPayResultNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(SDK_Pay_Callback:) name:SMSDKPayResultNotification object:nil];
-
- [[NSNotificationCenter defaultCenter] removeObserver:self name:kSMSDKChangeAppkeyNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(SDK_ChangeAppkey_Callback:) name:kSMSDKChangeAppkeyNotification object:nil];
-
- //使用appKey初始化SDK
- [SMSDK smInitWithAppKey:gameId];
- }
- void QSDK_login()
- {
- //使用SDK登录界面登录
- [SMSDK smLogin];
- }
- void QSDK_Pay(const char *productId,const char *productName,const char * amount,const char *orderNo,
- const char *callBackUrl,const char *extrasParams,
- const char * gameName,const char * serverName,
- const char* productDesc,
- const char* serverID,const char* accountID,const char* roleID,const char* roleLv) {
-
-
-
- }
- void QSDK_Pay_x7(const char * extends_info_data,
- const char * game_area,
- const char * game_level,
- const char * game_orderid,
- const char * game_currency,
- const char * game_price,
- const char * game_role_id,
- const char * game_role_name,
- const char * game_guid,
- const char * notify_id,
- const char * subject,
- const char * game_sign,
- const char * game_access_version) {
-
- SMPayInfo * payInfo = [[SMPayInfo alloc] init];
- payInfo.game_orderid = QsdkCreateNSString(game_orderid);
- payInfo.game_level = QsdkCreateNSString(game_level);
- payInfo.game_area = QsdkCreateNSString(game_area);
- payInfo.game_price = QsdkCreateNSString(game_price);
- payInfo.game_role_id = QsdkCreateNSString(game_role_id);
- payInfo.game_role_name = QsdkCreateNSString(game_role_name);
- payInfo.subject = QsdkCreateNSString(subject);
- payInfo.notify_id = QsdkCreateNSString(notify_id);
- payInfo.game_sign = QsdkCreateNSString(game_sign);
- payInfo.extends_info_data = QsdkCreateNSString(extends_info_data);
- payInfo.game_access_version = QsdkCreateNSString(game_access_version);
- payInfo.game_guid = QsdkCreateNSString(game_guid);
- //遊戲方不可用此方法產生game_sign字段,這個方法只是让Demo的支付接口可以跑通的臨時方法
- //遊戲裡面game_sign參數是根據兩邊服務器約定的規則產生的,由遊戲的服務器返回給客戶端,詳見服務器的對接文檔
- payInfo.game_currency = QsdkCreateNSString(game_currency);
- //對參數做判空操作,如果有參數為空請不要傳進sdk中!!!
- //QsdkCreateNSString(extrasParams)
- [SMSDK smPayWithNewPayInfo:payInfo];
- }
- void QSDK_logout() {
-
- //退出登录
- NSLog(@"U3D call SDK logout");
- [SMSDK smLogout];
- [SMSDK smAfterLogoutRole];
- }
- extern NSDictionary* GetParameters(NSArray* arr);
- void QSDK_UpdateRoleInfo_X7(int type, string game_guid,
- const char * game_area,
- const char * game_area_id ,
- const char * game_role_id ,
- const char * game_role_name ,
- const char * roleLevel ,
- const char * roleCE,
- const char * roleStage,
- const char * roleRechargeAmount ,
- const char * roleGuild ,
- const char * roleGuildId,const char * extra)
- {
- if(type == 4)
- {
- return;
- }
- SMGameRoleInfo *gameRoleInfo = [[SMGameRoleInfo alloc] init];
- gameRoleInfo.game_guid =QsdkCreateNSString(game_guid);
- gameRoleInfo.game_area =QsdkCreateNSString(game_area);
- gameRoleInfo.game_area_id = QsdkCreateNSString(game_area_id);
- gameRoleInfo.game_role_id = QsdkCreateNSString(game_role_id);
- gameRoleInfo.game_role_name = QsdkCreateNSString(game_role_name);
- gameRoleInfo.roleLevel = QsdkCreateNSString(roleLevel);
- gameRoleInfo.roleCE = QsdkCreateNSString(roleCE);
- gameRoleInfo.roleStage = QsdkCreateNSString(roleStage);
- gameRoleInfo.roleRechargeAmount = QsdkCreateNSString(roleRechargeAmount);
- gameRoleInfo.roleGuild = QsdkCreateNSString(roleGuild);
- gameRoleInfo.roleGuildId = QsdkCreateNSString(roleGuildId);
- [SMSDK smAfterChooseRoleSendInfo:gameRoleInfo];
-
-
- }
- }
- NSDictionary* GetParameters(NSArray* arr)
- {
- int count = ((int)arr.count/2) - 2;
- int start = 4;
- if(count ==1){return @{arr[start]:arr[start+1],};}
- else if(count ==2){return @{arr[start]:arr[start+1],arr[start+2]:arr[start+3],}; }
- else if(count ==3){return @{arr[start]:arr[start+1],arr[start+2]:arr[start+3],arr[start+4]:arr[start+5],};}
- 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],};}
- 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],};}
- 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],};}
- 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],};}
- 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],};}
- 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],};}
- 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],};}
- return [NSDictionary dictionary];
- }
|