Chính sách quyền riêng tư — Focus4Life
1. Dữ liệu lưu trên thiết bị của bạn
Mọi thứ bạn tạo hoặc thiết lập trong Focus4Life chỉ được lưu trong bộ nhớ cục bộ của ứng dụng trên thiết bị của bạn (một cơ sở dữ liệu SQLite cục bộ, các tùy chọn và tệp của ứng dụng). Bao gồm:
- công việc, dự án và cài đặt việc lặp lại,
- lịch sử và thống kê các phiên Pomodoro/tập trung,
- cài đặt ứng dụng và gói thiết lập đồng hồ,
- tiến độ Vườn thiền và ghép tranh,
- ảnh bạn chọn cho các bức tranh ghép trong vườn,
- nhật ký gián đoạn tập trung (xem mục 4).
Ứng dụng không bao giờ gửi bất kỳ dữ liệu nào trong số này cho chúng tôi hay cho bất kỳ ai khác. Chúng tôi không bao giờ thấy chúng — không có dữ liệu nào trong số này rời khỏi thiết bị của bạn. (Tính năng duy nhất có kết nối tới máy chủ của chúng tôi — đổi mã giảm giá trên Android — được mô tả ở mục 3 và không gửi đi bất kỳ dữ liệu nào kể trên.)
2. Hoạt động mạng: tranh cho khu vườn
Focus4Life chỉ tạo kết nối mạng ra ngoài cho đúng một mục đích: tải tranh cho Vườn
thiền. Khi bạn mở màn hình Vườn, ứng dụng sẽ tự động — tối đa một lần mỗi 7 ngày —
tải về một danh mục tranh nhỏ từ GitHub
(raw.githubusercontent.com/ZinZinTech/focus4life-garden-assets) rồi tải
các hình ảnh được liệt kê trong đó; mặc định chúng được phân phối từ cùng nơi này (các
mục trong danh mục có thể trỏ đến một máy chủ phân phối nội dung khác được vận hành cho
danh mục này; mỗi hình ảnh đều được kiểm tra checksum trước khi sử dụng).
Các yêu cầu này không mang theo dữ liệu cá nhân, thông tin tài khoản hay mã định danh thiết bị nào. Như với mọi yêu cầu web, máy chủ (GitHub) thấy địa chỉ IP của thiết bị bạn — xem tuyên bố quyền riêng tư của GitHub. Việc tải chỉ diễn ra khi bạn mở màn hình Vườn, và nếu bạn ngoại tuyến hoặc tải thất bại, ứng dụng vẫn hoạt động bình thường với bộ tranh có sẵn kèm theo. Lần duy nhất khác mà ứng dụng tạo kết nối mạng là khi bạn chủ động đổi mã giảm giá trên Android — xem mục 3.
3. Đổi mã giảm giá
Đôi khi Focus4Life cung cấp Pro với giá khuyến mãi thông qua một mã giảm giá. Cách đổi mã — và liệu ứng dụng có liên hệ với chúng tôi hay không — phụ thuộc hoàn toàn vào nền tảng của bạn.
Trên iOS và macOS, các mã là Offer Code của Apple. Khi bạn chọn đổi một mã, ứng dụng chỉ mở bảng đổi mã của chính Apple (trên iOS) hoặc trang đổi mã trên App Store (trên macOS); Apple xử lý toàn bộ giao dịch với tài khoản Apple của bạn. Chúng tôi không vận hành máy chủ nào trong luồng này và không nhận được dữ liệu nào từ nó — việc đổi mã là giữa bạn và Apple, theo chính sách quyền riêng tư của Apple. Trên các nền tảng Apple, Firebase và backend của chúng tôi thậm chí không bao giờ được khởi động.
Chỉ trên Android, và chỉ khi bạn chủ động nhập một mã rồi nhấn
đổi, ứng dụng mới liên hệ với một máy chủ do chúng tôi vận hành. Ở lần đổi đầu
tiên đó, ứng dụng khởi động Firebase một cách trì hoãn và liên hệ với backend
Firebase Cloud Functions của chúng tôi (Google Cloud, vùng
asia-southeast1) để:
- xác thực mã — ứng dụng gửi mã bạn đã nhập để backend kiểm tra mã có thật, còn hiệu lực và chưa dùng hết hay không, rồi trả về phần trăm giảm giá. Bước này không ghi gì cả, và giá trị của mã cố tình không bao giờ được ghi nhật ký; và
- ghi nhận giao dịch — sau khi bạn hoàn tất giao dịch mua đã giảm giá qua
Google Play, ứng dụng gửi mã cùng với
purchaseTokenvàorderIdcủa Google Play để backend xác minh giao dịch với Google và đánh dấu mã đã được dùng.
Mỗi yêu cầu được bảo vệ bằng Firebase App Check (Play Integrity), thứ gửi cho Google một chứng thực một lần rằng yêu cầu đến từ một bản cài đặt thật, không bị can thiệp của ứng dụng. Chứng thực này là tín hiệu về tính toàn vẹn của ứng dụng và thiết bị, chứ không phải mã nhận dạng bạn; mã định danh ứng dụng của App Check giống nhau cho mọi bản cài đặt nên không thể nhận ra riêng bạn. Như với mọi yêu cầu web, Google Cloud cũng xử lý tạm thời địa chỉ IP của thiết bị bạn để định tuyến yêu cầu, và một mã định danh cài đặt Firebase có thể được gửi kèm — xem điều khoản về quyền riêng tư và bảo mật của Firebase/Google.
Chúng tôi giữ lại một bản ghi sổ đổi mã nhỏ — orderId và
purchaseToken của Google Play, mã định danh ứng dụng App Check (không nhận
dạng cá nhân), và thời điểm mã được dùng — cho đúng một mục đích: để cùng một mã không thể
được đổi hai lần. Bản ghi được lập theo đơn hàng của Google Play, không theo bất kỳ
tài khoản hay danh tính nào: không có tài khoản hay hồ sơ nào được tạo ra, bản ghi
không gắn với bạn, và không bao giờ được dùng cho quảng cáo hay phân tích. Ứng dụng không có
Firebase Analytics, Crashlytics hay Auth, và không bao giờ đọc trực tiếp cơ sở dữ liệu của
chúng tôi.
Nếu bạn không bao giờ đổi mã, hoặc bạn đang dùng iOS, macOS, Windows, Linux hay web, ứng dụng không thực hiện bất kỳ yêu cầu nào trong số này và không bao giờ khởi động Firebase. Bản thân việc mở khóa Pro của bạn chỉ được lưu trên thiết bị của bạn.
4. Khóa tập trung — Truy cập mức sử dụng (Android) & Screen Time (iOS)
Khóa tập trung có thể giúp bạn tránh xa các ứng dụng gây xao nhãng trong phiên tập
trung. Tính năng "chặn ứng dụng gây xao nhãng" của nó mặc định tắt và
đòi hỏi bạn đồng ý hai lần: bạn phải bật công tắc trong phần cài đặt của ứng dụng,
và bạn phải cấp quyền Truy cập mức sử dụng của Android
(PACKAGE_USAGE_STATS) trên màn hình cài đặt hệ thống — ứng dụng không bao
giờ có thể tự lấy quyền này một cách âm thầm.
Khi được bật, Focus4Life chỉ dùng quyền Truy cập mức sử dụng để nhận biết ứng dụng nào đang ở phía trước trong lúc một phiên tập trung đang chạy, để có thể nhắc bạn quay lại công việc và ghi lại lần gián đoạn vào thống kê cục bộ của bạn. Các sự kiện gián đoạn được lưu chỉ trên thiết bị của bạn (tạm thời trong một tệp riêng của ứng dụng, sau đó trong cơ sở dữ liệu cục bộ của ứng dụng), không bao giờ được gửi đi đâu, và không được dùng cho bất kỳ mục đích nào khác. Bạn có thể thu hồi quyền Truy cập mức sử dụng bất cứ lúc nào trong cài đặt hệ thống của Android; ứng dụng vẫn hoạt động bình thường khi không có quyền này.
Trên iOS, cùng tính năng "chặn ứng dụng gây xao nhãng" được xây dựng trên khuôn khổ Screen Time của Apple (Family Controls). Nó mặc định tắt và cần bạn đồng ý hai lần như trên: bạn bật nó trong phần cài đặt của ứng dụng, và bạn cấp quyền truy cập Screen Time một lần qua lời nhắc hệ thống của chính Apple — ứng dụng không bao giờ có thể tự lấy quyền này một cách âm thầm. Sau đó bạn chọn những ứng dụng cần chắn trong bộ chọn ứng dụng tích hợp của Apple; bộ chọn này chỉ trao cho ứng dụng các mã thông báo ẩn danh: ứng dụng có thể chắn và đếm những ứng dụng bạn đã chọn, nhưng không thể biết chúng thực sự là ứng dụng nào. Trong một phiên tập trung, ứng dụng yêu cầu iOS chắn các ứng dụng đó và gỡ lớp chắn khi phiên kết thúc. Lựa chọn của bạn được lưu, và lớp chắn được thực thi, hoàn toàn trên thiết bị của bạn bởi iOS — không có gì trong số đó được truyền đi đâu.
5. Ảnh
Bạn có thể chọn ảnh từ thư viện của mình để biến thành bức tranh ghép trong vườn. Ảnh được chọn sẽ được sao chép vào bộ nhớ riêng của ứng dụng trên thiết bị của bạn và chỉ được ghi nhận trong cơ sở dữ liệu cục bộ của ứng dụng — ứng dụng không bao giờ tải ảnh của bạn lên đâu cả. Trên iOS, truy cập thư viện ảnh là quyền hệ thống duy nhất mà ứng dụng khai báo mô tả sử dụng, và nó chỉ được dùng cho bước chọn ảnh này.
6. Sao lưu thiết bị
Giống như dữ liệu của các ứng dụng khác, dữ liệu cục bộ của Focus4Life (bao gồm ảnh bạn đã thêm và thống kê cục bộ của bạn) có thể được đưa vào bản sao lưu hệ điều hành của thiết bị — ví dụ sao lưu iCloud trên iOS hoặc sao lưu Google trên Android — nếu bạn bật sao lưu. Các bản sao lưu đó do thiết bị và tài khoản Apple/Google của bạn thực hiện và kiểm soát, không phải ứng dụng này, và chúng thuộc phạm vi chính sách quyền riêng tư của Apple và Google. Bản thân ứng dụng không bao giờ truyền dữ liệu cục bộ của bạn đi đâu.
7. Các quyền ứng dụng khai báo
Android (bạn có thể thấy các quyền này trên trang Play Store):
| Thông báo | Cảnh báo đồng hồ và lời nhắc phiên. |
|---|---|
| Báo thức chính xác | Đổ chuông đúng thời điểm một khoảng tập trung hoặc nghỉ kết thúc. |
| Chạy khi khởi động | Khôi phục các lời nhắc đã hẹn sau khi thiết bị khởi động lại. |
| Dịch vụ nền trước & giữ thiết bị thức | Giữ đồng hồ chạy ổn định khi màn hình tắt. |
| Rung | Phản hồi rung cho các sự kiện đồng hồ. |
| Quyền Không làm phiền | Tùy chọn tắt tiếng thông báo trong phiên tập trung. |
| Truy cập mức sử dụng | Tính năng phát hiện xao nhãng tùy chọn của Khóa tập trung — xem mục 4. |
| Hiển thị trên ứng dụng khác | Hiện màn hình nhắc nhẹ nhàng "quay lại tập trung" khi Khóa tập trung đang bật. |
| Internet / trạng thái mạng | Dùng để tải tranh cho khu vườn (mục 2) và, trên Android, để đổi mã giảm giá (mục 3). |
Một số mục bổ sung xuất hiện trong tệp khai báo kỹ thuật của ứng dụng do các thành phần
bên thứ ba được dùng để xây dựng ứng dụng, chứ không phải vì ứng dụng sử dụng chúng:
QUERY_ALL_PACKAGES và REQUEST_DELETE_PACKAGES được khai báo
bởi plugin danh sách ứng dụng phục vụ bộ chọn "chọn ứng dụng cần chặn" của Khóa tập
trung, còn các bộ nhận và dịch vụ thông báo đẩy của Google (FCM/c2dm) được
kèm theo bởi plugin Live Activities cho iOS. Các thành phần thông báo đẩy này
có mặt nhưng không bao giờ được cấu hình hay sử dụng: ứng dụng không
thiết lập Firebase Cloud Messaging, không phân tích và không báo cáo sự cố, nên chúng
không thể gửi hay nhận bất cứ thứ gì. (Dịch vụ Google/Firebase duy nhất mà ứng dụng có
dùng — chỉ trên Android, chỉ khi bạn đổi mã giảm giá — được mô tả ở mục 3; nó không liên
quan gì đến các bộ nhận thông báo đẩy này.)
8. Xóa dữ liệu của bạn
Trong ứng dụng, bạn có thể xóa từng mục riêng lẻ: công việc có thể được xóa, dự án có thể được lưu trữ hoặc xóa vĩnh viễn khi đã trống, và ảnh bạn đã thêm có thể được gỡ bỏ (việc này cũng xóa các tệp ảnh khỏi bộ nhớ của ứng dụng). Hiện tại ứng dụng chưa có nút "xóa tất cả" một chạm, chưa có xuất dữ liệu, và chưa có cách xóa lịch sử các phiên tập trung đã hoàn thành từ bên trong ứng dụng.
Để xóa toàn bộ dữ liệu của bạn, hãy gỡ cài đặt Focus4Life (hoặc xóa bộ nhớ của ứng dụng trong cài đặt thiết bị). Việc này xóa vĩnh viễn cơ sở dữ liệu cục bộ và mọi tệp đã lưu — và vì không có dữ liệu cục bộ nào của bạn từng được tải lên, không bản sao nào của nó tồn tại trên bất kỳ máy chủ nào. (Thứ duy nhất chúng tôi từng lưu trên máy chủ là bản ghi đổi mã giảm giá ở mục 3, vốn không chứa dữ liệu cá nhân và không gắn với bạn.) Nếu bạn dùng sao lưu hệ điều hành (mục 6), hãy quản lý chúng qua tài khoản Apple/Google của bạn.
9. Trẻ em
Focus4Life là công cụ năng suất dành cho mọi đối tượng và không hướng đến trẻ em dưới 13 tuổi. Ứng dụng không thu thập dữ liệu cá nhân từ bất kỳ ai, kể cả trẻ em.
10. Quyền của bạn (GDPR)
ZinZinTech (KVK 42059149, Hà Lan) là đơn vị kiểm soát dữ liệu cho chính sách này. Hầu như không có gì bạn làm rời thiết bị của bạn để đến hệ thống của chúng tôi; ngoại lệ duy nhất là việc đổi mã giảm giá trên Android ở mục 3, nơi dữ liệu chúng tôi xử lý chỉ gồm một mã giảm giá, một mã giao dịch (purchase token) và mã đơn hàng (order ID) của Google Play, một chứng thực tính toàn vẹn của thiết bị, cùng — như với mọi yêu cầu web — địa chỉ IP của thiết bị một cách tạm thời; không thông tin nào trong số đó nhận dạng bạn và không thông tin nào được dùng cho quảng cáo hay phân tích. Bạn luôn có thể liên hệ với chúng tôi tại phan.business.nl@gmail.com với bất kỳ câu hỏi nào về quyền riêng tư, và bạn có quyền khiếu nại với cơ quan bảo vệ dữ liệu Hà Lan, Autoriteit Persoonsgegevens.
11. Thay đổi đối với chính sách này
Nếu một phiên bản tương lai của ứng dụng thay đổi cách dữ liệu được xử lý (ví dụ một tính năng sao lưu đám mây tùy chọn), chúng tôi sẽ cập nhật chính sách này trước khi phiên bản đó phát hành và điều chỉnh các ngày ở đầu trang này.
12. Liên hệ
ZinZinTech · KVK 42059149 · Hà Lan
phan.business.nl@gmail.com