1. Current launch status
- Separate Privacy Policy, Terms, Data safety guide, Permissions disclosure, Support page, and Acceptable Use policy exist.
- Pages are responsive, keyboard accessible, printable, internally linked, and have no external UI framework/CDN.
- Core stream, advertising, permissions, retention, and no-account behavior are described from observed code.
- Publisher legal name, monitored email, public website, and governing law have not been supplied.
- The app has no in-app link or text for this Privacy Policy; Google Play requires privacy policy access inside the app as well as in the listing.
- Local video and synchronization traffic remain cleartext HTTP/WebSocket, so the app cannot claim all user data is encrypted in transit.
- The content-exchange/UGC gate is stronger now that Share files exposes a Host-created multi-file catalog for independent Joiner selection. The app still lacks verified in-app acceptance, reporting, blocking, and moderation controls.
- Android backup is enabled without custom extraction rules; decide whether ad/consent preferences should be backed up or transferred.
- Target audience, content rating, AdMob content rating, consent message, FGS declaration, and final Data safety answers need publisher submission.
2. Replace publisher configuration once
Edit store-assets/legal/assets/site.js and replace:
REPLACE_WITH_PLAY_CONSOLE_DEVELOPER_NAMEwith the exact entity shown on the Play listing;REPLACE_WITH_SUPPORT_EMAILwith a monitored public support/privacy/safety inbox;REPLACE_WITH_PUBLIC_WEBSITE_URLwith the final HTTPS website; andREPLACE_WITH_GOVERNING_LAW_AND_VENUEonly after jurisdiction-specific legal review.
Google’s User Data policy requires developer information and a privacy contact or inquiry mechanism. The entity in the store listing must appear in the Privacy Policy. Do not complete and review the publisher details before publication.
3. Host and place the Privacy Policy
- Publish
privacy-policy.htmlat a stable public HTTPS URL. - Ensure it is globally accessible, non-geofenced, non-editable by visitors, and not a PDF.
- Enter that exact URL in Play Console → Policy and programs / App content → Privacy policy.
- Add a visible Privacy Policy link inside the Android app, separate from Google UMP’s “Privacy choices” button.
- Link Terms and Acceptable Use inside the app before a Host selects or shares files if Play treats either mode as UGC.
UMP’s consent control changes ad privacy choices; it is not a substitute for the publisher’s comprehensive Privacy Policy.
4. Play Console “App content” draft
| Declaration | Draft response | Action |
|---|---|---|
| Contains ads | Yes — banner and app-open ads via Google Mobile Ads | Set AdMob maximum content rating consistently with the IARC rating and target audience. |
| App access | No sign-in, subscription, membership, or restricted account access | Provide two-device local-network reviewer instructions because core functionality cannot be evaluated on one isolated device. |
| Data safety | Collection/sharing: Yes; all data encrypted: No; no app account | Use Data Safety, then verify exact production SDK and AdMob settings. |
| Advertising ID | Yes — com.google.android.gms.permission.AD_ID appears in the merged release manifest via the Ads SDK |
Declare advertising use accurately. Never use it for non-ad persistent tracking. |
| Merged dependency permissions | Google Mobile Ads also adds READ_BASIC_PHONE_STATE; WorkManager adds WAKE_LOCK; AndroidX Core adds a signature-only dynamic-receiver permission |
Audit the merged manifest, not only src/main/AndroidManifest.xml, for every release. |
| Android backup | allowBackup="true"; no custom data-extraction rules observed |
Decide whether backup is necessary and exclude or disable backup for preference data that should not transfer. Reflect the final behavior in Privacy/Data safety. |
| Target audience | Publisher decision not present in the repository | Do not include children until Families SDK, data, ad, age-screen, and content requirements are implemented and verified. |
| Content rating | Complete the current IARC questionnaire from actual functionality and advertising | Disclose the ability to transmit user-selected video to a subset of users if the questionnaire asks about shared/UGC content. |
| App accounts | No account creation | No account deletion URL is required unless an app account is added later. |
| Financial/health/government features | None observed | Answer current declarations accurately; do not infer a feature from an ad. |
5. Shared-video library / UGC classification risk
Google defines UGC broadly as content users contribute to an app that is visible or accessible to at least a subset of users. Watch together makes one selected video accessible; Share files exposes several selected videos and their catalog metadata for Joiners to choose and control independently. This remains true even though there is no publisher cloud, account, public feed, or permanent upload, and the catalog is session-scoped. Ask Play Console support or qualified counsel for the final classification rather than assuming exemption.
If Play treats this as UGC, the official policy calls for:
- users to accept Terms/user policy before creating or uploading UGC;
- terms that define and prohibit objectionable content and behavior;
- robust and ongoing moderation reasonable for the UGC type;
- a user-friendly in-app system to report objectionable content/users; and
- blocking and enforcement controls where applicable.
Official reference: Google Play User Generated Content policy.
6. Transport-security release risk
User-selected video, Share files catalog names/sizes/types/durations, device labels, local IPs, session tokens, and Watch together playback data cross the LAN using cleartext HTTP and WebSocket. Google Play’s User Data policy expects secure handling and modern cryptography for personal and sensitive user data. A document warning gives transparency but is not a technical security control.
- Plan authenticated encrypted local transport (for example, HTTPS/WSS with secure peer trust, or a reviewed end-to-end design).
- Threat-model discovery records, token exposure in URLs, replay, peer authentication, and hostile LAN participants.
- After implementation, update Privacy, Terms, Permissions, Data safety encryption answer, testing, and review instructions.
Official reference: Google Play User Data policy.
7. Foreground service declaration
The app targets Android 36 and declares both mediaPlayback and
connectedDevice service types, with
FOREGROUND_SERVICE_MEDIA_PLAYBACK and
FOREGROUND_SERVICE_CONNECTED_DEVICE. It selects the type at runtime:
media playback for Watch together and connected-device continuous LAN transfer for Share
files. Play requires declarations for each used foreground-service type on Android 14+ apps.
Suggested functional description
“When the user explicitly starts Watch together after choosing one local video, WiFi Stream runs a media-playback foreground service for Host playback and its synchronized LAN session. When the user explicitly starts Share files after choosing one or more videos, WiFi Stream does not play on the Host; it runs a connected-device foreground service for continuous, user-visible transfer to Joiner devices. Both keep the local HTTP server, WebSocket session, and NSD advertisement active. The notification provides Stop Streaming or Stop Sharing.”
User impact if delayed or interrupted
“Joiners cannot reliably load or continue requested videos. Watch together loses its synchronized timeline; Share files loses catalog and source-file availability. Only bytes already buffered by a Joiner player might continue, with no offline-completion promise.”
Demonstration video
Record both paths. Watch together: Host a screening → Watch together → choose one video → synchronized Joiner playback → Stop Streaming. Share files: Host a screening → Share files → choose several rights-safe videos → “Sharing [count] videos” notification → Joiner browses and independently plays an item while the Host has no player → Stop Sharing. Host the review video at the access level Play requests.
Official reference: Foreground service declaration requirements.
8. Evidence-based store listing copy
App title
WiFi Stream
Short description
Watch in sync or share videos for independent playback over local Wi-Fi.
Long description draft
Turn a private Wi-Fi network or personal hotspot into a synchronized watch room or a temporary shared video library. Choose one video for Host-controlled Watch together, or choose several videos for Share files so each Joiner can select and control playback.
- Direct local-network video streaming from the Host
- Automatic nearby Host discovery with manual IP fallback
- Synchronized play, pause, seek, and position controlled by the Host
- Share files library with independent selection and controls on each Joiner
- Fullscreen custom Media3 player with reconnect and lock-screen handling
- No WiFi Stream account and no publisher cloud upload for the core media stream
Devices must be on the same network and support the selected video format. Core local traffic is not encrypted, so use a network you trust. WiFi Stream is ad-supported.
9. Store graphics and device support
- 512 × 512 PNG app icon with no transparency-related clipping and consistent production branding.
- 1024 × 500 feature graphic with safe text margins and no false device/UI claims.
- Five genuine phone screenshots already cover Home, Join discovery/manual connection, and the synchronized Host player.
- Recommended next capture: add genuine screenshots of the Share files Host dashboard and Joiner library after final UI testing. The current set does not show this new mode; do not imply that it does.
- Capture real production UI and remove private IPs, file names, notifications, device names, and ad test labels where necessary.
- Do not claim Android TV support based only on generated TV artwork. The reviewed manifest has no Leanback launcher, TV feature declaration, TV-specific navigation validation, or TV release configuration.
Generated promotional images should be treated as marketing artwork, not proof that the current app supports TV. Add and test a real Android TV target before publishing TV assets to a TV listing.
10. Suggested Play reviewer instructions
- Install the same release on two Android devices connected to one private Wi-Fi/hotspot.
- On Device A, tap Host a screening → Watch together and choose a non-sensitive test MP4 through the system picker.
- On Device B, tap Join and choose Device A from Nearby Hosts. If mDNS is unavailable in the review lab, enter Device A’s LAN IPv4 address manually.
- Verify Device B loads the media and follows Device A’s play, pause, and seek.
- Verify the Host notification is present and Stop Streaming ends the session.
- Repeat with Host a screening → Share files and choose two or more rights-safe test videos. Verify Device A shows a library dashboard without playing locally, Device B can browse and independently play/seek an item, and Stop Sharing ends access.
- Return to Home to see the banner location; app-open ads are frequency/eligibility gated and may not show immediately.
- Privacy choices appears only when Google UMP reports the entry point is required for the test region/device.
Provide a clean test video the publisher has rights to use and do not require reviewers to supply copyrighted commercial media.
11. Final pre-submission checklist
- Publisher configuration resolved and jurisdiction-specific legal review complete.
- Privacy/Terms/Acceptable Use hosted on stable HTTPS and linked in app where required.
- Cleartext security risk fixed or resolved with Play/legal review; Data safety answer remains honest.
- UGC classification resolved; any required in-app acceptance/report/block/moderation implemented.
- Production AdMob app/units verified; UMP message published; mediation/ad providers audited.
- Android Auto Backup/device-transfer scope reviewed and tested; extraction rules match the Privacy Policy.
- Data safety form submitted from the exact production artifact.
- Contains Ads, App Access, Target Audience, Content Rating, and both mediaPlayback/connectedDevice FGS declarations completed.
- Signed AAB tested on multiple phones, hotspot/router configurations, Android versions, and release ads using test-device configuration.
- Store text, icon, feature graphic, phone screenshots, support URL, and contact details finalized.
- Support/safety inbox actively monitored before release.