sk-client/ChannelBackup/iOS_BT_Qipa2/XCode/Libraries/Plugins/iOS/SDK.mm

395 lines
14 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#import "SDK.h"
#import <QPJHLightSDK/QPJHLightSDK.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(){
[[SDK Instance] CustomerService];
}
void m_SDK_Relation(char* type){
[[SDK Instance] Relation:[NSString stringWithUTF8String: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"];
//设置代理,监听用户退出事件
// [JySDKManager defaultManager].acountDelegate = self
// 实现代理方法,监听用户退出和注册账号事件:
// #pragma mark -- KAcountDelegate
// - (void)userLogout:(NSDictionary *)resultDic
// {
// NSLog(@"用户从个人中心手动登出。\n%@",resultDic);
// [self login:nil];
// }
// - (void)userRegister:(NSString *)uid
// {
// NSLog(@"注册账号:%@",uid);
// };
DLOG(@"Init");
}
#pragma mark - JHLCoreEntityDelegate
//登录回调
- (void)qpjh_LightGetChannelLoginCallBack:(NSDictionary *)result {
NSString *token = [NSString stringWithFormat:@"%@",result[@"token"]];
NSString *userid = [NSString stringWithFormat:@"%@",result[@"super_user_id"]];
NSLog(@"登录成功:\n用户ID:%@,验证码:%@",userid,token);
NSString* rel = [NSString stringWithFormat:@"%@#%@#%@#%@",@"1",userid,@"",token];
[self callUnityFuncParam:@"LoginCallback" param:rel];
// self.super_user_id = [NSString stringWithFormat:@"%@",result[@"super_user_id"]];
// self.serviceToken = [NSString stringWithFormat:@"%@",result[@"token"]];
//
// NSLog(@"super_user_id == %@, serviceToken = %@ ",self.super_user_id,self.serviceToken );
//#warning - 用户效验接口 请在服务器做校验验证用户信息❗️❗️❗️
// NSURL *nsurl = [NSURL URLWithString:[NSString stringWithFormat:@"%@",@"https://supersdk.7pa.com/login/checkuserinfo"]];
//
// NSMutableURLRequest *mutableRequest=[NSMutableURLRequest requestWithURL:nsurl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:2];
//
// mutableRequest.HTTPMethod = @"POST";
//
// NSString *postStr = [NSString stringWithFormat:@"token=%@&super_user_id=%@",self.serviceToken, self.super_user_id];
//
// mutableRequest.HTTPBody = [postStr dataUsingEncoding:NSUTF8StringEncoding];
//
// NSURLSession *session = [NSURLSession sharedSession];
// NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:mutableRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// if (error) { //请求失败
// NSLog(@"qpjh onLoginFailed:login fail");
// } else { //请求成功
// NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
// NSString *surpercode = [NSString stringWithFormat:@"%@",dic[@"code"]];
// if ([surpercode isEqualToString:@"200"]) {
// NSLog(@"qpjh onLoginSuccess:%@", dic);
// } else {
// NSLog(@"qpjh onLoginFailed:login fail");
// }
// }
// }];
// [dataTask resume];
}
//上报角色回调
- (void)getUpdateRoleCallBack:(NSDictionary *)result {
NSLog(@"上报角色回调:%@",result);
}
//选择区服【停止新增用户】回调 当result为1可进入该区服,当result为其他值时,SDK里有错误提示.研发不做任何处理
- (void)canEnterListenCallBack:(NSString *)result {
NSLog(@"是否可以新增回调:%@",result);
if ([result isEqualToString:@"1"]) {
//TODO:可以进入该大区
} else {
//当前选择的大区已满或已关闭,SDK里有错误提示.研发不做任何处理
}
}
//支付成功回调
- (void)getPaySuccessCallBack:(NSDictionary *)result {
NSLog(@"支付成功回调:%@",result);
}
//支付失败回调
- (void)getPayFailCallBack:(NSDictionary *)result {
NSLog(@"支付失败回调:%@",result);
}
//注销, 切换账号回调
- (void)logOutCallBack:(NSString *)result {
NSLog(@"注销, 切换账号回调:%@",result);
#warning - 在游戏中主动退出SDK, 或在悬浮窗中切换账号 都会自动来到此回调, 请在此方法中做游戏退出的操作 (请勿在此回调中调用我方 [[JHLCoreEntity sharedInstance] qpjh_logout]; 否则会造成死循环❗️❗️❗️)
//TODO: 游戏退出, 回到游戏的登录选服页面
[self callUnityFuncParam:@"LogoutCallback" param:@"1"];
}
-(void)Login{
[[JHLCoreEntity sharedInstance] qpjh_setStartLoginListener:self];
[[JHLCoreEntity sharedInstance] qpjh_lightLoginStart];
DLOG(@"Login");
}
-(void)SwitchLogin{
DLOG(@"SwitchLogin");
}
-(void)Logout{
[[JHLCoreEntity sharedInstance] qpjh_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{
// NSLog(@"当前用户UID=%@,年龄=%@", JySDKManager.userId, age);
NSString* type = @"";
if(dataType == 2){
type = @"createrole";
}else if(dataType == 3){
type = @"enterserver";
}else if(dataType == 4){
type = @"levelup";
}else{
return;
}
NSDictionary *dic1 = @{
@"role_type": type, //角色上报类型: createrole 创建角色; enterserver 进入服务器调用; levelup 升级角色;
@"service_id": [NSString stringWithFormat:@"%d",serverId], //区服ID
@"service_name": serverName, //区服名字
@"role_id": roleID, //角色ID
@"role_name": roleName, //角色名称
@"role_level": Vip, //角色等级
@"power_value": @"1", //战力值 (必填没有填1)
//@"describe": @"1", //角色描述 (选填)
//@"money": @"1", //角色余额 (选填,玩家的背包元宝或金币或钻石数量)
@"experience": @"1" //角色经验 (选填,默认为1,可以填写等级)
};
NSError* error1;
NSData* jsonData1 = [NSJSONSerialization dataWithJSONObject:dic1 options:NSJSONWritingPrettyPrinted error:&error1];
NSString* roleData1 = [[NSString alloc] initWithData:jsonData1 encoding: NSUTF8StringEncoding];
[[JHLCoreEntity sharedInstance] qpjh_superRoleUpdate:roleData1];
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{
NSDictionary *dic1 = @{
@"good_id":[NSString stringWithFormat:@"%d", productId],, //商品ID (必填,不能为0)
@"good_name":productName, //商品名
@"game_order_sn":orderID, //订单号
@"money":price, //订单金额 (单位:元)
@"remark":extension //扩展参数 (选填)
};
NSError* error1;
NSData* jsonData1 = [NSJSONSerialization dataWithJSONObject:dic1 options:NSJSONWritingPrettyPrinted error:&error1];
NSString* roleData1 = [[NSString alloc] initWithData:jsonData1 encoding: NSUTF8StringEncoding];
[[JHLCoreEntity sharedInstance] qpjh_superOrder:roleData1];
DLOG(@"Pay");
}
-(void)Bind{
DLOG(@"Bind");
}
-(void)Community{
DLOG(@"Community");
}
-(void)CustomerService{
[[JHLCoreEntity sharedInstance] qpjh_openGmShop];
DLOG(@"CustomerService");
}
-(void)Relation:(NSString *) type{
if([type isEqualToString: @"1"]){
[[JHLCoreEntity sharedInstance] qpjh_openResourceStore];
}else if ([type isEqualToString: @"2"]){
[[JHLCoreEntity sharedInstance] qpjh_openSuperDiscount];
}
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