Android等移动OS需提供哪些能力实现WhatsApp式“阅后即焚”功能?
WhatsApp“阅后即焚”(View Once)功能的实现思路与截图拦截逻辑
出于对软件设计的纯粹好奇,我想了解类似WhatsApp“阅后即焚”(View Once)功能的实现方式,特别是当操作系统自带图片显示和截图功能时,消息应用(比如WhatsApp)如何检测并阻止图片显示时的截图操作?
以下是我对此问题的思考,以及基于类C++语法的交互逻辑假设(只是因为我更熟悉该语言):
假设操作系统提供的核心函数
图片显示函数
namespace os { void showImage(Image* i, bool allowScreenshot = true/*默认值*/) { screenshotAllowed/* 这是手机的全局状态 */ = allowScreenshot; showImageImpl(i); } }
系统截图函数
namespace os { void takeScreenshot() /* 比如三指滑动等操作触发 */ { if (!screenshotAllowed) return; takeScreenshotImpl(); } }
消息应用的不同实现逻辑
未支持阅后即焚功能时
namespace msgapp { void showImage(Image* i) /* 打开普通图片消息时调用 */ { os::showImage(i); } }
支持阅后即焚功能后
新增针对阅后即焚图片的重载逻辑:
namespace msgapp { struct ViewOnceImage : Image {}; void showImage(ViewOnceImage* i) /* 打开阅后即焚图片消息时调用 */ { os::showImage(i, false); } }
内容的提问来源于stack exchange,提问作者Enlico
相关产品推荐
相关产品推荐

