框架接口设计

来自AnySDK 文档
跳转至: 导航搜索

系统介绍

AnySDK Framework 根据市场上存在的第三方SDK,概括为六大系统,即:用户系统、支付系统、广告系统、统计系统、社交系统、分享系统。

用户系统接口:登陆、注销、切换账号、平台中心、显示悬浮按钮、隐藏悬浮按钮、显示退出页、显示暂停页等渠道相关功能。

支付系统接口:支付、获取订单号。

统计系统接口:开始会话、结束会话、设置会话时长、设置是否捕捉异常、异常错误信息报告、自定义事件等统计功能。

分享系统接口:分享。

广告系统接口:显示广告、隐藏广告。

社交系统接口:提交分数、显示排行榜、解锁成就、显示成就榜

接口调用原则

AnySDK Framework 是将第三方 SDK (jar库)封装一层简单易用的 C++ 接口而开发的。

必接入流程简要描述

1 、搭建 AnySDK Framework的环境,导入AnySDK Framework的必要文件,参见 AnySDK Framework开发环境搭建
2 、初始化plugin,参见初始化。
3、初始化后必须马上设置监听类,监听回调信息,参见消息通知
4、用户系统
4.1 可扩展接口调用方法,请参照扩展功能介绍
4.2 捕捉到初始化完成的通知后根据需要调用登陆
4.3 在进入游戏或登陆成功时需要调用显示悬浮窗接口
4.4 在退出游戏的时候,需要调用退出页接口

4.5 应用中需要有明显入口进入平台中心
4.6 应用中需要接入注销或切换账号入口
4.7 应用中需要在几种情况下提交游戏数据

消息通知

主要用于将异步请求的结果信息通知给用户,每一个系统分别设置消息通知,用户只要实现抽象方法 listener ,设置监听类,即可捕获请求结果信息。
调用方法举例:
重写回调方法

class PluginChannel:public PayResultListener, public UserActionListener
{
public:
	virtual void onPayResult(PayResultCode ret, const char* msg, TProductInfo info);
	virtual void onActionResult(ProtocolUser* pPlugin, UserActionResultCode code, const char* msg);
}

设置监听类:

_pluginsIAPMap  = AgentManager::getInstance()->getIAPPlugin();
std::map<std::string , ProtocolIAP*>::iterator iter;
for(iter = _pluginsIAPMap->begin(); iter != _pluginsIAPMap->end(); iter++)
{
    (iter->second)->setResultListener(this);
}
if(AgentManager::getInstance()->getUserPlugin())
{
    AgentManager::getInstance()->getUserPlugin()->setActionListener(this);
}

可扩展性

AnySDK Framework初衷是对第三方sdk进行整合,方便开发者接入第三方sdk。整合,即是对第三方sdk取并集,这样便出现了某些功能(扩展功能)并不一定存在的情况。AnySDK Framework对这一情况做了处理,即系统中必然存在的功能可直接调用,则扩展功能需要预先判断插件中是否存在,通过扩展方法进行调用。
调用扩展功能需要预先判断插件中是否存在,例如

if(AgentManager::getInstance()->getUserPlugin())
{
        return AgentManager::getInstance()->getUserPlugin()->isFunctionSupported(strClassName);
}

AnySDK Framework提供了以下扩展方法

void callFuncWithParam(const char* funcName, PluginParam* param, ...);
void callFuncWithParam(const char* funcName, std::vector<PluginParam*> params);
std::string callStringFuncWithParam(const char* funcName, PluginParam* param, ...);
std::string callStringFuncWithParam(const char* funcName, std::vector<PluginParam*> params);

int callIntFuncWithParam(const char* funcName, PluginParam* param, ...) ;
int callIntFuncWithParam(const char* funcName, std::vector<PluginParam*> params);

bool callBoolFuncWithParam(const char* funcName, PluginParam* param, ...);
bool callBoolFuncWithParam(const char* funcName, std::vector<PluginParam*> params);

float callFloatFuncWithParam(const char* funcName, PluginParam* param, ...);
float callFloatFuncWithParam(const char* funcName, std::vector<PluginParam*> params);

有参函数需要将参数转化成PluginParam类型
举例说明:
调用void showToolBar(ToolBarPlace place)

PluginParam paramInfo(kToolBarTopRightMid);
AgentManager::getInstance()->getUserPlugin()->callFuncWithParam("showToolBar",&paramInfo,NULL);

测试模式

测试模式是为了方便开发者在没有接入任何渠道时,完成开发流程。模拟渠道SDK,完成了渠道的登陆、登出、支付接口。

注:
使用Sample工程进行测试时,需要将AppKey、AppSecret、PrivateKey改成自己的参数。
账号注册地址

添加测试账号

在dev.anysdk.com后台添加测试账号,并且添加相应的测试币。

使用测试账号

生成的测试账号,可用来完成接入AnySDK Framework的登陆、登出、支付功能

其他接口

其他接口AnySDK Framework也提供了简易的界面或者Log 告知接口调用成功