Docs

Install Trust for Android

Install

implementation("io.adhedge:install-trust:1.0.0")

No init call. Your coding agent can add it for you. Then link a Cloud project to your app in Play Console. We walk you through it.

Verdicts

VerdictMeaningBilled
TRUSTEDPassed every check.Yes
UNVERIFIEDCouldn't be confirmed.No
SUSPECTTwo or more red flags.No

Verdicts update as behavior comes in. Rooted phones and Play Games on PC are never blocked.

Reason codes

Two negative codes from different checks make a SUSPECT.

CodeMeaningNegative
PI_NO_DEVICE_INTEGRITYNo device integrity from Play.Yes
PI_VIRTUAL_DEVICEPlay Games on PC.No
PI_UNRECOGNIZED_VERSIONPlay doesn't recognize the app binary.Yes
PI_UNLICENSEDNo Play license for the install.Yes
PI_ACCESS_RISK_CONTROLLINGAnother app can control the screen.Yes
INSTALLER_NOT_PLAYNot installed by Play.Yes
CERT_UNKNOWNUnknown signing certificate.Yes
VERSION_NOT_PLAY_SERVEDA build Play isn't serving.Yes
ADB_ENABLEDUSB debugging on.Yes
TEST_KEYSTest-keys system build.Yes
EMULATOR_HEURISTICLooks like an emulator.Yes
ROOT_HEURISTICSigns of root.Yes
NO_INTERACTION_D0No taps on install day.Yes
LOW_INPUT_ENTROPYTaps too regular to be human.Yes
REINSTALL_90DReinstall within 90 days.Yes
LEGACY_COHORTInstalled before the SDK.No
SAMPLED_OUTNot sampled for attestation.No
LABEL_REAL_USERYour app labeled it real_user.Real user

Conversion events

Label real users

Call InstallTrust.label("real_user") when a user hits a milestone only people reach, like finishing onboarding.

Ad request gate

On Pro, call InstallTrust.shouldRequestAds() before loading an ad. It answers on the device, instantly.

Reconciliation

Upload any network's install report. We compare it with the first opens the SDK saw.

ColumnAccepted headersRequired
DateDay, Date, Event dateYes
InstallsInstalls, App installs, Conversions, Conv., All conv.Yes
CampaignCampaign, Campaign name, Source / mediumNo
CostAny header starting with CostNo

What the SDK sends

What we never collect: data safety.

License

The SDK, its wrappers, and the wire schema are Apache-2.0. Scoring runs on our side.