Travail avec les bases de données en C# : PostgreSQL et MongoDB pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Comment déterminer le modèle d'iPhone en Swift : Un guide pour débutants

\n\n

Avez-vous déjà demandé pourquoi votre application Swift fonctionne parfaitement sur l'iPhone 13 mais semble dessinée à la hâte sur l'iPhone SE (2e génération) ? Ou pourquoi certaines fonctionnalités que vous avez ajoutées sont soudainement indisponibles sur les modèles plus anciens ? La réponse est simple : différents iPhones ont des capacités différentes — de la taille de l'écran à la présence de Face ID et du retour haptique.

\n\n

Dans cet article, nous allons décomposer comment déterminer le modèle d'iPhone en Swift — de la méthode simple utilisant UIDevice à l'approche professionnelle avec sysctlbyname. Vous apprendrez non seulement à obtenir "iPhone", mais à savoir exactement si vous avez affaire à un iPhone 14 Pro Max ou un iPhone 8. C'est parti !

\n\n

Pourquoi est-ce important ?

\n

Chaque développeur iOS est tôt ou tard confronté au besoin d'adapter l'interface ou la logique à un appareil spécifique. Voici quelques scénarios concrets :

\n
    \n
  • Design adaptatif : sur les iPhones avec une encoche (iPhone X et plus récents), les éléments doivent être positionnés différemment que sur les anciens modèles avec un bouton Home.
  • \n
  • Optimisation des performances : sur les appareils plus anciens (iPhone 6s, iPhone 7), il vaut la peine de désactiver les animations ou effets lourds.
  • \n
  • Limitations fonctionnelles : tous les modèles ne supportent pas ARKit, LiDAR, l'écran 120 Hz ou MagSafe.
  • \n
  • Analytique : comprendre quels modèles vos utilisateurs utilisent aide à prendre des décisions produit.
  • \n
\n\n

Niveau 1 : UIDevice (Simple mais limité)

\n

La méthode la plus simple est d'utiliser la classe intégrée UIDevice. Elle retourne des informations générales sur l'appareil, mais malheureusement ne montre pas le modèle exact.

\n\n
import UIKit\n\nlet device = UIDevice.current\nprint("Device name: \\(device.name)")\nprint("Model: \\(device.model)")           // "iPhone" or "iPad"\nprint("System: \\(device.systemName)")     // "iOS"\nprint("Version: \\(device.systemVersion)")   // "17.0"\n
\n\n

Ce que vous obtenez : device.model retournera simplement "iPhone" ou "iPad". C'est utile pour comprendre qu'il s'agit d'un appareil mobile, mais pas pour une identification précise.

\n\n

Quand l'utiliser : si vous avez seulement besoin de vérifier que l'application fonctionne sur un iPhone, pas un iPad ou iPod touch. Par exemple, pour masquer des fonctionnalités spécifiques à l'iPad.

\n\n

Niveau 2 : sysctlbyname (Approche professionnelle)

\n

Pour obtenir le modèle exact d'iPhone, vous devez utiliser l'appel système sysctlbyname. Il retourne une chaîne comme "iPhone14,2" (qui est l'iPhone 13 Pro). Connaissant ces identifiants, vous pouvez les mapper à des noms lisibles par l'homme.

\n\n

Voici le code Swift fonctionnel :

\n\n
import UIKit\n\nfunc getDeviceModelCode() -> String {\n    var size = 0\n    sysctlbyname("hw.machine", nil, &size, nil, 0)\n    var machine = [CChar](repeating: 0, count: size)\n    sysctlbyname("hw.machine", &machine, &size, nil, 0)\n    return String(cString: machine)\n}\n\n// Usage\nlet modelCode = getDeviceModelCode()\nprint("Model code: \\(modelCode)") // Example: "iPhone14,2"\n
\n\n

Maintenant vous avez "iPhone14,2". Mais quel modèle est-ce ? Vous aurez besoin d'un dictionnaire de correspondance.

\n\n

Dictionnaire des modèles d'iPhone (à jour en 2024)

\n

Voici une liste incomplète mais suffisante pour la plupart des tâches. Une liste complète peut être trouvée dans des sources ouvertes ou maintenue comme un fichier séparé.

\n\n
func getDeviceModelName() -> String {\n    let modelCode = getDeviceModelCode()\n    \n    let modelMap: [String: String] = [\n        // iPhone 15 series\n        "iPhone15,4": "iPhone 15",\n        "iPhone15,5": "iPhone 15 Plus",\n        "iPhone16,1": "iPhone 15 Pro",\n        "iPhone16,2": "iPhone 15 Pro Max",\n        \n        // iPhone 14 series\n        "iPhone14,7": "iPhone 14                

Blogs

Book Recommendations