MONetTools.m 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. //
  2. // MONetTools.m
  3. // MiMoLive
  4. //
  5. // Created by SuperC on 2023/10/17.
  6. //
  7. #import "MONetTools.h"
  8. #import "Reachability.h"
  9. #import "Reachability+More.h"
  10. @implementation MONetTools
  11. + (NSInteger )signalStrengthThan13
  12. {
  13. NSInteger signalStrength;
  14. if(@available(iOS 13.0, *))
  15. {
  16. NSArray *arr = [UIApplication sharedApplication].connectedScenes.allObjects;
  17. UIWindowScene *scene = arr.firstObject;
  18. UIStatusBarManager *statusBarManager = scene.statusBarManager;
  19. id statusBar =nil;
  20. if([statusBarManager respondsToSelector:NSSelectorFromString(@"createLocalStatusBar")])
  21. {
  22. UIView*localStatusBar = [statusBarManager performSelector:NSSelectorFromString(@"createLocalStatusBar")];
  23. if([localStatusBar respondsToSelector:NSSelectorFromString(@"statusBar")])
  24. {
  25. statusBar = [localStatusBar performSelector:NSSelectorFromString(@"statusBar")];
  26. }
  27. }
  28. if(statusBar)
  29. {
  30. id currentData = [[statusBar valueForKeyPath:@"_statusBar"]valueForKeyPath:@"currentData"];
  31. id cellularEntry = [[Reachability netName] isEqualToString:@"WIFI"]?[currentData valueForKeyPath:@"wifiEntry"]:[currentData valueForKeyPath:@"cellularEntry"];
  32. if([cellularEntry isKindOfClass:NSClassFromString(@"_UIStatusBarDataWifiEntry")])
  33. {
  34. //wifi网络
  35. signalStrength = [[cellularEntry valueForKey:@"displayValue"]intValue];
  36. }
  37. else if([cellularEntry isKindOfClass:NSClassFromString(@"_UIStatusBarDataIntegerEntry")])
  38. {
  39. //运营商流量/网络
  40. signalStrength = [[cellularEntry valueForKey:@"displayValue"]intValue];
  41. }
  42. }
  43. }
  44. return signalStrength;
  45. }
  46. //13以下
  47. + (NSString *)signalStrengthLess13
  48. {
  49. UIApplication *app = [UIApplication sharedApplication];
  50. NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
  51. NSString *dataNetworkItemView = nil;
  52. NSString *signalStrength = @"";
  53. for (id subview in subviews)
  54. {
  55. if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]] && [[Reachability netName] isEqualToString:@"WIFI"] && [Reachability netName].length>0)
  56. {
  57. dataNetworkItemView = subview;
  58. signalStrength = [NSString stringWithFormat:@"%@dBm",[dataNetworkItemView valueForKey:@"_wifiStrengthRaw"]];
  59. break;
  60. }
  61. if ([subview isKindOfClass:[NSClassFromString(@"UIStatusBarSignalStrengthItemView") class]] && ![[Reachability netName] isEqualToString:@"WIFI"] && [Reachability netName].length>0)
  62. {
  63. dataNetworkItemView = subview;
  64. signalStrength = [NSString stringWithFormat:@"%@dBm",[dataNetworkItemView valueForKey:@"_signalStrengthRaw"]];
  65. break;
  66. }
  67. }
  68. return signalStrength;
  69. }
  70. @end