#import "SDK.h" #import extern UIViewController *UnityGetGLViewController(); //NSString转char* #define MakeStringCopy( _x_ ) ( _x_ != NULL && [_x_ isKindOfClass:[NSString class]] ) ? strdup( [_x_ UTF8String] ) : NULL //日志打印 #define DLOG(...) NSLog(__VA_ARGS__); extern "C"{ void m_SDK_Init(){ [[SDK Instance] Init]; } void m_SDK_Login(){ [[SDK Instance] Login]; } void m_SDK_Logout(){ [[SDK Instance] Logout]; } bool m_SDK_IsSupportExit(){ return [[SDK Instance] IsSupportExit]; } void m_SDK_Exit(){ [[SDK Instance] ExitGame]; } void m_SDK_SubmitExtraData(int dataType,int serverId,char* serverName, char* zoneID, char* zoneName, char* roleID, char* roleName, char* roleLevel, char* guildlD, char* Vip, int moneyNum, char* roleCreateTime, char* roleLevelUpTime){ [[SDK Instance] SubmitExtraData:dataType serverId:serverId serverName:[NSString stringWithUTF8String:serverName] zoneID:[NSString stringWithUTF8String:zoneID] zoneName:[NSString stringWithUTF8String:zoneName] roleID:[NSString stringWithUTF8String:roleID] roleName:[NSString stringWithUTF8String:roleName] roleLevel:[NSString stringWithUTF8String:roleLevel] guildlD:[NSString stringWithUTF8String:guildlD] Vip:[NSString stringWithUTF8String:Vip] moneyNum:moneyNum roleCreateTime:[NSString stringWithUTF8String:roleCreateTime] roleLevelUpTime:[NSString stringWithUTF8String:roleLevelUpTime]]; } void m_SDK_Pay(char* rechargeId,int showType, int productId, char* productName, char* productDesc,char* price,char* currencyType,int ratio,int buyNum,int coinNum, char* zoneId, char* serverID, char* serverName, char* accounted, char* roleID, char* roleName,int roleLevel, char* Vip, char* guildlD, char* payNotifyUrl, char* extension, char* orderID){ [[SDK Instance] Pay:[NSString stringWithUTF8String:rechargeId] showType:showType productId:productId productName:[NSString stringWithUTF8String:productName] productDesc:[NSString stringWithUTF8String:productDesc] price:[NSString stringWithUTF8String:price] currencyType:[NSString stringWithUTF8String:currencyType] ratio:ratio buyNum:buyNum coinNum:coinNum zoneId:[NSString stringWithUTF8String:zoneId] serverID:[NSString stringWithUTF8String:serverID] serverName:[NSString stringWithUTF8String:serverName] accounted:[NSString stringWithUTF8String:accounted] roleID:[NSString stringWithUTF8String:roleID] roleName:[NSString stringWithUTF8String:roleName] roleLevel:roleLevel Vip:[NSString stringWithUTF8String:Vip] guildlD:[NSString stringWithUTF8String:guildlD] payNotifyUrl:[NSString stringWithUTF8String:payNotifyUrl] extension:[NSString stringWithUTF8String:extension] orderID:[NSString stringWithUTF8String:orderID]]; } void m_SDK_Bind(){ [[SDK Instance] Bind]; } void m_SDK_Community(){ [[SDK Instance] Community]; } void m_SDK_CustomerService(){ [[SDK Instance] CustomerService]; } void m_SDK_Relation(char* type){ } void m_SDK_Cancellation(){ } bool m_SDK_IsCDKey(){ return false; } void m_SDK_CDKey(char* cdkey, char* serverID, char* roleID){ } void m_SDK_LoginPanel_Btn1(){ [[SDK Instance] LoginPanel_Btn1]; } void m_SDK_LoginPanel_Btn2(){ } void m_SDK_CustomEvent(int type, char* param){ [[SDK Instance] CustomEvent:type param:[NSString stringWithUTF8String:param]]; } } @implementation SDK NSString* callUnityTargetGameObjectName = @"SDK.SDKManager"; static SDK * instance = nil; +(SDK*)Instance { if(instance == nil){ instance =[[SDK alloc] init]; } return instance; } -(void)Init{ [MontarSDK mna_initWithDelegate:(id)self]; [self callUnityFuncParam:@"InitCallback" param:@"1"]; DLOG(@"Init"); } #pragma mark - MontarSDKDelegate - (void)mna_didLoginSuccess:(MNAAccount *)user { NSLog(@"Account ID: %@", user.accountID); NSLog(@"Access Token: %@", user.accessToken); NSString* rel = [NSString stringWithFormat:@"%@#%@#%@#%@",@"1",@"",[[[NSBundle mainBundle]infoDictionary] objectForKey:@"CFBundleShortVersionString"],user.accessToken]; [self callUnityFuncParam:@"LoginCallback" param:rel]; } -(void)Login{ [MontarSDK mna_showLogin]; DLOG(@"Login"); } -(void)SwitchLogin{ DLOG(@"SwitchLogin"); } - (void)mna_didLogoutSuccess { NSLog(@"SDK logout"); [self callUnityFuncParam:@"LogoutCallback" param:@"1"]; } -(void)Logout{ [MontarSDK mna_logoutAccount]; DLOG(@"Logout"); } -(bool)IsSupportExit{ DLOG(@"IsSupportExit"); return false; } -(void)ExitGame{ DLOG(@"ExitGame"); } -(void)SubmitExtraData:(int) dataType serverId :(int) serverId serverName :(NSString *) serverName zoneID :(NSString *) zoneID zoneName :(NSString *) zoneName roleID :(NSString *) roleID roleName :(NSString *) roleName roleLevel :(NSString *) roleLevel guildlD :(NSString *) guildlD Vip :(NSString *) Vip moneyNum :(int) moneyNum roleCreateTime :(NSString *) roleCreateTime roleLevelUpTime :(NSString *) roleLevelUpTime{ if(dataType == 2 or dataType == 3){ [MontarSDK mna_loginToServer:[NSString stringWithFormat:@"%d",serverId] serverName:serverName charactorId:roleID charactorName:roleName charactorLevel:[roleLevel integerValue]]; DLOG(@"SubmitExtraData"); } } - (void)mna_didPaymentIapSuccess:(NSDictionary *)dictData { NSLog(@"Order ID: %@", dictData[kMontarKeyOrderID]); NSLog(@"Status: %@", dictData[kMontarKeyStatus]); NSLog(@"Role ID: %@", dictData[kMontarKeyRoleID]); NSLog(@"Area ID: %@", dictData[kMontarKeyAreaID]); NSLog(@"State: %@", dictData[kMontarKeyState]); NSLog(@"Price on platform: %@", dictData[kMontarKeyPricePlatform]); NSLog(@"Is sandbox: %@", dictData[kMontarKeyIsSandbox]); NSLog(@"Detail: %@", dictData[kMontarKeyDetails]); NSLog(@"Time: %@", dictData[kMontarKeyTime]); } -(void)Pay:(NSString *) rechargeId showType :(int)showType productId :(int) productId productName :(NSString *) productName productDesc :(NSString *) productDesc price :(NSString *) price currencyType :(NSString *) currencyType ratio :(int) ratio buyNum :(int) buyNum coinNum :(int) coinNum zoneId :(NSString *) zoneId serverID :(NSString *) serverID serverName :(NSString *) serverName accounted :(NSString *) accounted roleID :(NSString *) roleID roleName :(NSString *) roleName roleLevel :(int) roleLevel Vip :(NSString *) Vip guildlD :(NSString *) guildlD payNotifyUrl :(NSString *) payNotifyUrl extension :(NSString *) extension orderID :(NSString *) orderID{ [MontarSDK mna_showPaymentWithProductId:rechargeId withItemNo:extension withStateValue:nil]; DLOG(@"Pay"); } -(void)Bind{ DLOG(@"Bind"); } -(void)Community{ DLOG(@"Community"); } -(void)CustomerService{ [MontarSDK mna_showDashboard]; DLOG(@"CustomerService"); } -(void)Relation:(NSString *) type{ DLOG(@"Relation"); } -(void)Cancellation{ DLOG(@"Cancellation"); } -(bool)IsCDKey{ DLOG(@"IsCDKey"); return false; } -(void)CDKey:(NSString *) cdkey serverID :(NSString *)serverID roleID :(NSString *)roleID{ DLOG(@"CDKey"); } -(void)LoginPanel_Btn1{ DLOG(@"LoginPanel_Btn1"); [MontarSDK mna_showPaymentWithProductId:@"" withItemNo:@"" withStateValue:@""]; } -(void)LoginPanel_Btn2{ DLOG(@"LoginPanel_Btn2"); } -(void)CustomEvent:(int) type param :(NSString *) param{ switch (type) { case -1: [MontarSDK mna_trackEnterGameBtnClicked:param]; break; case 0://通用 { if([param isEqualToString:@"开始热更"]){ [MontarSDK mna_trackResourceStarted]; } else if([param isEqualToString:@"热更结束"]){ [MontarSDK mna_trackResourceFinished]; } } break; case 1://解锁功能 break; case 2://好友数量 break; case 3://英雄数量 break; case 4://玩家升级 [MontarSDK mna_trackLevelAchieved:[param integerValue]]; if([param isEqualToString:@"7"]){ // [MontarSDK mna_ta] } break; case 5://vip升级 [MontarSDK mna_trackVipAchieved:[param integerValue]]; break; case 6://战斗力提升 break; case 7://加入公会 break; case 99://充值成功 break; default: break; } DLOG(@"CustomEvent"); } //调用Unity方法 -(void)callUnityFunc:(NSString*)funcName{ UnitySendMessage(MakeStringCopy(callUnityTargetGameObjectName), MakeStringCopy(funcName), ""); } //调用Unity方法 -(void)callUnityFuncParam:(NSString*)funcName param:(NSString*)param{ UnitySendMessage(MakeStringCopy(callUnityTargetGameObjectName), MakeStringCopy(funcName), MakeStringCopy(param)); } @end