Monitoring Network quality

hello, we're currently working on a way to adapt the behavior of our app when the device is running with a low free memory remaining, or a bad network.

For the network, we though about implementing a speedtest, but the issue with this solution is that we want to test regularly the quality of the network, so if the device is running with a poor/bad network, the speedtest with stuck the app.

I was looking for other way to check the displayed informations in the status bar:

private func getWiFiRSSI() -> Int? {
    let app = UIApplication.shared
    var rssi: Int?
    let exception = tryBlock {
        guard let statusBar = app.value(forKey: "statusBar") as? UIView else { return }
        if let statusBarMorden = NSClassFromString("UIStatusBar_Modern"), statusBar .isKind(of: statusBarMorden) { return }
 
        guard let foregroundView = statusBar.value(forKey: "foregroundView") as? UIView else { return  }
 
        for view in foregroundView.subviews {
            if let statusBarDataNetworkItemView = NSClassFromString("UIStatusBarDataNetworkItemView"), view .isKind(of: statusBarDataNetworkItemView) {
                if let val = view.value(forKey: "wifiStrengthRaw") as? Int {
                    rssi = val
                    break
                }
            }
        }
    }
    if let exception = exception {
        print("getWiFiRSSI exception: \(exception)")
    }
    return rssi
}

I've checked the AppStore Guidelines but I'm not sure that this kind of code will not be subject to rejection by the Review team. Anyone having trying to submit with a similar approach?

Did you already managed to monitor network regularly, without using a speedtest?

Thanks for the help!

Answered by DTS Engineer in 815376022

iOS has no supported API for getting the Wi-Fi signal strength. This is something I cover in depth in iOS Network Signal Strength.

the speedtest with stuck the app.

It sounds like you worried about your speed test interfering with the networking that your app is already doing. But that doesn’t make sense. If the app is already doing networking, you can use that networking to establish your performance metric.

Anyone having trying to submit with a similar approach?

See the But what about this code I found on the ’net? section of the above-mentioned post.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

iOS has no supported API for getting the Wi-Fi signal strength. This is something I cover in depth in iOS Network Signal Strength.

the speedtest with stuck the app.

It sounds like you worried about your speed test interfering with the networking that your app is already doing. But that doesn’t make sense. If the app is already doing networking, you can use that networking to establish your performance metric.

Anyone having trying to submit with a similar approach?

See the But what about this code I found on the ’net? section of the above-mentioned post.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Monitoring Network quality
 
 
Q