隐私政策

我们不收集你的数据。

我们没有任何东西可以出售、分享、丢失或交出去,因为我们从来没有收到过。本页其余部分是这句话背后的细节。

最后更新:

简短版。Ninja 完全在你的手机上压缩、转换和编辑视频。它没有服务器、没有账户、没有广告,也没有数据分析,应用本身不发起任何网络请求。如果你购买 Ninja Pro,付款由 Apple 或 Google 处理,Ninja 只会知道你的商店账户拥有哪个方案。你在 Ninja 中打开的任何内容——视频、文件名、使用统计——都不会发送给我们或任何其他人。

本政策适用于 Ninja 应用——在 Google Play 上名为“Ninja: 视频压缩 - 缩小视频大小”,在 App Store 上名为“Ninja: 视频压缩与格式转换”,包名 app.ninjacompress.mobile——以及本网站。两者均由 Aviad Katani(Katani Labs)发布,下文称“我们”。

Ninja 会接触你设备上的什么

你选择的视频。你通过手机自带的选择器挑选视频(Android 照片选择器、iOS 照片图库选择器、文件选择器,或者从其他应用把视频分享到 Ninja)。Ninja 读取你选中的视频,压缩它们,再把结果写到你指定的位置。它从不主动扫描你的图库,也从不打开你没有选择的文件。

短暂读取视频帧。为了显示缩略图、压缩前后对比,或者证明压缩后的文件确实能播放的检查,Ninja 会在你设备的内存中解码少量帧。这些帧画到屏幕上之后就会被丢弃。

Ninja 会在你的设备上保存什么

所有这些都保存在 Ninja 自己的私有应用存储空间里——一个本地数据库和一个私有的 vault 文件夹。其他应用都无法读取,也不会传输到任何地方。

内容包含
任务记录你处理过的每个视频:它的名称和你所选文件的引用、文件大小、你使用的设置、是否成功、节省了多少空间,以及时间戳。
Ninja 保险库你选择暂存而不是直接删除的原视频:原视频的名称和引用、暂存副本在私有存储空间中的位置、它的大小,以及保留多久。暂存副本就是原视频文件本身。
预设你保存的压缩预设,以及你给它们起的名字。
Ninja Pro 状态如果你购买了 Pro:你的商店账户拥有哪个方案、商店最后一次确认的时间,以及订阅当前周期的结束时间——这样 Pro 离线也能用。不包含姓名、电子邮件或付款信息;商店从不把这些交给应用。
偏好设置和计数你的设置(压缩后的默认操作、保留期限、文件名模板、主题、触感反馈等),以及已释放空间、已完成任务等累计数据。

什么会离开你的设备

什么都不会,除非你主动发送。

文件离开 Ninja 的唯一方式,是你点按“分享”并在手机的分享面板中选择一个目的地。随后由操作系统把文件交给你选择的应用,适用的是那个应用的隐私政策,而不是我们的。Ninja 本身不上传、不同步,也不备份任何东西。

这个承诺背后,有两个如实交代的细节:

  • 在 Android 上,应用不申请 INTERNET 权限。因此,无论应用内的任何库试图做什么,操作系统都会阻止应用的一切网络访问。
  • Ninja 内置 FFmpeg,这是一个通用媒体库,能够读取网络地址。Ninja 只会交给它本地文件。在 Android 上,缺少的 INTERNET 权限在系统层面保证了这一点;iOS 没有对应的权限,所以在 iOS 上,这项保证取决于应用的代码——其中不含任何网络地址,也没有任何形式的 HTTP 客户端。

你自己的备份是一个我们无法控制的例外。Ninja 的私有存储空间是普通的应用数据,所以如果开启了设备备份,操作系统可能会把它包含在你自己的备份里——Android 备份到你的 Google 账号,或者 iOS 上的 iCloud 或电脑备份。那是你的备份,在你的账户下,受 Google 或 Apple 的条款约束。我们永远看不到。

