012-SDK框架之LYWSDKProtocolIOS.mm

#include "LYWSDKProtocolIOS.h"

static LYWSDKProtocolIOS* _instance;


LYWSDKProtocolIOS::LYWSDKProtocolIOS()
{
    
}

LYWSDKProtocolIOS::~LYWSDKProtocolIOS()
{
    if (_instance)
    {
        delete _instance;
    }
}


LYWSDKProtocolIOS* LYWSDKProtocolIOS::getInstance()
{
    if (_instance == nil)
    {
        _instance = new LYWSDKProtocolIOS();
    }
    
    return _instance;
}


void LYWSDKProtocolIOS::initSDK(LYWSDKCallBackListener* listener, const char* funcName, const char* param)
{
    LYWSDKInterfaceProtocol::m_listener = listener;
    
    if (NSClassFromString(@"LYWSDKDispatcher") != nil)
    {
        LYWSDKProtocolIOS::getInstance()->lywSDKDispatcher = [NSClassFromString(@"LYWSDKDispatcher") init];
        
        LYWSDKProtocolIOS::getInstance()->callFunctionWithParam(funcName, param);
    }
}


void LYWSDKProtocolIOS::callFunctionWithParam(const char* funcName, const char* param)
{   
    if (funcName == NULL)
    {
        NSLog(@"funcName is null");
        return;
    }


    NSMutableDictionary *dic = nil;
    if (param != NULL && 0 != strcmp(param, ""))
    {
        dic = LYWSDKProtocolIOS::getInstance()->jParam2Dictionary(param);
    }
    
    if (dic == nil)
    {
        dic = [[NSMutableDictionary alloc] init];
    }
    
    NSString* strFuncName = [NSString stringWithUTF8String:funcName];
    strFuncName = [strFuncName stringByAppendingString:@":"];
    SEL selector = NSSelectorFromString(strFuncName);
    if ([LYWSDKProtocolIOS::getInstance()->lywSDKDispatcher respondsToSelector:selector])
    {
        [LYWSDKProtocolIOS::getInstance()->lywSDKDispatcher performSelector:selector withObject:dic];
    }
    else
    {
        NSLog(@"Warn Can't find function %@", strFuncName);
    }
}


NSMutableDictionary* LYWSDKProtocolIOS::jParam2Dictionary(const char* jParam)
{
    NSData *data = [[NSString stringWithUTF8String:jParam] dataUsingEncoding:NSUTF8StringEncoding];
    NSError *resolveError;
    NSMutableDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&resolveError];
    
    if (resolveError)
    {
        NSLog(@"resolveError = %@", resolveError);
    }
   
    return dic;
}


const char* LYWSDKProtocolIOS::dictionary2jParam(NSMutableDictionary* dic)
{
    NSError *resolveError;
    NSData *data = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&resolveError];
    if (resolveError)
    {
        NSLog(@"resolveError = %@", resolveError);
        return NULL;
    }
    
    NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    jsonString = [jsonString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];  //去除掉首尾的空白字符和换行字符
    jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\n" withString:@""];


    return [jsonString cStringUsingEncoding:NSUTF8StringEncoding];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值