SDKInterface.m 10.1 KB
//
//  UnionInterface.m
//  PoolSdk
//
//  Created by winFan on 11/23/15.
//  Copyright (c) 2015 winFan. All rights reserved.
//
#include "SDKInterface.h"
#import <UIKit/UIKit.h>
#import <XFLoginSDK/XFLoginViewSDK.h>
#import <PaymentSDK/XFPayment.h>
#import <XFTrackIO/XFTrackIO.h>

@implementation SDKInterface : Interface

NSString *_openId;
NSString *_serverId;
NSString *_serverName;
NSString *_roleId;
NSString *_roleName;

/**
 初始化SDK
*/
- (void)SDKinit:(UIViewController *) control
{
    //必须继承
    [super SDKinit:control];
    
    [PoolConfig getInstance];
    
    
    _openId = nil;
    _serverId = nil;
    _serverName = nil;
    _roleId = nil;
    _roleName = nil;
    
    NSString* appId = [[PoolConfig getInstance]getValueByKey:@"sdkAppId"];
    NSString* packageId = [[PoolConfig getInstance]getValueByKey:@"sdkPackageId"];
    NSString* appKey = [[PoolConfig getInstance]getValueByKey:@"sdkAppKey"];
    NSString* reyunKey = [[PoolConfig getInstance]getValueByKey:@"sdkReyunKey"];
    
    [[XFPayment sharedInstance]
     initWithAppid:appId //应用id(三端通用)
     andPackageId:packageId //包id(三端通用)
     andAppKey:appKey];//应用key(三端通用)
    
    [[XFLoginViewSDK sharedInstance]
     initWithAPPId:appId //应用id(三端通用)
     andPackageId:packageId //包id(三端通用)
     andAppKey:appKey];//应用key(三端通用)
    
    [[XFTrackIO sharedInstance]
     initWithAppid:appId //应用id(三端通用)
     andPackageId:packageId //包id(三端通用)
     andAppKey:appKey //应用key(三端通用)
     andReyunKey:reyunKey];//热云key
    
    [[XFTrackIO sharedInstance] setLogPrint:YES];//是否显示日志,默认NO
    
    [[XFLoginViewSDK sharedInstance] setXFLoginDelegate:self];
    
    [[XFPayment sharedInstance] setXFpayDelegate:self];
    
    
    [[PoolChecker getInstance] sendNotice:PoolSDKNotificationInitSDK notiName:@"InitSuccess" statusCode:POOLSDK_NO_ERROR description:@"initSuccess" extendData:nil];

}

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
    [[XFPayment sharedInstance] application:application openUrl:url];
    return YES;
}

//#ifdef __IPHONE_9_0
//-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
//    [[XFPayment sharedInstance] application:app openUrl:url];
//    return YES;
//}
//#else
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    [[XFPayment sharedInstance] application:application openUrl:url];
    return YES;
}

//#endif

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

{
    return UIInterfaceOrientationMaskAll;
    
}

/**
 登录SDK
 */
- (void)SDKloginSDK
{
    NSLog(@"调用了LoginSDK");
    [[XFLoginViewSDK sharedInstance] OnLogin];
}

#pragma mark - Login Delegate//返回登录ID和登录标识
-(void)SDKLoginSuccessWithData:(NSDictionary *)dic{
    NSLog(@"登录成功:%@",dic);//返回openId和token
    
    PoolLoginInfo *loginInfo = [[PoolLoginInfo alloc]init];
    loginInfo.openId = [dic objectForKey:@"openId"];//渠道userId
    loginInfo.timestamp = [self getCurrentTimestamp];
    loginInfo.sign = [dic objectForKey:@"token"];//渠道SDK的token
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        [[PoolChecker getInstance]startCheck:loginInfo];//登录验证请求
    });
    
    NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
    [dict setValue:[dic objectForKey:@"openId"] forKey:@"openId"]; //帐号唯一ID
    
    [[XFTrackIO sharedInstance]
     startTrackWithType:XFTrackIOTypeAccountRegist
     andTrackData:dict];
}


