Skip to main content
WiFi StreamLegal & Trust
Publisher worksheet

Documentation is ready. Publication is not yet cleared.

Use this audit to complete Play Console and resolve product-policy risks. It distinguishes finished documents from missing identity, in-app links, security work, and possible user-generated-content safeguards.

Audit date 31 August 2026 Production ads configured Open blockers remain
On this page 1. Launch status 2. Publisher identity 3. Privacy placement 4. Play App content 5. Shared-content risk 6. Transport security 7. Foreground service 8. Store listing copy 9. Store graphics 10. Reviewer instructions 11. Final checklist

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.
Do not label this build “Play-ready” yet. Legal pages disclose behavior; they do not cure an insecure transport or missing in-app policy/safety controls.

2. Replace publisher configuration once

Edit store-assets/legal/assets/site.js and replace:

  • REPLACE_WITH_PLAY_CONSOLE_DEVELOPER_NAME with the exact entity shown on the Play listing;
  • REPLACE_WITH_SUPPORT_EMAIL with a monitored public support/privacy/safety inbox;
  • REPLACE_WITH_PUBLIC_WEBSITE_URL with the final HTTPS website; and
  • REPLACE_WITH_GOVERNING_LAW_AND_VENUE only 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

  1. Publish privacy-policy.html at a stable public HTTPS URL.
  2. Ensure it is globally accessible, non-geofenced, non-editable by visitors, and not a PDF.
  3. Enter that exact URL in Play Console → Policy and programs / App content → Privacy policy.
  4. Add a visible Privacy Policy link inside the Android app, separate from Google UMP’s “Privacy choices” button.
  5. 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.
The new Acceptable Use policy supplies written standards and an external reporting contact only. The current app has no in-app policy acceptance, report action, block list, moderation backend, or account/device enforcement. External HTML alone is insufficient if the UGC policy applies.

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.

Recheck character limits, localized copy, screenshots, and every factual claim immediately before submission. Do not advertise “offline,” “encrypted,” “private,” “secure,” “any format,” or guaranteed continuation after Host exit.

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

  1. Install the same release on two Android devices connected to one private Wi-Fi/hotspot.
  2. On Device A, tap Host a screening → Watch together and choose a non-sensitive test MP4 through the system picker.
  3. 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.
  4. Verify Device B loads the media and follows Device A’s play, pause, and seek.
  5. Verify the Host notification is present and Stop Streaming ends the session.
  6. 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.
  7. Return to Home to see the banner location; app-open ads are frequency/eligibility gated and may not show immediately.
  8. 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.

WiFi Stream · Android package com.vcw.wifistream

© 2026 the WiFi Stream publisher. Internal publication worksheet updated 31 August 2026.

Privacy Data safety Acceptable use Support