Android
Your Help button opens a native sheet. If the app has help articles, the assistant answers from them. Otherwise, or when the user asks, the contact form opens: the user writes, sees a screenshot of the screen they were on, hides or removes anything, and presses Send. It works in Views and in Compose apps; minSdk 26.
Install
Not published yet
The library isn’t on Maven yet: it comes with your account, as a module to add to your Gradle build.
Use it
class App : Application() {
override fun onCreate() {
super.onCreate()
AppSupport.configure(this, AppSupportOptions(
appKey = "pk_…", // Support apps → keys (publishable)
apiUrl = "https://<your support host>",
appVersion = BuildConfig.VERSION_NAME,
))
}
}
// your own help button, in any Activity:
helpButton.setOnClickListener { AppSupport.open(this) }
- Mark what must never leave the device:
Modifier.supportMask()in Compose,AppSupport.mask(view)for a View (card numbers, balances, personal details). Password fields and WebViews, SurfaceViews and TextureViews (maps, video) are blacked out too, before the user sees the preview. - The language follows
AppSupportOptions.language, then the app’s locale (aroren), then the app’s first language. Arabic is fully right to left. - The library declares
INTERNET, and itsSupportActivitymerges into your manifest.
What it does, and what it never does
- It never opens itself and never throws into your app.
open()returns at once; problems go to Logcat (tagsupport). A second tap while Support is opening or open does nothing.AppSupport.close()closes it. - One still image of your app, taken with
PixelCopyof the activity’s window the moment Support opens, before the sheet is drawn. It needs no permission and has no system prompt. It never shows other apps, the status bar, the keyboard, or your dialogs. The user can hide parts (burned into the pixels), remove it, or attach it. What the preview shows is exactly what is uploaded. - The image lives in memory only. It is never written to disk or passed through an Intent. When
the service is unreachable, the message (text only) is queued: at most 5 messages, for up to 3
days, sent at the next
configure()oropen(), or when the app comes back to the foreground. The form tells the user the message will go without the screenshot. - The help assistant answers only from your articles and names the ones it used. When it can’t answer, it says so, and “Didn’t help?” moves the user to the form with the conversation attached. The user can untick it.
- Only the allowlisted context is sent: app version, build, OS name and major version, phone or tablet, and the language. The form lists it under the message.
- A random install id is used only for rate limits.
- The support app’s colours and logo apply. Its font doesn’t: an Android app can’t load a font by family name.
Your privacy policy: a template
When you contact support in this app, we send your message, and, if you leave them attached, a screenshot of the screen you were on and your conversation with our help assistant. We also send the app version, the operating system and the device type. You see all of it before you press Send. Support messages are kept for 180 days after they are resolved.