《推送系统》

推送系统

开发者可以及时的向自己的用户推送通知消息,与用户时刻互动,有效提升用户体验。本文介绍了如何使用 AnySDK 接入推送服务。

术语说明

别名(Alias)

为安装了应用程序的用户,取个别名来标识。以后给该用户 Push 消息时,就可以用此别名来指定。
1、每个用户只能指定一个别名。
2、同一个应用程序内,对不同的用户,建议取不同的别名。这样,尽可能根据别名来唯一确定用户。
3、系统不限定一个别名只能指定一个用户。如果一个别名被指定到了多个用户,当给指定这个别名发消息时,服务器端 API 会同时给这多个用户发送消息。
举例:在一个用户要登录的游戏中,可能设置别名为 userid。游戏运营时,发现该用户 3 天没有玩游戏了,则根据 userid 调用服务器端 API 发通知到客户端提醒用户。

标签(Tag)

为安装了应用程序的用户,打上标签。其目的主要是方便开发者根据标签,来批量下发 Push 消息。
1、可为每个用户打多个标签。
2、不同应用程序、不同的用户,可以打同样的标签。
举例: game, old_page, women

设置监听

设置

推送系统存在回调信息,需要设置监听。

ProtocolPush* _pPush = AgentManager::getInstance()->getPushPlugin();
if(!_pPush) return;
_pPush->setActionListener(this);

开发者需要重写 onActionResult 回调方法

class Push:public PushActionListener
{
public:
     virtual void onActionResult(ProtocolPush* pPlugin, PushActionResultCode code, const char* msg);
};
void Push::onActionResult(ProtocolPush* pPlugin, PushActionResultCode code, const char* msg)
{
    LOGD("Push::onActionResult %d -- %s",code,msg);
    switch(code)
    {
    case kPushReceiveMessage://Push接受到消息回调
        LOGD("kPushReceiveMessage  ==> %s",msg);
        break;
    default:
        break;
    }
}

回调信息

回调信息 code msg
接受到推送消息 kPushReceiveMessage 消息信息

相关接口

开启服务

void startPush();
功能说明:
开启推送服务
举例说明

//开启推送
void Push::startPush()
{
    ProtocolPush* _pPush = AgentManager::getInstance()->getPushPlugin();
    if(!_pPush) return ;
    _pPush->startPush();
}

关闭服务

void closePush();
功能说明:
关闭推送服务
举例说明

//关闭推送
void Push::closePush()
{
    ProtocolPush* _pPush = AgentManager::getInstance()->getPushPlugin();
    if(!_pPush) return ;
    _pPush->closePush();
}

设置别名

void setAlias(string alias);
功能说明:
为应用设置别名
举例说明

//设置别名
void Push::setAlias()
{
    ProtocolPush* _pPush = AgentManager::getInstance()->getPushPlugin();
    if(!_pPush) return ;
    _pPush->setAlias("AnySDK");
}

删除别名

void delAlias(string alias);
功能说明:
删除此前设置的别名
举例说明

//删除别名
void Push::delAlias()
{
    ProtocolPush* _pPush = AgentManager::getInstance()->getPushPlugin();
    if(!_pPush) return ;
    _pPush->delAlias("AnySDK");
}

设置标签

void setTags(list<string> tags);
功能说明:
为应用设置标签
举例说明

//设置标签
void Push::setTags()
{
    ProtocolPush* _pPush = AgentManager::getInstance()->getPushPlugin();
    if(!_pPush) return ;
    list<string> tags;
    tags.push_back("easy");
    tags.push_back("fast");
    _pPush->setTags(tags);
}

删除标签

void delTags(list<string> tags);
功能说明:
删除此前为应用设置的标签
举例说明

//删除标签
void Push::delTags()
{
    ProtocolPush* _pPush = AgentManager::getInstance()->getPushPlugin();
    if(!_pPush) return ;
    list<string> tags;
    tags.push_back("easy");
    tags.push_back("fast");
    _pPush->delTags(tags);
}