- (void)SDKreport:(PoolReportInfo *)reportInfo
{
    NSLog(@"reportInfo");
    if ([REPORT_CREATEROLE isEqualToString:[reportInfo reportType]]) {
        
        NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
        [dict setValue:[reportInfo openId] forKey:@"openId"];//登录ID
        [dict setValue:[reportInfo serverId] forKey:@"serverId"];//服务器ID
        [dict setValue:[reportInfo serverName] forKey:@"serverName"];//服务器名称
        [dict setValue:[reportInfo playerId] forKey:@"roleId"];//角色ID
        [dict setValue:[reportInfo playerName] forKey:@"roleName"];//角色名称
        
        [[XFTrackIO sharedInstance]
         startTrackWithType:XFTrackIOTypeEnterGame
         andTrackData:dict];
    }else if ([[reportInfo reportType] isEqualToString:REPORT_ENTER]) {
#if ! __has_feature(objc_arc)
        if (_openId) {
            [_openId release];
        }
        _openId = [reportInfo openId];
        [_openId retain];
#else
        _openId = [reportInfo openId];
#endif
        
#if ! __has_feature(objc_arc)
        if (_serverId) {
            [_serverId release];
        }
        _serverId = [reportInfo openId];
        [_serverId retain];
#else
        _serverId = [reportInfo openId];
#endif
        
#if ! __has_feature(objc_arc)
        if (_serverName) {
            [_serverName release];
        }
        _serverName = [reportInfo openId];
        [_serverName retain];
#else
        _serverName = [reportInfo openId];
#endif
        
#if ! __has_feature(objc_arc)
        if (_roleId) {
            [_roleId release];
        }
        _roleId = [reportInfo openId];
        [_roleId retain];
#else
        _roleId = [reportInfo openId];
#endif
        
#if ! __has_feature(objc_arc)
        if (_roleName) {
            [_roleName release];
        }
        _roleName = [reportInfo openId];
        [_roleName retain];
#else
        _roleName = [reportInfo openId];
#endif
        
        NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
        [dict setValue:[reportInfo openId] forKey:@"openId"];//登录ID
        [dict setValue:[reportInfo serverId] forKey:@"serverId"];//服务器ID
        [dict setValue:[reportInfo serverName] forKey:@"serverName"];//服务器名称
        [dict setValue:[reportInfo playerId] forKey:@"roleId"];//角色ID
        [dict setValue:[reportInfo playerName] forKey:@"roleName"];//角色名称
        
        [[XFTrackIO sharedInstance]
         startTrackWithType:XFTrackIOTypeEnterGame
         andTrackData:dict];
    }
}

/**
 @return 商品名称
 */
- (NSString*)getProductNameByAmount:(NSString*)products amount:(NSString*)amount
{
    NSData* jsonData = [NSJSONSerialization dataWithJSONObject:products options:NSJSONWritingPrettyPrinted error:nil];
    if(jsonData){
        NSDictionary* productList = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil];
        if(productList){
            NSEnumerator* keysList = [productList keyEnumerator];
            id keyValue;
            while (keyValue = [keysList nextObject])
            {
                NSString* appleAmount = [[productList objectForKey:keyValue] objectForKey:@"amount"];
                if(appleAmount.intValue == amount.intValue){
                     NSString* productName = [[productList objectForKey:keyValue] objectForKey:@"name"];
                    return productName;
                }
            }
        }
    }
    NSLog(@"get product name error amount:%@",amount);
    return @"元宝";
}

/**
 @return 商品ID
 */
- (NSString*)getProductIdByAmount:(NSString*)products amount:(NSString*)amount
{
    NSData* jsonData = [NSJSONSerialization dataWithJSONObject:products options:NSJSONWritingPrettyPrinted error:nil];
    if(jsonData){
        NSDictionary* productList = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil];
        if(productList){
            NSEnumerator* keysList = [productList keyEnumerator];
            id keyValue;
            while (keyValue = [keysList nextObject])
            {
                NSLog(@"i found %@",keyValue);
                NSString* appleAmount = [[productList objectForKey:keyValue] objectForKey:@"amount"];
                NSLog(@"appleAmount:%@ amount:%@",appleAmount,amount);
                if(appleAmount.intValue == amount.intValue){
                    return keyValue;
                }
            }
        }
    }
    return @"unknow";
}

- (void)receiveCreateOrder:(NSNotification *)notification
{
    NSLog(@"创建订单成功");
    PoolPayInfo *payInfo = [notification object];
    
    NSString *openId = [payInfo playerId];
    NSString *myamount = [payInfo postAmount];
    NSString *queryId = [payInfo queryId];
    NSString *productId = [self getProductIdByAmount:payInfo.products amount:myamount];
    
    NSLog(@"receiveCreateOrder openid %@  amount %@ queryId %@, product %@", openId, myamount, queryId, productId);
    
    NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
    [dict setValue:openId forKey:@"openId"];
    [dict setValue:myamount forKey:@"money"];
    [dict setValue:queryId forKey:@"extra"];
    [dict setValue:productId forKey:@"orderid"];
    
    [[XFPayment sharedInstance] payWithOrderInfo:dict];
    
}

#pragma mark - Pay Delegate //支付返回订单号和金额
-(void)ApplePayResult:(PayResultNum)result resultData:(NSDictionary *)data{
    
    if (result == PayResultNumSuccess) {
        
        NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
        [dict setValue:_openId forKey:@"openId"];//登录ID
        [dict setValue:_serverId forKey:@"serverId"];//服务器ID
        [dict setValue:_serverName forKey:@"serverName"]; //服务器名称
        [dict setValue:_roleId forKey:@"roleId"];//角色ID
        [dict setValue:_roleName forKey:@"roleName"];//角色名称
        [dict setValue:[data objectForKey:@"money"] forKey:@"money"];// 支付金额
        [dict setValue:[data objectForKey:@"orderId"] forKey:@"orderId"]; //  支付订单ID
        
        [[XFTrackIO sharedInstance]
         startTrackWithType:XFTrackIOTypePay
         andTrackData:dict];
    }
}

-(NSString*)getCurrentTimestamp{
    // 时间戳转时间
    NSTimeInterval interval = [[NSDate date] timeIntervalSince1970] * 1000;
    NSString* timeStr = [[NSString alloc]initWithFormat:@"%.f",interval];
    return timeStr;
}

@end