395 lines
14 KiB
Plaintext
395 lines
14 KiB
Plaintext
|
|
#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
|