《推送系统》
推送系统
开发者可以及时的向自己的用户推送通知消息,与用户时刻互动,有效提升用户体验。本文介绍了如何使用 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);
}