I have a very specific question in programming an ios app.
In general when you open your ios wifi settings, there should be a list of available networks to choose.. so far..
now I want that in some cases, if a network meets specific requirements, a text is diplayed down below the network name (e.g. like "connect with WIFIAPP") and by clicking on the network you open the "WIFIAPP"..
Is there any possibility to do that and if yes, how? A framework or something like that?
Hope you guys understand my concern..
Thank you for any help!
Daniel
The feature you are after is implemented by the NEHotspotHelper class in the Network Extension Framework. In order to use this class you need to complete a questionnaire and be authorised by Apple.
More details are included in the Hotspot Network Subsystem Programming Guide, but essentially your app runs in the background and takes part in the network scanning process. It can provide an annotation for recognised networks and the user can invoke your app from Settings in order to complete the network authentication.
Unfortunately, access to wifi network parameters is completely closed from developers. From your app you can only tell apart if device is closed to wifi or 3G cellular network. Nothing more. I don't even say about native Settings app. You can do only some extra limited things outside of your app, like play music, or show your custom Widget.
Related
I was trying to get a specific info before a IOS App development task which I searched but couldn't find anything relevant.
Wanted to know whether this requirement restricts (non compliance issue as per publish guidelines) the app to be published in App Store with features as below
User scans and lists all available wifi connections in a tableview
Selects one of the Wifi connection and connects on button click
Stores the password and SSID for future connections.
Would there be any compliance issue related to the same functionalities when submitting to IOS app store. One of my colleague have advised me about the same but not able to explain why? Which I tried to find out searching the internet, but too specific to find anything relevant. Deeply appreciate an Expert advise on this.
Thanks in advance.
I can't find anything in the Review Guidelines that would object your app idea: https://developer.apple.com/app-store/review/guidelines
A couple of areas where you should have a more detailed look:
2.5.1 Apps may only use public APIs.
2.5.9 Apps that alter the functions of standard switches, such as the Volume Up/Down and Ring/Silent switches, or other native user
interface elements or behaviors will be rejected.
5.1 Privacy
Technically, I'm not sure if it's even possible to change the WIFI not via the settings app, so I'd have a look their first. (https://apple.stackexchange.com/questions/1592/is-there-an-ipod-app-to-easily-switch-wifi-on-and-off)
I don't believe I've ever seen an app or a way to change SSID outside the Settings app. I explored a way to detect network changes, connects, disconnects, which work fine while the app is running. I was never able to influence how the user connected, just that a change happened. It also falls apart pretty quickly when the user backgrounds the app. Trying to keep a background task open long enough to poll the current connection fails pretty fast.
I wish Apple would provide some system level notification of Wifi connect events. This could be very useful to developers that want a little more control than Background App Refresh events.
Since iOS 7 was released, it's possible to connect devices through a mesh network using the Multipeer Connectivity Framework that can be used for app development.
My question is, could the same type of connectivity that's achievable through an app apply to Safari? In other words, does Safari's Internet connection mechanism force it to go through iOS' cellular data / wifi, or is it possible to allow the user to browse through a mesh?
I don't know much about iOS development and I suspect that websites opened through Safari don't have the authority to determine the sort of Internet connection mechanism that the device uses, but I wanted to ask if this is achievable by asking the user for permission or something like that.
Something that comes to mind is users' ability to download photos from websites to their file-systems, but then again they are the ones who are making the requests --the websites aren't asking for permission to save the photos.
The simple answer is no. You have no way to control Safari's network connection mechanism other than the options found in Settings->Safari.
I am currently using an adapted reachabilty framework based on Apple's sample code.
The framework works fine, however it provides false postives.
If the user is attached to a wifi network where they are required to login before having a valid connection, the framework shows as an active connection when in fact it isn't.
An example of this is Starbucks' wifi where you must provide an email address before you get online.
Is there a way around this without pinging a certain address?
Currently I am using the reachabilityWithHostname function
Thanks
Daniel
Update as provided by the link below i see this is a limitation of the framework. Are others finding away to alert the user of this?
If your computer is connected to a Wi-Fi access point, but that access point's internet connection is down, reachability will tell you that yes, you have a network connection
Check out this link
Networking is playing an ever more important role in application
development, and Apple's reachability API is a valuable tool in making
network-centric apps play nicely with varying real-world conditions.
Today I'm going to give an overview of the reachability API, what it
does, and how to use it.
This should help you.
In advance I am sorry for my English.
The task consists in defining, whether there is a person in a certain place (at certain office, for example), and to activate depending on it certain possibilities of the appendix.
At first I thought of definition of information on WiFi (or check of the same SSID, or automatic connection to the hidden network with set in the SSID appendix and the password), but, seemingly, not to make it without jailbreak (if somebody knows how - please, answer).
I think, GPS - not the best exit as it is possible to be out of the room, using it.
By the way, I already saw apps determining by WiFi of a point of access so it can be made somehow. I guess.
Actually, question. How it is better to define in the application, whether there is a device within, for example, premises of office?
Basically, if you know location coordinates you can safely use CoreLocation framework. Whether your target device supports region monitoring it will be perfect. It uses not only GPS, but WiFi and GSM as well
Look here: https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html
If you really need to get network name you can play with CNCopyCurrentNetworkInfo function of CaptiveNetwork framework.
See:
https://developer.apple.com/library/ios/documentation/SystemConfiguration/Reference/CaptiveNetworkRef/Reference/reference.html
I would like to know if it is a way to to manage a wifi configuration with metro apps ?
Basically I want my application to list and retrieve information about all the available wifis the phone detects. I saw that it was possible so far using the wlanapi.h but I can't figure out how to use it in this metro style app context.
If you have any idea, please tell me.
Cheers
According to this MSDN thread - it is not possible to list all wifi networks in range, but you can call NetworkInformation.GetConnectionProfiles() to list the known networks (or connection profiles) or NetworkInformation.GetInternetConnectionProfile() to access the one currently used for Internet access.