#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];
}
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];
}