I am looking for way to get the network signal strength. Is there an API that Apple supports to get that information?
Replies
Is there an API that Apple supports to get that information?
No. See this thread.
Share and Enjoy
—
Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware
let myEmail = "eskimo" + "1" + "@apple.com"
@eskimo Thanks for your reply. My goal is to get the number of signal bars. I tried using one of the Apple API. Please find the description below:
I found MetricKit description in Apple Documentation and found MXUnitSignalBars to get number of signal bars. Please find the code below:
import MetricKit
let metricManager = MXUnitSignalBars.bars
This is not returning number of signal bars. Am I missing something or is there any entitlement that I need inorder to get the signal bars?
Also, to get the WiFi signal strength, I found this -> https://developer.apple.com/documentation/networkextension/nehotspotnetwork/1618923-signalstrength .
Is this public or do we need special entitlement to use this?
Ah, MetricKit, I forgot about that. I’m glad you pointed it out.
Alas, it does not do what you want it to do. MetricKit does not provide a way for you to fetch a metric right now. Rather, it periodically calls your app with metrics. And by “periodically” I mean something along the lines of once per day.
For more background on this, see:
Given the above, let me tweak my original response: There is no supported way to get the cellular signal strength in real-time.
Share and Enjoy
—
Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware
let myEmail = "eskimo" + "1" + "@apple.com"
Serving Cell Info
Freq Band Indicator (1 or 2 digit response)
Physical Cell ID - This is the tower ID number (3 digit response)
Measured RSSI - dBm level (3 digits plus 2 to the right of the decimal) //calculated signal power from RSRP (not accurate)
Measured RSRP - dBm level (3 digits plus 2 to the right of the decimal) // actual signal power from cellular provider
Measured RSRQ - dBm level (2 digits plus 2 to the right of the decimal) // signal quality
Seems simple enough, but like I said. I have been asking for 6 years and Quinn or someone assigned at Apple replies with no. Usually with a we see no need for this data to be exposed, yet there it is in the Testmode app accessed through the dialer.
Yes I am a cellular engineer. Yes I am a beginner programmer just trying to build myself an app so I can stop carrying an Android device with my iPhone, just so I can read the signal level being delivered to where I am standing. Is that really so much to ask for...
Dan
The thread you offer (https://developer.apple.com/forums/thread/130129) is of no benefit as it simply confirms Apple does not current offer a API or mechanism to read industry standard Cellular KPI values. I don't really care about throughput without the KPIs. With the KPIs I can interpret the calculated throughput.
As I mentioned 2 months ago, the built in metrics in iOS do support the cellular values needed and I am sure there is a "last look" storage of these values somewhere in iOS.
I would like to have Apple offer a successful method in getting these values, and as mentioned before, read only mode is fine. This would keep Apple in control and allow the building of applications that let people like me, document current cellular KPIs from the handset's POV.
Today I do this with an Android device and I would much prefer to use an Apple device.
The App I would like to build would use Apple's location service and these KPIs to map out coverage (typically in-building).
I can only help folks use what’s currently available, and that clearly doesn’t meet your requirements. If you’d like Apple to make more things available in the future, I encourage you to file an enhancement request describing your requirements.I would like to have Apple offer a successful method in getting these
values
Please post your bug number, just for the record.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@apple.com"