Skip to main content
Glama
deviceDetection.ts2.25 kB
import { logger } from "./logger"; export type DevicePlatform = "android" | "ios"; /** * Device detection utility to determine platform based on device ID */ export class DeviceDetection { /** * Detect device platform based on device ID patterns * @param deviceId - The device identifier * @returns The detected platform */ static detectPlatform(deviceId: string): DevicePlatform { if (!deviceId) { logger.warn("[DeviceDetection] Empty device ID provided, defaulting to Android"); return "android"; } // iOS device patterns (UUIDs from idb/iOS Simulator) // iOS devices typically use UUIDs like: 569C0F94-5D53-40D2-AF8F-F4AA5BAA7D5E // iOS simulators also use similar UUID patterns const iosPattern = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i; // Android device patterns // Emulators: emulator-5554, emulator-5556, etc. // Physical devices: various patterns like serial numbers const androidEmulatorPattern = /^emulator-\d+$/; // Check for iOS UUID pattern first if (iosPattern.test(deviceId)) { logger.info(`[DeviceDetection] Detected iOS device: ${deviceId}`); return "ios"; } // Check for Android emulator pattern if (androidEmulatorPattern.test(deviceId)) { logger.info(`[DeviceDetection] Detected Android emulator: ${deviceId}`); return "android"; } // For other patterns, we'll need additional logic or default to Android // Android physical devices can have various ID formats // Most non-UUID device IDs are likely Android logger.info(`[DeviceDetection] Device ID pattern suggests Android device: ${deviceId}`); return "android"; } /** * Check if a device ID represents an iOS device * @param deviceId - The device identifier * @returns True if iOS device */ static isiOSDevice(deviceId: string): boolean { return DeviceDetection.detectPlatform(deviceId) === "ios"; } /** * Check if a device ID represents an Android device * @param deviceId - The device identifier * @returns True if Android device */ static isAndroidDevice(deviceId: string): boolean { return DeviceDetection.detectPlatform(deviceId) === "android"; } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zillow/auto-mobile'

If you have feedback or need assistance with the MCP directory API, please join our Discord server