众所周知,产品运营中最关键的一环就是用户运营。用户运营就是以用户为中心,遵循用户的需求设置运营活动与规则,以达到预期所设置的运营目标与任务。简单来说,用户运营可以简单分为用户拉新、用户留存和用户促活这三个部分。
用户拉新:指的就是把app等产品推广出去,进行品牌曝光,提高app下载量、注册量,提高app的用户人数;
用户留存:通俗来说,就是指将新增的用户留住,新增用户经过一段时间后还继续使用该产品,就叫做留存;
用户促活 :就是促进app中的用户活跃起来,经常登录、使用产品,与产品有交流的用户被称为活跃用户。
促活用户的重要性:促活用户对发挥出产品价值的重要性不言而喻,用户促活是提高留存、打造生态、增加变现能力等环节的关键。
随着移动互联网流量成本获取越来越高,同质化产品越来越多、竞争愈发激烈的情况下,用户促活很重要的一环。用户促活本身虽然很难带来直接的商业回报,但却为产品的营收变现起到核心作用。
如何高效促活用户:对于互联网产品来说,产品创新、宣传推广、营销活动等都是有利于增加用户粘性的方法。利用热点事件进行营销活动,也可以利用场景进行活动运营,重点根据用户基本属性、标签进行活动触发、推送,活动运营是激发出用户欲望最好的方法之一。
若想在短时间内高效促活用户,可以为产品植入一些契合自身品牌的有趣小游戏。游戏有独特的优势,老少皆宜,能很快就吸引到用户,还能高效地提高用户的活跃度。
第一步
通过服务器获取token和url
第二步
初始化具体游戏类,如需接入多个游戏需要分别对多个游戏进行初始化 各个游戏初始化请参考各个游戏对应文档
例 知识竞技类游戏:
groupPlay = new GroupPlay(new CallBack());
第三步
初始化公共操作类,并将第一步初始化的游戏类放到里面
gamePublicControl = new GamePublicControl
.Builder(mContext)
.token("从服务端获取") //必填
.url("从服务端获取") //必填
.uid("用户唯一识别id") //必填
.sessionId("房间id") //必填
.autoReconnect(true) //是否自动重连(可选,默认自动重连)
.printLog(true) //是否打印日志(可选,默认不打印)
.groupPlay(groupPlay) //知识竞技类游戏
.paintPlay(paintPlay) //你画我猜游戏
.chessPlay(chessPlay) //五子棋游戏
.undercoverPlay(undercoverPlay) //谁是卧底游戏
.tofuPlay(tofuPlay) //豆腐王国游戏
.controlCallback(new ControlCallback() {
@Override
public void onConnectSuccess() {
}
@Override
public void onConnectFailed(String msg) {
}
@Override
public void onConnectClose() {
}
@Override
public void onNoticeMessage(NoticeBean noticeBean) {
}
@Override
public void onGamingPlayerMessage(List<PlayerBean> playerList) {
}
@Override
public void onVisitorPlayerMessage(List<PlayerBean> playerList) {
}
@Override
public void onAllPlayerMessage(List<PlayerBean> playerList) {
}
@Override
public void onGameStatus(GameStatusBean gameStatusBean) {
}
})
.build();
第四步
连接服务器
gamePublicControl.connectSocket();
等待回调成功后,选择游戏,开始游戏
//注意:需要等待onConnectSuccess回调成功再执行下面操作
gamePublicControl.selectGame(gameType);
gamePublicControl.startGame();
更多使用方法请下载Demo参考
流程图如下
API
/**
* 获取socket是否关闭
* @return true-已关闭或未初始化 false-未关闭
*/
public boolean socketIsClose()
/** 连接*/
public void connectSocket()
/**
* 选择游戏
* @param gameType 游戏类型:1猜歌名 2猜图片 3猜成语 4成语接龙 5猜谜语 6猜电影 7趣味抢答 8猜王者 9猜LOL 10你画我猜 12五子棋 13谁是卧底 14豆腐王国
*/
public void selectGame(int gameType)
/**
* 进入座位
* @param seat 座位号
*/
public void sitDown(int seat)
/** 离开座位*/
public void standUp()
/** 开始游戏*/
public void startGame()
/** 加入游戏*/
public void joinGame()
/** 退出游戏*/
public void exitGame()
/** 关闭游戏*/
public void closeGame()
/** 获取当前题目*/
public void getCurrentGame()
/** 获取玩家*/
public void getGamingPlayer()
/** 获取观众*/
public void getGamingPlayer()
/** 获取所有成员(包括观众和玩家)*/
public void getAllPlayer()
/** 获取游戏当前流程*/
public void getGameCurrent()
/** 获取游戏状态*/
public void getGameStatus()
/** 移除handler(关闭页面时候调用,防止内存泄露)*/
public void removeHandle()
回调
/**
* 连接成功
*/
void onConnectSuccess();
/**
* 连接失败
*
* @param msg 失败原因
*/
void onConnectFailed(String msg);
/**
* 连接关闭
*/
void onConnectClose();
/**
* 游戏状态
*
* @param gameStatusBean 游戏状态模型
*/
void onGameStatus(GameStatusBean gameStatusBean);
/**
* 游戏通知
*
* @param noticeBean 游戏通知模型
*/
void onNoticeMessage(NoticeBean noticeBean);
/**
* 玩家成员列表
*
* @param playerList 成员列表
*/
void onGamingPlayerMessage(List<PlayerBean> playerList);
/**
* 观众成员列表
*
* @param playerList 成员列表
*/
void onVisitorPlayerMessage(List<PlayerBean> playerList);
/**
* 所有成员列表
*
* @param playerList 成员列表
*/
void onAllPlayerMessage(List<PlayerBean> playerList);
模型
成员模型PlayerBean
字段 | 类型 | 说明 |
---|---|---|
uid | String | 玩家id |
headImg | String | 玩家头像 |
uname | String | 玩家昵称 |
num | Integer | 答对题目数或分数 |
status | Integer | 成员状态 0-正常 1-退出 |
seat | Integer | 座位号(部分游戏使用) |
role | Integer | 角色 谁是卧底:0-平民 1-卧底 2-白板 豆腐王国:0-王子 1-公主 2-女王 3-厨师 4-大臣 5-侍卫 6-间谍 7-女仆 |
isOut | boolean | 是否已淘汰 true-已淘汰 false-未淘汰(仅《谁是卧底》游戏使用) |
通知模型NoticeBean
字段 | 类型 | 说明 |
---|---|---|
uid | String | 玩家id |
text | String | 通知文字 |
type | Integer | 1开始游戏 2加入游戏 3退出游戏 4结束游戏 |
num | Integer | 加入游戏的总人数(包括玩家和观众) |