377 lines
12 KiB
Plaintext
377 lines
12 KiB
Plaintext
#import "SDK.h"
|
||
#import <SMPCQuickSDK/SMPCQuickSDK.h>
|
||
|
||
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(){
|
||
|
||
}
|
||
|
||
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(){
|
||
|
||
}
|
||
|
||
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{
|
||
[self callUnityFuncParam:@"InitCallback" param:@"1"];
|
||
//登录
|
||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(smpcQpLoginResult:) name:kSmpcQuickSDKNotiLogin object:nil];
|
||
//注销
|
||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(smpcQpLogoutResult:) name:kSmpcQuickSDKNotiLogout object:nil];
|
||
//充值结果
|
||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(smpcQpRechargeResult:) name:kSmpcQuickSDKNotiRecharge object:nil];
|
||
DLOG(@"Init");
|
||
}
|
||
|
||
- (void)smpcQpLoginResult:(NSNotification *)notify {
|
||
NSLog(@"登录成功通知%@",notify);
|
||
int error = [[[notify userInfo] objectForKey:kSmpcQuickSDKKeyError] intValue];
|
||
NSDictionary *userInfo = [notify userInfo];
|
||
if (error == 0) {
|
||
|
||
//悬浮球
|
||
[[SMPCQuickSDK defaultInstance] showToolBar:SMPC_QUICK_SDK_TOOLBAR_TOP_LEFT];
|
||
|
||
NSString *uid = [[SMPCQuickSDK defaultInstance] userId];
|
||
// NSString *user_name = [[SMPCQuickSDK defaultInstance] userNick];
|
||
QuickSDKUserTYPE type = [[SMPCQuickSDK defaultInstance] getChannelUserLoginType];
|
||
//获取user_token,用于从服务器去验证用户信息
|
||
NSString *token = userInfo[kSmpcQuickSDKKeyUserToken];
|
||
NSString *channelType = [NSString stringWithFormat:@"%d",[SMPCQuickSDK defaultInstance].channelType];
|
||
NSString* rel = [NSString stringWithFormat:@"%@#%@#%@#%@",@"1",uid,channelType,token];
|
||
[self callUnityFuncParam:@"LoginCallback" param:rel];
|
||
}
|
||
}
|
||
- (void)smpcQpLogoutResult:(NSNotification *)notify {
|
||
NSLog(@"%s",__func__);
|
||
NSDictionary *userInfo = notify.userInfo;
|
||
int errorCode = [userInfo[kSmpcQuickSDKKeyError] intValue];
|
||
switch (errorCode) {
|
||
case SMPC_QUICK_SDK_ERROR_NONE:
|
||
{
|
||
[self callUnityFuncParam:@"LogoutCallback" param:@"1"];
|
||
NSLog(@"注销成功");
|
||
}
|
||
break;
|
||
case SMPC_QUICK_SDK_ERROR_LOGOUT_FAIL:
|
||
default:
|
||
{
|
||
//注销失败
|
||
[self callUnityFuncParam:@"LogoutCallback" param:@"0"];
|
||
NSLog(@"注销失败");
|
||
}
|
||
break;
|
||
}
|
||
if (errorCode == SMPC_QUICK_SDK_ERROR_NONE) {
|
||
|
||
}
|
||
}
|
||
|
||
- (void)smpcQpRechargeResult:(NSNotification *)notify{
|
||
NSLog(@"充值结果%@",notify);
|
||
NSDictionary *userInfo = notify.userInfo;
|
||
int error = [[userInfo objectForKey:kSmpcQuickSDKKeyError] intValue];
|
||
switch (error) {
|
||
case SMPC_QUICK_SDK_ERROR_NONE:
|
||
{
|
||
//充值成功
|
||
//QuickSDK订单号,cp下单时传入的订单号,渠道sdk的订单号,cp下单时传入的扩展参数
|
||
NSString *orderID = userInfo[kSmpcQuickSDKKeyOrderId];
|
||
NSString *cpOrderID = userInfo[kSmpcQuickSDKKeyCpOrderId];
|
||
NSLog(@"充值成功数据:%@,%@",orderID,cpOrderID);
|
||
}
|
||
break;
|
||
case SMPC_QUICK_SDK_ERROR_RECHARGE_CANCELLED:
|
||
case SMPC_QUICK_SDK_ERROR_RECHARGE_FAILED:
|
||
{
|
||
//充值失败
|
||
NSString *orderID = userInfo[kSmpcQuickSDKKeyOrderId];
|
||
NSString *cpOrderID = userInfo[kSmpcQuickSDKKeyCpOrderId];
|
||
NSLog(@"充值失败数据%@,%@",orderID,cpOrderID);
|
||
}
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
-(void)Login{
|
||
int error = [[SMPCQuickSDK defaultInstance] login];
|
||
if (error != 0) {
|
||
NSLog(@"不能登录:%d",error);
|
||
}
|
||
DLOG(@"Login");
|
||
}
|
||
|
||
-(void)SwitchLogin{
|
||
DLOG(@"SwitchLogin");
|
||
}
|
||
|
||
-(void)Logout{
|
||
[[SMPCQuickSDK defaultInstance] logout];
|
||
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{
|
||
// 更新角色信息
|
||
SMPCQuickSDKGameRoleInfo *gameRoleInfo = [SMPCQuickSDKGameRoleInfo new];
|
||
gameRoleInfo.serverName = serverName;
|
||
gameRoleInfo.gameRoleName = roleName;
|
||
gameRoleInfo.serverId = [NSString stringWithFormat:@"%d",serverId]; //需要是数字字符串
|
||
gameRoleInfo.gameRoleID = roleID;
|
||
gameRoleInfo.gameUserBalance = @"0";
|
||
gameRoleInfo.vipLevel = Vip;
|
||
gameRoleInfo.gameUserLevel = roleLevel;
|
||
gameRoleInfo.partyName = @"";
|
||
gameRoleInfo.creatTime = roleCreateTime;
|
||
gameRoleInfo.fightPower = @"0";//战力值通常为数值
|
||
[[SMPCQuickSDK defaultInstance] updateRoleInfoWith:gameRoleInfo isCreate:dataType==2];//如果这个角色是刚刚创建的,这里isCreate可以传YES
|
||
|
||
DLOG(@"SubmitExtraData");
|
||
}
|
||
|
||
-(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{
|
||
|
||
SMPCQuickSDKGameRoleInfo *role = [[SMPCQuickSDKGameRoleInfo alloc] init];
|
||
SMPCQuickSDKPayOrderInfo *order = [[SMPCQuickSDKPayOrderInfo alloc] init];
|
||
role.serverName = serverName;
|
||
role.gameRoleName = roleName;
|
||
role.serverId = serverID; //需要是数字字符串
|
||
role.gameRoleID = roleID;
|
||
role.gameUserBalance = @"0";
|
||
role.vipLevel = Vip;
|
||
role.gameUserLevel = [NSString stringWithFormat:@"%d",roleLevel];
|
||
// role.partyName = @"ios";
|
||
// role.creatTime = @"1580105921";
|
||
role.fightPower = @"0";//战力值通常为数值
|
||
order.goodsID = rechargeId; //必填 iap时注意和苹果开发者后台一致,或者渠道映射的
|
||
order.productName = productName;//必填
|
||
order.cpOrderID = orderID; //必填 游戏订单号
|
||
order.count = 1; //必填 数量
|
||
order.amount = [price floatValue]; //必填 总价
|
||
// order.callbackUrl = @"";
|
||
order.extrasParams = extension;
|
||
// //个别渠道要求单价*数量==总价
|
||
// if([SMPCQuickSDK defaultInstance].channelType == 9999){
|
||
// //通过判断渠道号处理特定渠道的参数
|
||
// order.goodsID = @"productlist.name";
|
||
// }
|
||
int error = [[SMPCQuickSDK defaultInstance] payOrderInfo:order
|
||
roleInfo:role];
|
||
if (error!=0)
|
||
NSLog(@"不能支付:%d", error);
|
||
|
||
|
||
DLOG(@"Pay");
|
||
}
|
||
|
||
-(void)Bind{
|
||
DLOG(@"Bind");
|
||
}
|
||
|
||
-(void)Community{
|
||
DLOG(@"Community");
|
||
}
|
||
|
||
-(void)CustomerService{
|
||
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");
|
||
}
|
||
|
||
-(void)LoginPanel_Btn2{
|
||
DLOG(@"LoginPanel_Btn2");
|
||
}
|
||
|
||
-(void)CustomEvent:(int) type
|
||
param :(NSString *) param{
|
||
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
|