Je pense que cette question devrait être publiée sur le site Reverse Engineering Stack Exchange . Vous demandez les détails d'implémentation d'une boîte noire ...
En fait, j'ai creusé un peu /System/Library/CoreServices/Menu Extras/AirPort.menu
et/System/Library/Frameworks/CoreWLAN.framework/
Il existe une méthode privée CWNetwork
appelée isPersonalHotspot
, sorte de:
char -[CWNetwork(Private) isPersonalHotspot](void * self, void * _cmd) {
eax = [*(self + 0x4) objectForKey:@"IOS_IE"];
eax = LOBYTE(eax != 0x0 ? 0x1 : 0x0) & 0xff;
return eax;
}
Il semble juste vérifier certains identifiants. Je pense SFRemoteHotspotDevice
et WiFiXPCEventProtocol
peut avoir plus de détails de bas niveau mais je n'ai pas vérifié.
BTW, Il existe également une propriété pour identifier si le réseau CarPlay est
@interface CWNetwork : NSObject <NSCopying, NSSecureCoding>
... //redacted
@property(readonly) BOOL isPersonalHotspot;
@property(readonly) BOOL isCarPlayNetwork;
... //redacted
Apple contrôle le matériel, les pilotes et le système d'exploitation, je suppose qu'ils peuvent facilement ajouter des métadonnées supplémentaires lors de la diffusion du signal WiFi afin que votre Mac sache si l'ajout de l'icône de chaîne ou non.
Si quelqu'un sait exactement comment Apple a fait l'affaire, faites-le moi savoir. :)