Myślę, że to pytanie powinno zostać opublikowane na stronie Reverse Engineering Stack Exchange . Pytasz o szczegóły implementacji dotyczące czarnej skrzynki ...
W rzeczywistości trochę się przekopałem /System/Library/CoreServices/Menu Extras/AirPort.menui/System/Library/Frameworks/CoreWLAN.framework/
Istnieje prywatna metoda o CWNetworknazwie isPersonalHotspot:
char -[CWNetwork(Private) isPersonalHotspot](void * self, void * _cmd) {
eax = [*(self + 0x4) objectForKey:@"IOS_IE"];
eax = LOBYTE(eax != 0x0 ? 0x1 : 0x0) & 0xff;
return eax;
}
Wygląda na to, że sprawdzam tylko niektóre identyfikatory. Myślę SFRemoteHotspotDevicei WiFiXPCEventProtocolmoże mam więcej szczegółów na niskim poziomie, ale nie sprawdziłem.
BTW, istnieje również właściwość umożliwiająca określenie, czy jest to sieć CarPlay
@interface CWNetwork : NSObject <NSCopying, NSSecureCoding>
... //redacted
@property(readonly) BOOL isPersonalHotspot;
@property(readonly) BOOL isCarPlayNetwork;
... //redacted
Apple kontroluje sprzęt, sterowniki i system operacyjny. Sądzę, że mogą z łatwością dodawać dodatkowe metadane podczas emisji sygnału WiFi, dzięki czemu Mac wie, czy dodać ikonę łańcucha, czy nie.
Jeśli ktoś wymyśli dokładnie, w jaki sposób Apple wykonał tę sztuczkę, daj mi znać. :)