DevGuard mobile SDK documentation

Choose your mobile platform, install the official DevGuard SDK and connect your app to remote access controls, device analytics, crash reporting and User Journey.

Supported Mobile Platforms & Package Registries

DevGuard publishes standalone, production-hardened SDKs across all four primary mobile runtimes. Install directly from your platform's official public registry, configure your API credentials in the Developer Portal, and integrate remote kill switch, device analytics, crash reporting and user journey tracking into your codebase.

  • Flutter: Official Dart package dev_guard published on pub.dev. Run flutter pub add dev_guard.
  • React Native: Official package react-native-dev-guard for Expo and bare React Native workflows on npm. Run npm install react-native-dev-guard.
  • Native Android: Official Gradle dependency uk.devguard:android-sdk:1.0.4 on Maven Central. Add implementation("uk.devguard:android-sdk:1.0.4") to your build.gradle.kts.
  • Native iOS: Official CocoaPod DevGuardSDK on CocoaPods trunk. Add pod 'DevGuardSDK', '~> 1.0.3' to your Podfile.

Three-Step Quickstart

  1. Create a Project: Sign in to the DevGuard Developer Portal, register your mobile project, and retrieve your Project ID and unique Secret.
  2. Install the SDK: Add the package to your app using the package manager for your platform and initialize with your credentials.
  3. Control Your Fleet: Access live fleet analytics, monitor telemetry, review crash reports, and trigger remote access locks or payment unlock keys from your dashboard.

SDK Initialization Code Examples

Initialize DevGuard at your application entrypoint before running your UI loop. Specify a fail-safe policy (e.g. failSafe: FailSafe.open) so your app functions normally if network connectivity is unavailable during launch.

Flutter (main.dart)

import 'package:flutter/material.dart';
import 'package:dev_guard/dev_guard.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await DevGuard.init(
    projectId: 'your_project_id',
    secret: 'YOUR_UNIQUE_SECRET',
    failSafe: FailSafe.open,
  );
  DevGuard.setUserLog(screen: 'home');
  runApp(const MyApp());
}

React Native (App.tsx)

import { DevGuardProvider, DevGuard } from 'react-native-dev-guard';

DevGuard.setUserLog({ screen: 'home' });

const App = () => (
  <DevGuardProvider
    projectId="your_project_id"
    secret="YOUR_UNIQUE_SECRET"
    failSafe="open"
    autoProtect={true}
  >
    <MainApp />
  </DevGuardProvider>
);

Native Android (App.kt)

class App : Application() {
  override fun onCreate() {
    super.onCreate()
    DevGuard.init(
      context = this,
      projectId = "your_project_id",
      secret = "YOUR_UNIQUE_SECRET",
      failSafe = DevGuard.FailSafe.OPEN,
    )
    DevGuard.setUserLog(screen = "home")
  }
}

Native iOS (AppDelegate.swift)

import DevGuardSDK

DevGuard.shared.initialize(
  projectId: "your_project_id",
  secret: "YOUR_UNIQUE_SECRET",
  failSafe: .open
)
DevGuard.shared.setUserLog(screen: "home")
DevGuard.shared.attachShield(to: window)

Defense-in-Depth Security & Offline Architecture

Unlike generic remote config tools or unmaintained open-source kill-switch packages, DevGuard is architected specifically for resilient access control and commercial protection:

  • Cryptographic Response Verification: Status responses from api.devguard.uk are authenticated using HMAC SHA-256 signatures derived from your project secret. Man-in-the-middle proxy tampering (via Proxyman, Charles, or Burp Suite) and manipulated JSON payloads are immediately detected and rejected.
  • Offline Grace Periods & Encrypted Local Storage: Legitimate users in airplanes, subway tunnels, or poor reception areas are not locked out. Access tokens are stored in hardware-backed secure storage (iOS Keychain / Android Keystore) and honor a configurable offline grace period (up to 72 hours).
  • Emergency Offline Payment Unlock Keys: When an access restriction is applied for non-payment, developers can generate an offline cryptographic unlock code from the Developer Portal. The client can enter this key directly on the lock screen to restore full app access without needing an internet connection.
  • Device Integrity & Tamper Detection: Active checks identify rooted Android devices, jailbroken iOS environments, Frida dynamic instrumentation frameworks, and active debugging hooks, surfacing device risk scores in the Developer Portal.

Developer FAQ

Does DevGuard comply with Apple App Store Review Guideline 2.5.2?
Yes. Apple Guideline 2.5.2 prohibits apps from downloading executable code or dynamic bytecode. DevGuard functions strictly as an access gate and feature flag framework — all UI views and binary code are compiled into the native application bundle ahead of time.
Does the SDK introduce startup latency or block the UI thread?
No. DevGuard validates local encrypted cache synchronously on boot in sub-10ms and dispatches status synchronization asynchronously in the background. The user interface renders immediately without cold-start hitching.
Can a client bypass the lock screen by turning off Wi-Fi or Cellular data?
No. Once a remote lockout is received and validated, the locked state is permanently committed to secure hardware-backed storage. Subsequent launches without internet connectivity remain locked until an emergency payment unlock key is entered.
What telemetry data is collected and is it GDPR-compliant?
DevGuard collects anonymous hardware and runtime signals: OS build, device model, app version, screen breadcrumbs, and unhandled exception traces. No personal data (PII) is captured by default, ensuring full GDPR and CCPA compliance.

Related Architecture & Security Guides