给 Ninja 评分,是你和应用商店之间的事。Ninja 偶尔——只在一次真正节省了空间的压缩之后,从不在你使用的第一天,而且最多每 120 天一次——会请求手机显示 App Store 或 Google Play 自己的评分面板。面板由商店绘制,是否显示由商店决定,你在那里的任何操作都受 Apple 或 Google 的条款约束;Ninja 不会得知面板是否出现,也不知道你选了什么。为了遵守这个时间表,Ninja 会在手机上保存两个日期:你第一次打开它的日期,以及它上一次请求的日期。

Ninja Pro 购买

Ninja Pro 通过 Apple 的 App Store 和 Google Play 销售。当你购买或恢复购买时,由商店自己的面板接手:商店处理付款,我们永远看不到你的银行卡、姓名或电子邮件。然后商店会给 Ninja 一份签名记录,说明你的账户拥有哪个 Pro 方案,Ninja 在你的手机上校验它——整个过程不涉及任何 Ninja 服务器。Apple 和 Google 会依据各自的隐私政策(Apple、Google)保存你的购买记录。和所有开发者一样,我们可以在商店后台看到汇总的销售报告;这些报告不会让我们识别出你。

权限,以及每项权限的用途

Ninja 尽可能少地申请权限,而且在需要时才申请,而不是一启动就申请。你可以拒绝其中任何一项,仍然可以通过系统选择器压缩视频。

Android

权限用途
READ_MEDIA_VIDEO、READ_MEDIA_VISUAL_USER_SELECTED仅用于应用内的视频网格和“设备上最大的视频”列表。系统照片选择器完全不需要权限,没有这项权限 Ninja 也能正常工作。
READ_EXTERNAL_STORAGE(Android 12 及更早版本)照片选择器出现之前的同等权限。
WRITE_EXTERNAL_STORAGE(Android 10 及更早版本)在早于分区存储的版本上,把压缩后的副本保存到相册,以及移除你选择删除的原视频。
ACCESS_MEDIA_LOCATIONNinja 复制视频时保留视频的位置标签——包括压缩后的副本、保险库副本和“替换原视频”。没有这项权限,Android 会从每个副本中去掉位置信息,相册的地图上就会少了这些视频。位置信息只会写回你自己的文件,从不离开你的手机。
MANAGE_MEDIA(Android 12 及更高版本,可选)应用从不主动申请。如果你在系统“设置”中开启它,把原视频移到回收站或删除时,就不会每个批次都弹出确认对话框。它不改变其他任何东西:九项检查仍会先运行,没有它 Ninja 也一样工作。
FOREGROUND_SERVICE、…MEDIA_PROCESSING、…DATA_SYNC你切换应用时,让长时间的压缩继续运行,而不会丢失进度。
POST_NOTIFICATIONS该服务的进度通知。
WAKE_LOCK如果你开启了相应设置,在任务进行时保持设备唤醒。
com.android.vending.BILLING让 Ninja 请求 Google Play 应用显示 Ninja Pro 购买面板,并读取你拥有的方案。购买在 Play 商店应用中进行,所以 Ninja 仍然没有联网权限。
ACCESS_NETWORK_STATE由视频播放库添加;它只能判断是否存在网络,无法建立连接——只有 INTERNET 可以,而 Ninja 没有这项权限。

Ninja 刻意从不申请 MANAGE_EXTERNAL_STORAGE(“所有文件访问权限”)。它不需要。

iOS

权限用途
照片图库访问权限仅在你把压缩后的视频存入图库,或把原视频移到“最近删除”时需要。压缩本身不需要这项权限。

iOS 应用还带有相机和麦克风的使用说明,因为 FFmpeg 库中包含采集代码,Apple 要求提供这些说明。Ninja 从不调用这些代码,也从不请求这两项权限。

