Penso che questa domanda dovrebbe essere pubblicata nel sito di scambio inverso dello stack di ingegneria . Stai chiedendo i dettagli di implementazione su una scatola nera ...
In effetti ho scavato un po 'su /System/Library/CoreServices/Menu Extras/AirPort.menu
e /System/Library/Frameworks/CoreWLAN.framework/
Esiste un metodo privato di CWNetwork
chiamato isPersonalHotspot
, un tipo di:
char -[CWNetwork(Private) isPersonalHotspot](void * self, void * _cmd) {
eax = [*(self + 0x4) objectForKey:@"IOS_IE"];
eax = LOBYTE(eax != 0x0 ? 0x1 : 0x0) & 0xff;
return eax;
}
Sembra solo controllare alcuni identificatori. Penso che SFRemoteHotspotDevice
e WiFiXPCEventProtocol
potrebbero avere più dettagli di basso livello ma non ho controllato.
BTW, C'è anche una proprietà per identificare se è la rete CarPlay
@interface CWNetwork : NSObject <NSCopying, NSSecureCoding>
... //redacted
@property(readonly) BOOL isPersonalHotspot;
@property(readonly) BOOL isCarPlayNetwork;
... //redacted
Apple controlla l'hardware, i driver e il sistema operativo, immagino che possano aggiungere facilmente metadati extra durante la trasmissione del segnale WiFi, così il tuo Mac saprà se aggiungere o meno l'icona della catena.
Se qualcuno capisce esattamente come Apple ha fatto il trucco, per favore fatemelo sapere. :)