Android Study Material App
Publicada el 2026-07-31
Descripción de la oferta
Project Brief: Secure PDF Ebook Viewer App (iOS + Android) Overview We need a mobile app (iOS + Android) that lets authenticated users view PDF ebooks in-app only. Users should not be able to download, export, print, or easily screenshot/screen-record the content. The goal is strong deterrence against content leakage — not absolute prevention, which no platform can guarantee (especially iOS). Recommended Stack Framework: Flutter (single codebase for iOS + Android), unless the developer has a strong reason to recommend native (Swift/Kotlin) instead. PDF rendering: In-app rendering only (e.g. Syncfusion Flutter PDF Viewer, or equivalent) — no native "open in other app" or file export paths. Backend: Required. PDFs must be served via authenticated, short-lived signed URLs — not bundled into the app or fully downloaded to persistent device storage. DRM SDK option: Open to using an existing solution (e.g. Readium, Adobe Content Server, Vitrium, Digimarc) instead of building content protection from scratch, if it meaningfully reduces cost/timeline without sacrificing the requirements below. Core Requirements 1. Content delivery PDFs are streamed/rendered from backend via authenticated, time-limited signed URLs. No complete PDF file should persist in accessible local storage. Backend must support user authentication and per-user access control (which users can view which books). 2. Viewer restrictions Users can view pages only — no download, export, share, or print options exposed anywhere in the UI. Text selection and copy/paste disabled within the viewer. Page navigation, zoom, and basic reading controls (bookmarks, table of contents, etc.) should work normally — [confirm exact feature list with dev]. 3. Screenshot / screen-recording protection Android: Implement FLAG_SECURE on the reader activity/window to block screenshots, screen recording, and the recent-apps thumbnail preview. iOS: Detect screenshot events (UIApplication.userDidTakeScreenshotNotification) and screen recording (UIScreen.capturedDidChangeNotification). On detection: blur or hide page content immediately, and [define desired behavior — e.g. log the event, warn the user, notify admin, temporarily lock the book]. Acknowledge to us in writing that iOS has no true prevention API — detection/reaction is the ceiling here. 4. Watermarking Overlay a semi-transparent, per-user watermark (e.g. name and/or email/account ID) across each page. Purpose: traceability if leaked content surfaces, even though it doesn't stop capture itself. 5. Device security (nice-to-have, confirm priority) Detect rooted (Android) / jailbroken (iOS) devices and optionally restrict or warn on those devices, since FLAG_SECURE and other protections can sometimes be bypassed at the root level. Deliverables iOS app (App Store-ready build or TestFlight build) Android app (Play Store-ready build or internal testing build) Backend service for authenticated, signed-URL PDF delivery (or integration with chosen DRM SDK) Basic admin capability to upload/manage ebook files and assign access to users [confirm scope] Documentation covering setup, deployment, and a clear statement of the security model's actual guarantees and limitations Explicitly Out of Scope (unless quoted separately) 100% screenshot prevention (not technically possible, especially on iOS) Protection against external capture (a second camera photographing the screen) [Add other exclusions as needed — e.g. offline reading, multi-language support, etc.] What We Need From Applicants Confirmation of experience with Flutter (or native) apps involving secure/DRM-protected document viewing. Any prior experience with FLAG_SECURE, iOS screenshot/recording detection, or DRM SDKs (Readium, Adobe Content Server, Vitrium, Digimarc, etc.). A fixed-scope quote based on the requirements above, broken down by: mobile app development, backend development, and any DRM SDK integration/licensing costs. Estimated timeline. Portfolio examples of similar work, if available.
Skills
Fuente original: freelancer