I'm trying to create an app that scans available wifi networks and if it is available accesses.
It's possible?
iOS 5 it is possible to scan the network list using private API on a jailbroken device only. This blog post states the following:
Last year Apple has blocked wifi scanners from App Store, however till
iOS5 it was still available for private usage via WiFiManager bundle.
In iOS5, WifiManager bundle no more exists however 80211 functions are
still available via IPConfiguration bundle.
The API you linked provides an open-source tool Stumbler which seems like something you were seeking. The tool is claimed to work under iOS 5.
Related
I am working on an iOS app that integrates with multiple bluetooth devices (e.g. printers and barcode scanners). Each of the devices comes with it's own version of SDK and most of them just have objective-c/swift SDKs but not javascript SDKs.
Would like to find out what is the best way to reduce the app bundle size at the same time supporting multiple devices ?
Based on my investigations,
iOS doesn't allow downloading objective-c/swift code dynamically during runtime, hence the option of downloading the SDKs after the user having installed the app is ruled out.
Would like to get a feedback on the feasibility of the below solution. Also let me know if there is a better solution.
iOS version 8+ support embedded frameworks - Have separate iOS driver
apps for each of the supported devices which just installs the device
SDK as a shared embedded framework so that the parent app can
dynamically link to the shared embedded framework if one that matches
the connected device is available, otherwise force the user to
download the respective driver app.
This question has gone unanswered for a little while, so you may have already figured this out, but no, you cannot make shared embedded frameworks on iOS. Only Apple can do that. All of the frameworks you use must be either provided by Apple or embedded inside your app.
Android provides "adb" as a mechanism for communicating between host and apps on a USB-connected device. This is useful for automation (e.g. execute some code on the device and collect the results). We need this capability for iOS. Does a similar mechanism exist for iOS?
Yes, there is a similar mechanism. The underlying technology/service is called usbmuxd. It is basically a multiplexing service that allows you to connect to your iOS device via USB using the TCP protocol. Apple uses this service for any communication between your iOS device and iTunes or Xcode, e.g., to install apps via iTunes.
If you want to leverage this mechanism, there is a library that provides a high level API for iOS. They have reverse engineered the whole protocol including things like remote debugging via lldb and app installation.
http://www.libimobiledevice.org
If you just want to sideload compiled binary bundles into your own app you might get away with using my library. It allows you transmit arbitrary data via USB to your app and supports both iOS and tvOS.
http://www.github.com/jensmeder/DarkLightning
My app has been rejected by Apple for the following reason "Our team is aware that iHasApp is using publicly available APIs, however this specific implementation abuses canOpenURL: to detect all apps on a given device".So I start to look for another way to list all the installed app in the user's phone.So my questions are:
1/Are they some web apps which can detect the installed apps?
2/is it possible to detect apps using their icones?
If you implement a workaround, the chances are that Apple will still reject your app anyway.
Obtaining a list of applications installed on the phone is evidently disallowed. Apple has rejected apps using lots of methods to detect this:
Your solution of "canOpenURL"
This solution using private apis List of all apps installed on iOS device and their position on the Home Screen (Springboard)
This (dated) answer using file path manipulation and private apis: get list of installed applications on iphone objective-c
We were exploring various test suites for mobile automated testing and ran into this company called Perfecto Mobile. One of the features that blew me away was they are able to (without jailbreaking) effectively perform a "Remote desktop" on a physical iPad.
So, the iPad's screen is mirrored within a web application, it can register touch / swipe events on the web app and perform them on the device. The only relevant technical detail I have is that all this is being performed using commands sent over the USB cable.
I'm really curious as to how this is implemented and details on relevant Private APIs if any.
Thanks,
Teja
I'm not familiar with PerfectoMobile, but I can give you a few pointers on how this can be accomplished:
For the mirroring, one way would be to look at using AirPlay, the APIs are pretty well documented, but not to do what we're talking about which would require some serious reverse engineering, but it's definitely possible, these guys have done it. A different approach would be to run a background app that would periodically take snapshots of the main screen, and send them over a socket connection to a client. You could do this as a VNC server, and to incorporate the remote view in a web app, you could use noVNC. As far using a USB connection, in the case of the background app talking to a client over TCP, you could to a port forward.
To actually perform on the device the touch events sent from your remote viewer, most people have been using the GSEvent group of functions from the GraphicsServices private framework without needing to jailbreak the device. Again, a background app would receive over a socket an instruction such as "Tap there", instantiate the GSEvent, and inject it so it gets processed in the run loop of the most front app.
These few possibilities, at least, have been implemented successfully in different iOS apps up to iOS 6.1 (iOS7 is a different animal). You won't find any such app in the App Store, since Apple clearly prohibits the use of private frameworks in 3rd party apps, instead people deploy them in-house using Enterprise and ad-hoc provisioning profile. On Android however, there's VMLite available in the Play Store.
If you looking to share screen from ios / android, check out skreen.me. They have sample apps you can try out, also they provide libs for mobile app integration.
I am trying to find whether the private APIs listed at: http://code.google.com/p/iphone-wireless/wiki/Apple80211Functions still work with iOS 4.0 and above. I am trying to turn the wifi ON, scan the networks available and latch on to one of the networks. I am not going to put the application in appStore and it is just an experiment. I found many applications pulled down from the appStore but they seem to have been developed on iOS versions less than 3.0. I would also like to get an example if possible.
Please Help.
I needed the same thing as you, and after some research I must say that starting from iOS 5 it is possible to scan the network list using private API on a jailbroken device only. This blog post states the following:
Last year Apple has blocked wifi scanners from App Store, however till iOS5 it was still available for private usage via WiFiManager bundle.
In iOS5, WifiManager bundle no more exists however 80211 functions are still available via IPConfiguration bundle.
The API you linked provides an open-source tool Stumbler which seems like something you were seeking. The tool is claimed to work under iOS 5.
Tried stumbler for iOS5 via linking to framework
/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration
I could link to Apple80211Open, Apple80211BindToInterface, Apple80211Scan. However, I only receive empty WiFi scan results on jailbroken iPhone4S / iOS 5.1.1
The folks from WifiFofum did a good job and have a app on cydia which runs on JB iOS 5.1.1 and does an excellent job for scanning WiFi networks (BSSID, link level, SSID, channels, ...).