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_guardpublished on pub.dev. Runflutter pub add dev_guard. - React Native: Official package
react-native-dev-guardfor Expo and bare React Native workflows on npm. Runnpm install react-native-dev-guard. - Native Android: Official Gradle dependency
uk.devguard:android-sdk:1.0.4on Maven Central. Addimplementation("uk.devguard:android-sdk:1.0.4")to your build.gradle.kts. - Native iOS: Official CocoaPod
DevGuardSDKon CocoaPods trunk. Addpod 'DevGuardSDK', '~> 1.0.3'to your Podfile.
Three-Step Quickstart
- Create a Project: Sign in to the DevGuard Developer Portal, register your mobile project, and retrieve your Project ID and unique Secret.
- Install the SDK: Add the package to your app using the package manager for your platform and initialize with your credentials.
- 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
- Remote App Protection for Freelancers: A Practical Payment-Safety Guide
- Firebase Remote Config vs. Dedicated App Kill Switch: What Developers Get Wrong
- Why Free Flutter Kill-Switch Packages Fail Against Tampering and Non-Payment
- App Kill-Switch & Remote Access Contract Clauses for Freelancers & Agencies
- Flutter Remote App Control & Kill Switch Integration Guide