I understand you can get the current connected Wi-Fi network using the CaptiveNetwork interface. I also understand that Apple has cracked down on scanning for networks. What I need is to be able to read the list of 'stored' SSIDs that the phone connects automatically to.
I am attempting to use the Wi-Fi network as a sort of location trigger, that changes functionality when the user connects to his 'home' network. Using CaptiveNetwork I can get the current network and allow them to save that name, but can I get the list of saved networks so the user can set locations without having to be at each one during setup?
Related
Use Case:
We have an iOS application where you can run a network test between an iOS device and its associated wireless access point to test throughput. The app can get the IP address of the iOS device just fine, but the user has to type in the IP of the access point.
Problem:
The task is to get the IP address of the associated access point, and pre fill it for the user, hence avoiding user intervention there.
My Approach:
Find out the Mac Address/BSSID of the access point.
I do this by employing the Captive Network API.
Issue an ARP request to find out the IP associated to the access point.
I haven't been able to accomplish this as of yet. Google and SO search has kind of lead me to a dead end here. Here are some similar questions:
How do I query the ARP table on iPhone? AND
ARP Requests on iPhone
Question:
What is the right way to do this? In fewer words, what is the best way to get the IP address of the access point an iOS device is connected to.
A WiFi access point is not necessarily an IP-capable device (although many of them are, but for configuration, not communications, purposes).
Even if you do get the actual access point's IP address, how are you going to test the throughput? You could send ICMP Echo requests, but that will just give you instantaneous round-trip times, not throughput, and many IP devices, for security reasons, are configured to not respond to ICMP ECHO requests.
BSSID is unique for each SSID on each Radio and it differs from the Access Point’s Mac Address. If you compare them you can see last characters of Mac Adresses are different for BSSID and the AccessPoint.
I was exploring regarding Wi-Fi Direct and came accross with conclusion that WiFi -certified devices can connect one-to-one or one-to-many and not all connected products need to be Wi-Fi Direct-certified. One Wi-Fi Direct enabled device can connect to legacy Wi-Fi certified devices.So by this we can conclude like if one device is having WiFi direct and other device is having Wifi one can easily connect to it.
I have following queries please help me to resolve.
1.This Wifi Direct is there in Android ICS onwards.So i am trying to connect WiFi Direct of my Samsung Note 2 having Jelly Bean with another Samsung Mobile Galaxy Y duos having Ginger Bread that only has WiFi but i am unable to detect? Can anyone help me in finding reason for this?
2.Another thing i studied is Wifi Direct device will become as access point means it will create an Ad-hoc network ? So why another Wifi devices are not detecting it?
To find a wifi direct device in access point list of a normal wifi u need to create a wifi direct group. For this you need to first connect two wifi direct devices out of which one will act as a group owner and other as client. Once a group is created group owner act as a normal access point for legacy devices(Wifi devices).
Thus you need to create a Wifi Direct group first
I have to iphone applications that they use two different networks. Changing network setting for each application is not user friendly. I want to do such thing as follows,
When application starts, it checks the availability of particular network (SSID) and popup a message to the user to permit to connect. Once user click on "OK" they it connect to that particular network.
Anybody has similar experience ?
How can I connect to given SSID using objectiveC ?
I've been reading for a solution to achieve app controlled networking, but it seems impossible without the use of Apple80211 private API.
The best i think you can do is with CaptiveNetwork.
With this you can register a list of SSID's for your device and it will suppress web sheet.
From the doc:
By calling the CNSetSupportedSSIDs function, an application can register a list of wireless network SSIDs with Captive Network Support, thereby assuming responsibility for authenticating with those networks. Typically when a user joins a captive network, Captive Network Support provides a web sheet that allows the user to authenticate with the network. If an application has registered the SSID of the captive network, however, the web sheet is suppressed, and the user can complete authentication in the appropriate application.
I have to build an App that connects to a special Wi-Fi network and the opens an Ip address that is only available withing the network.
Is it possible to connect to a special wi-fi network (say "Network XYZ") via iPhone App. If so, please let know, so that I have an idea how to solve this.
Sadly no. Not from within the app.
All you can do is instruct user to go to settings and connect to that network.
If iPhone was not registered to any WiFi network before entering your app and your app has usesWiFi key set to YES then user will get a list of available networks to choose from.
One more big problem is: there are no AdHoc networks on this list - only infrastructure networks. AdHoc networks are available only trough settings.
What you could do is to instruct your user to set the auto-join feature on for desired network.
I'm afraid the only way to change the network is via the Settings application. Otherwise, rogue apps might be able to move users to their own proxies without the user's knowing.
It may be possible on jailbroken devices, however, as you would no longer be confined to working within the usual app restrictions on accessing system-level settings.
You can have your app launch once the user connects to the SSID you specify using the CaptiveNetwork API.
I am creating an application which lists the available WiFi connections. Then user can select the appropriate WiFi connection for any network communication.
I saw plenty of links but nothing is useful. One says that using the HotspotClient class can get available networks. But I can't find any useful methods in that class.
I used following links
http://supportforums.blackberry.com/t5/Java-Development/How-to-scan-for-available-networks-for-device-from-application/m-p/519179/highlight/false#M105143
Scan for available Wi-Fi networks on BlackBerry