Scanner and inventory apps
A light toggle next to the scan button helps users read labels, serial numbers and meters in warehouses, cellars and parking garages. Test on your devices whether the light stays on while the native scanner camera is open.
ChatGPT & Codex + flashlight
Reading a serial number in a dark storeroom, checking a meter in a basement, finding a seat at a concert: sometimes your ChatGPT & Codex app just needs light. WebViewGold switches the phone's torch on and off from two links, enableflashlight:// and disableflashlight://, on iOS and Android. It is a small feature that works best as a helper inside a bigger workflow.
From $109 one-time per platform, or let our team do it all from $698.
A light toggle next to the scan button helps users read labels, serial numbers and meters in warehouses, cellars and parking garages. Test on your devices whether the light stays on while the native scanner camera is open.
Inspection checklists for technicians, hiking and camping guides, staff checking tickets at a dark entrance. The light sits on the screen where the work happens.
A large, clearly labeled light button for users who need light to read a menu, a sign or a printed document. The WebViewGold docs list accessibility as a use case.
Light as a signal or reward in a quiz, escape-room or scavenger-hunt app. Keep effects slow; rapid flashing is uncomfortable and can be risky for photosensitive users.
Paste this into ChatGPT & Codex to implement the web-app side. Review the result, publish, then test inside the WebViewGold app.
Prompt for Codex: Add flashlight control for the WebViewGold app wrapper and open a pull request. In lib/native.ts add enableTorch() and disableTorch() that navigate to enableflashlight:// and disableflashlight:// only when navigator.userAgent contains my custom WebViewGold token. Create a LightToggle component with aria-pressed and a visible label, rendered only inside the app, and place it on the scan screen. Turn the light off on route changes and when document.visibilityState becomes hidden. In components that render AI-generated markdown, strip links whose scheme is not http or https so model output cannot trigger app URL schemes. Add tests and note the bridge rules in AGENTS.md.

I am very happy I bought this app! Extremely easy and great documentation. Was in contact with the customer service, they replied very quickly and very friendly. They solved my question within a day. 10/10 would recommend.
About 15 minutes.
Inside the app it navigates to enableflashlight:// or disableflashlight://. In a browser, hide it: websites cannot switch the flashlight reliably across browsers.
Set a custom user agent containing a token such as WebViewGold (useragent_iphone and useragent_ipad in Config.swift, USER_AGENT in Config.java) and show the button only when it is present. A distinct iPad user agent lets you hide it on iPads without a flash.
The docs describe on and off commands, not a status read-back. Keep the state in the web app and reset the label when the page loads.
Call disableflashlight:// when the user leaves the screen, so the light does not drain the battery in a pocket. On iOS, trigger one bridge call per tap rather than several in the same script.
The docs ask for the camera permission entries (Info.plist on iOS, AndroidManifest.xml on Android), because the torch is part of the camera hardware. On iOS, kFlashLightEnabled in Config.swift must not be false, or the calls are blocked.
Pure front-end code; nothing in your backend changes.
// Custom user agent containing "WebViewGold" set in Config.swift / Config.java
var IN_APP = navigator.userAgent.indexOf("WebViewGold") !== -1;
var lightOn = false;
function initLightButton(btn) {
if (!IN_APP) { btn.hidden = true; return; } // browsers: no torch control
btn.addEventListener("click", function () {
lightOn = !lightOn;
window.location.href = lightOn ? "enableflashlight://" : "disableflashlight://";
btn.textContent = lightOn ? "Light off" : "Light on";
btn.setAttribute("aria-pressed", String(lightOn));
});
}
// call when the user leaves the screen (route change)
function lightOffOnLeave() {
if (IN_APP && lightOn) { lightOn = false; window.location.href = "disableflashlight://"; }
}Not reliably across browsers. Inside a WebViewGold app, enableflashlight:// and disableflashlight:// switch the torch on iOS and Android.
Very unlikely. Guideline 4.3(b) lists flashlight apps among well-established categories that need a meaningfully different experience. As one helper inside a scanner, inventory or field-service app, the light is no problem.
The torch is part of the camera hardware, and the WebViewGold docs ask for the camera permission entries in Info.plist and AndroidManifest.xml. Write the purpose string so it mentions the light.
The docs describe only the on and off commands. Keep the state in the web app and switch the light off when the user leaves the screen.
Only on iPad models with a rear flash; many iPads have none. Give iPads their own user agent (useragent_ipad) and hide the button there, or show a friendly message.
Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.
$109 per platform, one-time
The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.
See plans on the main page$349 per license, one-time add-on
No Mac, no Xcode, no Android Studio: configure in the browser, we build both apps in the cloud and hand them to App Store Connect and the Play Console.
How the Cloud Builder works Try the free demo$698 per platform $798
Send us your URL and icon. Our team configures, builds and delivers your app within 72 hours, white-label, with source projects. Both platforms for $1,158.
Full Service details Powered byWinter Sale prices valid until December 31, 2026.
App Store & Google Play approval guarantee – or your money back within 14 days
Rather hand it over? Full Service: we configure, build and deliver within 72 hours, from $698 per platform. Questions? Chat with us 24/7.
Refunds are granted under the conditions listed in our FAQ: a non-content rejection by Apple and/or Google, claimed within 14 days after purchase.