一、消息免打扰功能设计原则
1. 用户主权优先
- 默认关闭所有非必要推送(如促销广告),仅保留订单状态、配送提醒等核心通知
- 提供「全局免打扰」开关+「分类免打扰」(如促销/社区/系统通知)的分级控制
- 支持时间窗口设置(如22:00-8:00自动静音)
2. 透明化告知
- 在首次安装时通过弹窗明确告知消息类型及频次
- 在「设置-消息通知」页面展示各类型消息的示例内容和发送频率
- 提供「消息日志」功能,用户可查看历史推送记录
二、技术实现方案(以万象源码为基础)
1. 前端实现
```javascript
// 示例:React Native消息设置界面
const NotificationSettings = () => {
const [settings, setSettings] = useState({
globalMute: false,
timeRange: {start: 22, end: 8},
categories: {
orders: true,
promotions: false,
community: false
}
});
const saveSettings = async () => {
await AsyncStorage.setItem(notificationSettings, JSON.stringify(settings));
// 调用原生模块更新系统设置
NativeModules.NotificationManager.updateSettings(settings);
};
return (
value={settings.globalMute}
onValueChange={v => setSettings({...settings, globalMute: v})}
/>
value={settings.timeRange}
onChange={range => setSettings({...settings, timeRange: range})}
/>
{/* 分类开关组件 */}
);
};
```
2. 后端实现(Node.js示例)
```javascript
// 用户偏好存储中间件
app.use(async (req, res, next) => {
const userId = req.user?.id;
if (userId) {
const settings = await UserSettings.findOne({userId});
req.notificationPrefs = settings?.notificationPrefs || {};
}
next();
});
// 推送前检查
async function canSendNotification(userId, category) {
const settings = await UserSettings.findOne({userId});
if (!settings) return true;
// 检查全局静音
if (settings.globalMute) return false;
// 检查分类设置
if (settings.categories?.[category] === false) return false;
// 检查时间窗口
const now = new Date();
const hour = now.getHours();
if (settings.timeRange &&
(hour < settings.timeRange.start || hour >= settings.timeRange.end)) {
return false;
}
return true;
}
```
三、尊重用户的核心措施
1. 数据最小化原则
- 仅收集实现功能必需的最少数据(如用户选择的免打扰时段)
- 避免收集设备指纹等敏感信息
2. 显式同意机制
```javascript
// 首次启动时的同意对话框
const showConsentDialog = async () => {
const hasConsented = await AsyncStorage.getItem(notificationConsent);
if (!hasConsented) {
Alert.alert(
消息通知权限,
我们需要您的许可来发送订单状态和重要提醒。您可随时在设置中调整。,
[
{
text: 允许,
onPress: async () => {
await AsyncStorage.setItem(notificationConsent, true);
requestNotificationsPermission();
}
},
{text: 拒绝, style: cancel}
]
);
}
};
```
3. 退出机制
- 在「设置-隐私」中提供「重置所有通知设置」按钮
- 支持导出个人数据(含消息设置记录)
4. 开源审计保障
- 若使用万象等开源框架,应:
- 定期检查依赖库更新(特别是推送相关组件)
- 在README中明确声明消息处理逻辑
- 提供修改建议通道(如GitHub Issues)
四、合规性要点
1. 符合《个人信息保护法》第14条:需单独获得用户对消息推送的同意
2. 遵循GDPR第21条:提供简便的反对权行使方式
3. 遵守App Store审核指南5.1.1(i):明确区分重要通知和营销内容
五、增强用户体验的建议
1. 智能免打扰:通过机器学习分析用户使用习惯,自动建议免打扰时段
2. 紧急通道:允许用户设置特定联系人(如配送员)的消息始终穿透免打扰
3. 静音反馈:当消息因免打扰被拦截时,在App内显示「有X条新消息,当前处于静音模式」的提示
通过上述方案,可在保障生鲜App核心功能(如配送提醒)的同时,最大程度尊重用户对消息通知的控制权。建议每季度进行用户调研,根据反馈持续优化免打扰功能的可用性和透明度。