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.menu
i/System/Library/Frameworks/CoreWLAN.framework/
Istnieje prywatna metoda o CWNetwork
nazwie 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ę SFRemoteHotspotDevice
i WiFiXPCEventProtocol
moż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ć. :)