Is it possible to get Signal Strength in iOS? How some apps like Experience.me and NetQual are getting signal Information?

Replies

Ping tests for network.


And their magic for determining number of bars for cell service is to ask the user.

Are you talking about cellular signal strength and so on? If so, there is no public API for getting that information on iOS.

As to how the apps you referenced work, I can’t discuss other developers apps but you can look at this post for my general thoughts on this.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

WWDC runs Mon, 13 Jun through to Fri, 17 Jun. During that time all of DTS will be at the conference, helping folks out face-to-face. http://developer.apple.com/wwdc/

I want to get LTE signal strength on iOS device. I search in Internet and found two ways.

1. CTGetSignalStrength:

int CTGetSignalStrength();

int signalStrength = CTGetSignalStrength();

2. Status bar:

UIApplication* app = [UIApplication sharedApplication];

NSArray* subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];

for (id subview in subviews) {

if [subview isKindOfClass:[NSClassFromString(@"UIStatusBarSignalStrengthItemView") class]]) {

dataNetworkItemView = subview;

break;

}

}

int signalStrength = [[dataNetworkItemView valueForKey:@"signalStrengthRaw"] intValue];


Are these two ways only run on iOS 9? Many said that the first way uses private method and the app with it can be not approved by apple.


Many said that the second way is also not public methods. But some one said that they built a app with the second way and the app was approved and is in apple store.


There are no definte statement about wherher apps with either of two ways can be approved by apple. Can I user either of these ways in my app? Is Apple going to approve my app which is built with either of these ways? Can I get a definite answer from apple?


Till now are there any new ways to get signal strength?


thanks

App review guideline #2.5 is Apple's official answer: Apps that use non-public APIs will be rejected


If the reviewers don't catch your review guideline violation, that isn't permission to continue violating that guideline. What it means is that your application is existing on borrowed time. Maybe your violation is going to get caught when you submit an update. Maybe that undocumented API is going to stop working or start returning invalid results. Maybe App Review will decide to redo the review for your application due to other concerns, and catch the violation.

Till now are there any new ways to get signal strength?

I’m going to repeat myself here: there is no public API for getting cellular signal strength on iOS.

Both of the techniques you’ve described rely on private API and are grounds for rejection. Do not go down this path.

Share and Enjoy

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

WWDC runs Mon, 13 Jun through to Fri, 17 Jun. During that time all
of DTS will be at the conference, helping folks out face-to-face.
<http://developer.apple.com/wwdc/>
Did you get answer here?

Did you get answer here?

Yes. The answer is…

There is no public API for getting cellular signal strength on iOS.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
I know for iOS 13 not allowed but can we do it for before iOS 13? like for iOS 12

I know for iOS 13 not allowed

This is not just a question of what’s allowed, it’s a question of what’s supported. So, let me amend my statement: There is no public API for getting cellular signal strength on iOS, nor has their even been.

Share and Enjoy

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