当前位置:网站首页 >  教程

零成本可落地的App用户留存实操技术指南(附完整配置代码)

时间:2026年06月11日 05:53:48 来源:易频IT社区

环境准备

零门槛部署需提前完成2项基础操作,每步都有验证机制:

  • 访问Python官方下载页,下载对应系统的Python3.10+版本,安装时必须勾选Add Python to PATH选项;安装完成后打开终端/命令行,输入python --version,显示版本号即验证成功
  • 安装项目依赖,国内网络执行命令:pip install flask sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple,国外网络可去掉镜像源参数

核心功能实现

1. 项目结构创建

在任意本地路径新建文件夹命名为user_retention,文件夹内新建1个空文件app.py,所有代码将写入该文件,无需创建其他目录。

2. 完整代码编写

打开app.py,将以下代码完整复制粘贴,无需修改即可运行:

```python from flask import Flask, request, jsonify from flask_sqlalchemy import SQLAlchemy from datetime import datetime, timedelta 初始化Flask应用 app = Flask(__name__) 核心配置:SQLite数据库路径,自动生成在user_retention文件夹内的retention.db app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///./retention.db' 关闭修改追踪,减少资源占用 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 初始化数据库 db = SQLAlchemy(app) 用户数据模型,存储注册、最后登录时间 class User(db.Model): id = db.Column(db.Integer, primary_key=True) register_time = db.Column(db.DateTime, nullable=False) last_login_time = db.Column(db.DateTime, nullable=False) 转成字典格式,方便接口返回数据 def to_dict(self): return { 'user_id': self.id, 'register_time': self.register_time.strftime('%Y-%m-%d %H:%M:%S'), 'last_login_time': self.last_login_time.strftime('%Y-%m-%d %H:%M:%S') } 创建数据库表,必须在应用上下文内执行 with app.app_context(): db.create_all() 注册接口:接收用户名,生成新用户 @app.route('/api/register', methods=['POST']) def register(): data = request.get_json() username = data.get('username') if not username: return jsonify({'code':400, 'msg':'用户名不能为空'}), 400 注册时间和首次登录时间为当前时间 new_user = User( register_time=datetime.now(), last_login_time=datetime.now() ) db.session.add(new_user) db.session.commit() return jsonify({'code':200, 'msg':'注册成功', 'user':new_user.to_dict()}) 登录接口:接收用户ID,更新最后登录时间 @app.route('/api/login', methods=['POST']) def login(): data = request.get_json() user_id = data.get('user_id') user = User.query.get(user_id) if not user: return jsonify({'code':404, 'msg':'用户不存在'}), 404 更新最后登录时间为当前时间 user.last_login_time = datetime.now() db.session.commit() return jsonify({'code':200, 'msg':'登录成功', 'user':user.to_dict()}) 7日留存统计接口:返回注册满7天用户的留存率 @app.route('/api/retention/7day', methods=['GET']) def retention_7day(): now = datetime.now() seven_days_ago = now - timedelta(days=7) 总注册用户:注册时间早于7天前的用户 total = User.query.filter(User.register_time <= seven_days_ago).count() 7日留存用户:注册满7天,且最后登录时间在7天内的用户 retained = User.query.filter( User.register_time <= seven_days_ago, User.last_login_time >= seven_days_ago ).count() 计算留存率,避免除以0异常 rate = round(retained / total 100, 2) if total > 0 else 0 return jsonify({ 'code':200, 'total_register_7day_before':total, 'retained_7day':retained, 'retention_rate_7day':f'{rate}%' }) 启动应用 if __name__ == '__main__': app.run(debug=True) ```

本地测试流程

1. 启动服务

零成本可落地的App用户留存实操技术指南(附完整配置代码)

打开终端,进入user_retention文件夹,执行命令:python app.py,终端显示Running on http://127.0.0.1:5000即服务启动成功,端口固定为5000,无需额外配置。

2. 接口测试方法

打开新终端,按以下步骤执行,无需安装额外工具:

  • 注册用户:执行命令(直接复制)curl -X POST -H "Content-Type: application/json" -d '{"username":"test_user_1"}' http://127.0.0.1:5000/api/register,结果中会得到用户ID(示例为{"user_id":1,...}
  • 模拟登录(活跃):执行命令,将上面得到的用户ID替换为1:curl -X POST -H "Content-Type: application/json" -d '{"user_id":1}' http://127.0.0.1:5000/api/login
  • 查看7日留存:执行命令curl http://127.0.0.1:5000/api/retention/7day,返回的retention_rate_7day就是当前留存率数值

留存优化实操技巧

1. 数据解读规则

仅需关注2个固定值:注册满7天的总用户数7天内活跃的用户数,留存率=(活跃用户数/总用户数)×100%,无需计算其他冗余指标。

2. 可落地的优化动作

  • 若7日留存率低于30%:新增注册后24小时内的个性化引导,修改注册接口,返回{"need_guide":true}标识,前端收到后弹出首任务引导弹窗,无需开发复杂功能
  • 若留存率在30%-50%之间:针对最后登录时间超过2天的用户,发送带专属福利的通知,修改登录接口,若最后登录时间超过2天,返回{"need_push":true}标识,前端触发推送逻辑
  • 数据库清理:每月执行一次,删除注册时间早于30天且未登录的冗余数据,执行命令:python -c "from app import app, db, User; with app.app_context(): User.query.filter(User.register_time < datetime.now()-timedelta(days=30), User.last_login_time == None).delete(); db.session.commit()"

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图