删除所有数据

  • Ninja 保险库中的项目:打开保险库,逐个删除或恢复暂存的原视频。
  • Ninja 保存的所有内容:在 Android 上,前往“设置”→“应用”→ Ninja Video Compress →“存储”→“清除数据”,或卸载应用。在 iOS 上,删除应用。两种方式都会移除数据库、vault 文件夹和所有偏好设置。
  • Ninja Pro 购买属于你的商店账户,而不属于应用的存储空间:清除数据或卸载应用不会取消订阅,重新安装后用“恢复购买”即可找回 Pro。
  • 你存到相册或“文件”中的视频会留在原处。它们是你的文件,在你的存储空间里;移除 Ninja 不会动它们。

没有“申请获取我的数据”的流程,因为除了你的手机,任何地方都没有你数据的副本。

本网站

ninjacompress.app 不设置 Cookie,不运行数据分析,也不从任何其他公司加载内容——字体、图片和脚本全部由本域名提供。Web 服务器配置为不保存访问日志,所以它不会记录你访问的页面、你的 IP 地址或你的浏览器。本网站由位于德国的服务器通过加密连接提供。

服务器会用你浏览器的用户代理(user-agent)做两件小事(用户代理是浏览器的名称和版本,每个浏览器都会发给每个网站):读取它以显示正确的商店按钮——iPhone 上显示 App Store,Android 手机上显示 Google Play——然后就忘掉它。不会记录任何东西。

在 iPhone 上,Safari 可能会在页面顶部显示 Apple 的智能应用横幅(Smart App Banner)。这个横幅是 Safari 的一部分:Safari 自己会向 Apple 请求应用的名称和图标,就像对任何指定了应用的网站一样。本网站没有其他页面会从 Apple 加载任何内容。

如果你关闭页面底部的语言提示,或者从菜单中选择一种语言,你的浏览器会把这个选择记在它自己在你设备上的存储中,这样提示就不会再出现。这个选择从不会发送给我们。在浏览器中清除本网站的数据,就会把它删除。

还有一个例外,而且只在你点按我们的广告进入时才适用。下一节会完整说明。

我们的广告,以及本网站发送的唯一一样东西

我们在 Facebook、Instagram 和 TikTok 上投放 Ninja 的广告。当你点按其中一则广告时,广告网络会在它打开的页面地址中加入一个点击 ID——Meta 的是 fbclid,TikTok 的是 ttclid——通常还有一些广告活动标签(utm_…)。

当你从那则广告进来浏览时,我们页面之间的链接会在地址中保留这些参数——不需要在你的设备上存储任何东西。如果你随后点按某个商店按钮,页面会向我们自己的服务器发送一条消息,服务器把它直接转给你点按的那则广告所属的网络。这条消息包含:

  • 广告的点击 ID,
  • 你浏览器的用户代理字符串(名称和版本,每个浏览器都会发给每个网站),
  • 你点按的是哪个商店按钮,以及你当时在我们的哪个页面上,
  • 时间。

这让 Meta 或 TikTok 能统计到一则广告带来了一次商店访问,并把广告展示给更可能想要这个应用的人。Meta 和 TikTok 按照各自的政策处理点击 ID(Meta、TikTok)。

  • 不会发送任何东西——如果你不是从我们的广告进来的,或者你的浏览器发送了“全球隐私控制”(Global Privacy Control)或“请勿跟踪”(Do Not Track)信号。
  • 没有 Cookie、没有本地存储,也没有任何广告网络的跟踪像素或脚本。本网站仍然不从任何其他公司加载内容。
  • 我们的服务器什么都不保存。它不存储、不记录这条消息,也不转发你的 IP 地址。
  • 广告活动标签也会随商店链接本身一起传递,所以 Google Play 和 App Store 可以告诉我们——只有总数,从不针对个人——每个广告活动带来了多少次安装。
  • 应用不参与其中。它仍然不发起任何网络请求,在 Android 上也仍然没有联网权限。

儿童

Ninja 是一款通用工具。它不收集任何人的任何信息,无论年龄。

变更

如果本政策发生变更,新版本会发布在这里,并标注新的“最后更新”日期。Ninja 无法在应用内通知你,因为它从不联系服务器。

联系我们

关于本政策的问题:support@ninjacompress.app。