Je propose une application iOS sur l'App Store. Avec le lancement des Macs M1 d'Apple, il est possible d'exécuter des applications iOS sur macOS. Je veux empêcher que mon application ne soit utilisée sur macOS, par exemple en lançant une exception après le lancement ou en appelant exit(0)
ultérieurement.
Comment puis-je détecter que l'application s'exécute sur un Mac M1 ?
Dans une certaine mesure, les applications iOS s'exécutant sur Macs semblent se signaler elles-mêmes comme des iPads, ce qui exclut certaines méthodes courantes d'identification de l'appareil.
Quelques détails pour fournir du contexte :
-
J'ai déjà retiré l'application du Mac App Store sur App Store Connect.
-
L'application est conçue et optimisée pour les écrans tactiles. La version actuelle offrirait une expérience utilisateur très mauvaise lorsqu'elle est exécutée sur macOS. Cela nécessiterait de nombreux changements et beaucoup d'efforts pour en faire une bonne application Mac. Je n'ai aucun plan, encore moins les ressources pour le faire.
-
En surface, cela pourrait ressembler à la question "Comment puis-je détecter si mon application s'exécute sur un appareil jailbreaké ?". Techniquement, cela pourrait être correct, et je comprends qu'il n'est généralement pas conseillé de mettre en place une détection des jailbreaks pour prévenir les piratages d'IAP, etc. Une différence importante est qu'Apple tente activement de prévenir les jailbreaks et décourage fortement les utilisateurs de le faire, ce qui semble maintenir la communauté des jailbreaks assez petite et en dehors du mainstream, mais d'un autre côté, Apple veut évidemment avoir le plus grand nombre possible d'applications iOS disponibles sur les Macs. Il est actuellement très facile d'exécuter des applications iOS sur des Macs, même si elles ne sont pas proposées dans le Mac App Store. Il existe des instructions sur des blogs technologiques populaires comme MacRumors et 9to5mac. Je veux m'assurer qu'au moins cette méthode facile d'exécuter l'application sur un Mac est empêchée.
-
De nombreux détails d'implémentation dans cette application ont été développés en supposant que l'application ne s'exécutera jamais que dans un bac à sable iOS auquel les utilisateurs n'ont pas un accès facile. Maintenant, il est probablement beaucoup plus facile pour les utilisateurs d'exécuter l'application avec des ressources modifiées, des paramètres utilisateur ou des contenus de répertoires comme
Application Support
, y compris des fichiers que je supposais être toujours immuables. Si les utilisateurs trouvent un moyen d'accéder au contenu de l'application qui nécessite normalement des achats intégrés ou des abonnements, par exemple en falsifiant des fichiers.plist
ou en renommant des fichiers de ressources de manière inattendue, c'est un véritable risque commercial.