typedef enum {network_type_none= 0, network_type_wifi= 1, network_type_3g= 2, network_type_2g= 3,}network_type;
Then by getting the sign of the network type above the phone signal bar
+ (int) Datanetworktypefromstatusbar { uiapplication *app = [uiapplicationsharedapplication]; Nsarray *subviews = [[App valueforkey:@ "StatusBar"] valueforkey:@ "Foregroundview"] subviews]; NSNumber *datanetworkitemview = nil; For (ID subview in subviews) { if ([Subview iskindofclass:[nsclassfromstring (@ "Uistatusbardatanetworkitemview") Class]]) { datanetworkitemview = Subview; break; } } int netType = Network_type_none; NSNumber * num = [Datanetworkitemview valueforkey:@ "Datanetworktype"];if (num = = nil) { NetType = network_type_none;< C10/>}else{int n = [num intvalue];if (n = = 0) { netType = Network_type_none; } ElseIf (n = = 1) { netType = network_type_2g; } ElseIf (n = = 2) { netType = network_type_3g; } else{ netType = Network_type_wifi; } } return netType;}
If you find the problem, please timely inform, thank you!
iOS gets the latest ways to get the network (try it on yourself)