📊 DashboardManaging Apps

Managing Apps

Apps represent your mobile applications in ProtectMyAPI. Each app has its own configuration, linked services, and security settings.

📱

One app per platform: Create separate apps for iOS and Android, or use Flutter/React Native apps that cover both platforms.


Creating an App

Start the App Wizard

  1. Click “Create App” in the dashboard
  2. The setup wizard will guide you through the process

Choose Your Platform

Select your app’s platform:

PlatformUse When
iOSNative Swift/SwiftUI/Objective-C app
AndroidNative Kotlin/Java app
FlutterCross-platform Flutter app
React NativeCross-platform React Native app

Enter App Details

Required fields:

FieldExampleWhere to Find
App Name”My iOS App”Your choice
Bundle IDcom.company.myappXcode → Target → General
Apple Team IDABCD1234EFApple Developer Portal → Membership

Optional fields:

FieldPurpose
App Store Key IDFor App Store receipt validation
App Store Issuer IDFor App Store Connect API
App Store Private KeyFor automated verification

Configure Security Settings

SettingDefaultDescription
Enforce Attestation✅ OnRequire device verification for all requests
Allow Rooted/Jailbroken❌ OffBlock compromised devices
Require Play Store✅ OnAndroid: Only allow Play Store installs
⚠️

Production apps: Keep all security settings enabled. Only disable for testing.

Complete Setup

  1. Review your configuration
  2. Click “Create App”
  3. Copy your App Token — you’ll need this in your code

App Token

Your App Token identifies your app to ProtectMyAPI:

app_a1b2c3d4e5f6g7h8i9j0

Where to Use It

// iOS
ProtectMyAPI.shared.configure(appId: "app_a1b2c3d4e5f6...")
// Android
ProtectMyAPI.initialize(this, "app_a1b2c3d4e5f6...")
💡

App Token is NOT secret. It can be safely included in your app code. The security comes from device attestation, not the token itself.


App Settings

General Settings

Access from: Apps → Select app → Settings tab

SettingDescription
App NameDisplay name (can be changed anytime)
Bundle ID / Package NameMust match your app (cannot be changed)
EnvironmentDevelopment or Production

Security Settings

SettingRecommendationImpact
Enforce Attestation✅ Always OnBlocks unverified requests
Allow Jailbroken (iOS)❌ OffBlocks compromised iOS devices
Allow Rooted (Android)❌ OffBlocks compromised Android devices
Allow Emulators❌ OffBlocks simulator/emulator requests
Require Play Store✅ OnAndroid: Block sideloaded apps

Integrity Levels (Android)

LevelSecurityUse Case
MEETS_BASIC_INTEGRITYLowDevelopment only
MEETS_DEVICE_INTEGRITYMediumMost apps (recommended)
MEETS_STRONG_INTEGRITYHighBanking, healthcare

Linking API Services

Apps need linked API Services to make requests:

  1. Go to Apps → Select your app
  2. Click “Linked API Services” tab
  3. Click “Link Service”
  4. Select services to link
  5. Click “Save”
🔗

Tip: Create services in API Services first, then link them to your apps.


Live Console

Monitor real-time requests from your app:

  1. Go to Apps → Select your app
  2. Click “Live Console” tab
  3. See requests as they happen:
    • Timestamp
    • Endpoint called
    • Response status
    • Latency
    • Device info

Deleting an App

⚠️

Warning: Deleting an app is permanent. All linked services will be unlinked, and the app token will stop working immediately.

  1. Go to Apps → Select your app
  2. Click Settings tab
  3. Scroll to Danger Zone
  4. Click “Delete App”
  5. Type the app name to confirm

Best Practices

Naming Convention

✅ Good: "MyApp iOS Production"
✅ Good: "MyApp Android Dev"
❌ Bad: "Test" (not descriptive)

Environment Separation

  • Create separate apps for Development and Production
  • Use different API keys for each environment
  • Keep production security settings strict

Multiple Apps Strategy

ScenarioRecommendation
iOS + Android native2 separate apps
Flutter/React Native1 app (handles both)
Dev + ProdSeparate apps per environment
Multiple clientsSeparate organizations

Troubleshooting

”Bundle ID mismatch”

Your app’s Bundle ID doesn’t match the dashboard configuration.

  • iOS: Check Xcode → Target → General → Bundle Identifier
  • Android: Check build.gradleapplicationId

”Attestation failed”

  • Ensure you’re testing on a real device
  • Check that App Attest capability is enabled (iOS)
  • Verify SHA-256 fingerprint is correct (Android)

“App not found”

  • Verify the App Token in your code
  • Check you’re using the correct environment

Next Steps