Listing all available WiFi access points in iOS - ios

I am trying to build an iOS application where I'll show the user a list of available WiFi Access Points to the user. First of all, I know that trying to do this will get my Application auto-denied in the App Store and that's okay, I'm only doing this for research purposes.
While I was researching, I found this GitHub library but it only works for 4.x and 5.x. This topic was also discussed in this question on how to use the iphone-wireless library but the top answer's link is down. Another answer linked this GitHub repo with a sample project but it seems that it only scans for other devices connected to where your device is currently connected.
I also found iPhone-Wireless' Google Code page but there's no guide whatsoever on how to use it.
Has anyone done this before? Listing all the available WiFi Access Points? I am okay with using libraries that will make the App Store reject my application as I have to plans of distributing it.

Related

NISession() returns error - Apple Nearby Interactions

I have downloaded the Nearby Interactions project that Apple released here. When I try to run the application I get this error
I have not modified the original project and there is nothing in the ReadMe that details extra setup configuration. Only that certain devices can be used.
There are no logs to accompany this and so I'm not quite sure on the cause of this. I see others have been able to run the project and so wondering if anyone has any insight into this
Running on an iPhone 14 device
Also, as a side to this, if anyone has any example app they have built with Nearby Interactions but in SwiftUI I would love to see how you integrated it in.
Thanks!

How to get current network information for a given network interface on iOS 13

I'm trying to implement an app that uses the BSSID of the network that the user is currently connected to on iOS 13.
However, Apple's documentation for CNCopyCurrentNetworkInfo on iOS 13 is not clear in its requirements for usage of their API.
It states the following in its description:
The requesting app must meet one of the following requirements:
The app uses Core Location, and has the user’s authorization to use location information.
The app uses the NEHotspotConfiguration API to configure the current Wi-Fi network.
The app has active VPN configurations installed.
This seems to suggest that only needs to meet one out of the 3 requirements listed above.
However, it subsequently states:
An app that fails to meet any of the above requirements receives the following return value:
An app linked against iOS 12 or earlier receives a dictionary with pseudo-values. In this case, the SSID is Wi-Fi (or WLAN in the China region), and the BSSID is 00:00:00:00:00:00.
An app linked against iOS 13 or later receives NULL.
This suggests that the app needs to meet all of the above requirements
This makes it extremely confusing as to what the requirements are, since the former part claims that you only need to implement one of the three in order to get the BSSID, whereas the latter part states that you won't get it if you miss out on any of the three requirements.
Any help on this would be much appreciated!
Your second quote does say ”any,” so not sure why you you think it suggests ”all.“
Have you tried it on 13.3 (17C54)?
I’ve had a few problems with a few apps. I started wondering if it was an “always enable location,” vs “only when using app.”
You do not appear to be alone in this problem.
According to the github thread below, SSID retrieval appears to be problematic even on the latest version of iOS (13.2.2).
In the link below, you will find that Apple has most likely fixed this issue on iOS 13.3, which is now in beta. I suggest we all test it and see what the results are.
https://github.com/HackingGate/iOS13-WiFi-Info/issues/7

Third Party Sign in for IOS11 - GIDSignInButton

I am testing for IOS 11 updates and notice that my Firebase Auth using Google Sign in does not work
I get an error
A problem repeatedly occurred on https://accounts.google.com/signin/oauth? client_id nosignup pproval_state=???? passive=????
I can see many press reports about Apple removing part of the social media integration Apple to stop third party login on apps through social media in iOS 11
But I cannot find anything aimed at developers on what we should do about this.
Google sign in web page does not mention anything that I can see about IOS11 Google Sign-In for iOS
Nor does Firebase
Could anyone provide clarification on whether these libraries will still be relevant going forward in IOS11, or provide links where these issues have been discussed.
------ adding link to Firebase sample app -----------
Firebase sample app also fails for the Google login, I have not tested all others
https://github.com/firebase/quickstart-ios/authentication/AuthenticationExampleSwift
It is true that Apple has removed the special handling of certain 3rd party social networking sites (FB, Flickr, Twitter), but Google was never among that list. So, your error should not be related to that.
The library you are using relies on a well adopted mechanism for providing in-app out-of-context OAuth signin. Basically, the app presents a SFSafariViewController with the OAuth page, then once authorization has completed it opens a special URL which gets forwarded back to the application which then dismisses the SFSafariViewController. Google and FB I know for sure do it this way in their SDKs.
In iOS 11, Apple is providing a new mechanism to do this workflow. It is called SFAuthenticationSession. They aren't deprecating the currently supported method, and you will likely see the libraries you use migrate to this new mechanism for iOS 11 devices.
The answer to your question is that these libraries are still relevant and you should continue to investigate your error (make sure you're not getting the error on iOS 10, obviously)
Update
In response to further questioning, I fired up a sample project from the link provided. I ran into the same problem on the simulator, but when I ran it on my old iPhone 6 with iOS 11 beta 3 it worked fine. So, at the movement, this seems like a simulator bug. One theory may be simulator's reliance on the host operating system for certain libraries, so it's possible that if you were running High Sierra you might not experience this problem.
I tried fiddling with all sorts of switches in settings to get the page to load correctly to no avail. It looks like the course of action is:
File a feedback
Test on the device until the simulator is fixed (this is beta software after all)
Update #2
The simulator issue seems to be fixed in Xcode 9 beta 4. 🎉

Adding a URL link to iOS app that is not optimized for mobile platforms (rejection possibility)

I have been doing some research about iOS app approval process, but I can't seem to find one thing that is pretty important in my case. I have added a simple url link to a website (I did not use a web view for the reason I am about to explain).
What I have found is that Apple specifies that font within the app should not be smaller than size 11. They also say that the user should not have to zoom in. Well, unfortunately I have a client who wants me to place a link of her website in a menu section of the app. I told the client that I was concerned that there may be an issue since this website is not optimized for mobile devices. Basically, this link shows a desktop version of a site on a mobile phone.
I have searched online for many guidelines, but I just haven't spotted anything yet. I would guess that they would reject it, but I was just curious if anyone happened to know for sure or knew where I should look to find this out.
Thanks

Programmatically detect which iOS application is visible to user

I found this and the problem is that the answers on that question didn't pan out (I also tested them first) and also that it is over a year old.
I've used the solution here to fetch the list of all running processes, but not of the struct kinfo_proc attributes seem to give any useful in detecting which app is currently visible to the user.
Basically:
I am trying to find out which app is currently visible (and open) to the user on iOS devices.
It must work on stock devices (non-jailbroken) and no need to worry about the app store.
Edit: I am looking at the private APIs now, but cannot seem to determine how my app could be notified (or inquire) about a new application being brought to the front.
Thank you
Thanks to #JohnWoods in the comment section of the question, I was able to find the solution on a related question.
The solution I used and that worked for me was here.

Resources