feat(review): 集成iOS应用内评分功能
- 新增iOS原生模块AppStoreReviewManager,封装StoreKit评分请求 - 实现appStoreReviewService服务层,管理评分请求时间间隔(14天) - 在关键用户操作后触发评分请求:完成挑战、记录服药、记录体重、记录饮水 - 优化通知设置页面UI,改进设置项布局和视觉层次 - 调整用药卡片样式,优化状态显示和文字大小 - 新增配置检查脚本check-app-review-setup.sh - 修改喝水提醒默认状态为关闭 评分请求策略: - 仅iOS 14.0+支持 - 自动控制请求频率,避免过度打扰用户 - 延迟1秒执行,不阻塞主业务流程 - 所有评分请求均做错误处理,确保不影响核心功能
This commit is contained in:
118
scripts/check-app-review-setup.sh
Normal file
118
scripts/check-app-review-setup.sh
Normal file
@@ -0,0 +1,118 @@
|
||||
#!/bin/bash
|
||||
|
||||
# iOS 应用内评分功能配置检查脚本
|
||||
# 使用方法: bash scripts/check-app-review-setup.sh
|
||||
|
||||
echo "================================================"
|
||||
echo "iOS 应用内评分功能 - 配置检查"
|
||||
echo "================================================"
|
||||
echo ""
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 检查计数
|
||||
checks_passed=0
|
||||
checks_failed=0
|
||||
|
||||
# 函数:检查文件存在
|
||||
check_file() {
|
||||
local file=$1
|
||||
local description=$2
|
||||
|
||||
if [ -f "$file" ]; then
|
||||
echo -e "${GREEN}✓${NC} $description"
|
||||
echo " 路径: $file"
|
||||
((checks_passed++))
|
||||
return 0
|
||||
else
|
||||
echo -e "${RED}✗${NC} $description"
|
||||
echo " 路径: $file (文件不存在)"
|
||||
((checks_failed++))
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
echo "步骤 1: 检查原生模块文件"
|
||||
echo "-----------------------------------"
|
||||
check_file "ios/OutLive/AppStoreReviewManager.swift" "Swift 实现文件"
|
||||
check_file "ios/OutLive/AppStoreReviewManager.m" "Objective-C 桥接文件"
|
||||
check_file "ios/OutLive/OutLive-Bridging-Header.h" "Bridging Header 文件"
|
||||
echo ""
|
||||
|
||||
echo "步骤 2: 检查服务层文件"
|
||||
echo "-----------------------------------"
|
||||
check_file "services/appStoreReview.ts" "评分请求管理服务"
|
||||
echo ""
|
||||
|
||||
echo "步骤 3: 检查 Redux 集成"
|
||||
echo "-----------------------------------"
|
||||
if check_file "store/challengesSlice.ts" "挑战 Slice 集成"; then
|
||||
if grep -q "appStoreReviewService" "store/challengesSlice.ts"; then
|
||||
echo -e " ${GREEN}✓${NC} 已集成应用评分服务"
|
||||
else
|
||||
echo -e " ${YELLOW}!${NC} 未检测到应用评分服务集成"
|
||||
((checks_failed++))
|
||||
fi
|
||||
fi
|
||||
|
||||
if check_file "store/medicationsSlice.ts" "用药 Slice 集成"; then
|
||||
if grep -q "appStoreReviewService" "store/medicationsSlice.ts"; then
|
||||
echo -e " ${GREEN}✓${NC} 已集成应用评分服务"
|
||||
else
|
||||
echo -e " ${YELLOW}!${NC} 未检测到应用评分服务集成"
|
||||
((checks_failed++))
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
|
||||
echo "步骤 4: 检查文档"
|
||||
echo "-----------------------------------"
|
||||
check_file "docs/app-store-review-implementation.md" "实现文档"
|
||||
check_file "docs/app-store-review-xcode-setup.md" "Xcode 配置指南"
|
||||
echo ""
|
||||
|
||||
# 总结
|
||||
echo "================================================"
|
||||
echo "检查总结"
|
||||
echo "================================================"
|
||||
echo -e "通过: ${GREEN}$checks_passed${NC}"
|
||||
echo -e "失败: ${RED}$checks_failed${NC}"
|
||||
echo ""
|
||||
|
||||
# 根据结果给出建议
|
||||
if [ $checks_failed -eq 0 ]; then
|
||||
echo -e "${GREEN}✓ 所有文件检查通过!${NC}"
|
||||
echo ""
|
||||
echo "下一步操作:"
|
||||
echo "1. 打开 Xcode 项目:"
|
||||
echo " cd ios && open OutLive.xcworkspace"
|
||||
echo ""
|
||||
echo "2. 在 Xcode 中添加原生模块文件(详见文档):"
|
||||
echo " - AppStoreReviewManager.swift"
|
||||
echo " - AppStoreReviewManager.m"
|
||||
echo ""
|
||||
echo "3. 清理并重新构建:"
|
||||
echo " Product > Clean Build Folder (Shift+Cmd+K)"
|
||||
echo " Product > Build (Cmd+B)"
|
||||
echo ""
|
||||
echo "4. 运行应用进行测试"
|
||||
echo ""
|
||||
echo "详细步骤请参考: docs/app-store-review-xcode-setup.md"
|
||||
else
|
||||
echo -e "${RED}✗ 检查未通过,请修复以上问题${NC}"
|
||||
echo ""
|
||||
echo "常见问题:"
|
||||
echo "- 如果文件不存在,请确认文件是否被正确创建"
|
||||
echo "- 如果集成检查失败,请检查代码是否正确导入和使用服务"
|
||||
echo ""
|
||||
echo "获取帮助:"
|
||||
echo "- 查看实现文档: docs/app-store-review-implementation.md"
|
||||
echo "- 查看配置指南: docs/app-store-review-xcode-setup.md"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "================================================"
|
||||
Reference in New Issue
Block a user