Getting an iPhone off wifi - ios

I'm in the process of testing routerequipment, and in that test i'd like to control wireless devices, so that they simulate leaving the area.
On android I have created a small app that receives commands (e.g. watch this on netflix, turn wifi off, browse to this page), to simulate user activity. Though this is great, it's not possible (maybe it is, but I have no iOS development skills, and my research tells me that it's almost impossible to automate, espeacially things as wifi, on iOS, unless you jailbreak it, and use private SDK's).
So my question here is more of a way to get ideas. Does anybody have any idea how to automaticly turn wifi off an iphone to simulate it leaving the wifi coverage area?
Bear in mind that this needs to be automated somehow. The best thing I can think of now is simply cutting the power to the iphone, and turning it back on and let the iPhone boot. Another solution, rather wicked, would be a small model-train leaving the wifi-coverage with the iPhone - haha, how awesome would that be!
Another thing I've tried is jamming by sending deauth-signals to the iPhone. While that works, it does not automaticly log back on the wifi, unless you manually lock and unlock the iphone. It would have been a great and simple solution, but it doesn't work.
I really hope somebody here has a great idea :)
have a great day! :)
/Benjamin

Related

Is there a way to prompt a user to turn on/off WiFi in iOS from an Alert?

I have this problem where when I go out my iPhone 6s on iOS 9.3.4 tries to connect to every hotspot I pass. Then when it is trying to connect I can't get emails/texts/alerts etc. My solution has been to turn off WiFi. But then I get home again and forget to turn it back on and I wonder why my internet is so slow until I remember to turn WiFi back on. I got the idea for an app to build a geofence around my house and turn off WiFi when I leave that area. I know I can't do this automatically because of the iOS sandboxing restriction, but can I pop an alert when I cross the geofence boarder that asks if I want to turn WiFi on/off?
I haven't found anything current that allows me to do this. I have searched extensively and only found "Stumbler" but it appears to be from 2007. I only know C# and do all my app development in Xamarin so C# code would be best or if you know of any libraries/components/plugins.
Also, I just want this app for myself so no need to submit to app store.
Thanks,

Is necessary purchase some physical devices (smartphone/tablets) for develop/test a mobile website?

I'm currently developing a mobile website with jquery mobile, not exactly responsive web design. I know I can develop the project in the browser on my desktop PC with some plugins or use some online services or simulators available. But I'm not sure if I missing something really important for test.
Example:
touch/swype events or viewport rotation.
Is necessary purchase some physical devices (smartphone/tablets) to develop/test the project? Why?
Intro
First don't let anyone tell you it is not necessary to purchase a real devices for a test purpose. I will tell you why from an Android perspective, same thing, just in a much smaller manner also goes for iOS development.
Good sides of an emulator testing
It is free, you only need a computer which will run your emulator.
You can test your applications in different cases (different screen resolutions, different OS versions)
Faster I/O and network operations but this is not so much a good point if you calculate how much everything else is slow.
Bad sides
It is slooooooooow, if you never tried to use it you can comprehend how slow it is (iOS emulator is fast like hell in a comparison). It doesn't matter if you have a top of a line hardware PC or Mac it is just that slow.
Emulator is simply to darn buggy, there will be a lot of times when application will work just fine on a read device and it will brake on an emulator.
This also goes other way around, sometimes application will work just fine on an emulator but will brake on a real device, in some case it will not work at all or it will not work on some devices. This is usually a case when working with hybrid applications. for some reason Android web view acts differently on real devices and on an emulator.
Emulator simply don't have some functionalities to interact with a hardware nor it can successfully emulate it. Hardware connection it can emulate even don't work correctly sometimes.
I have talked about how slow it is (because of a converting ARM bytecodes to x86 ones on the fly) but from a graphics standpoint it tends to be even slower so don't expect to do any game development on it.
Real devices comes with much more preinstalled software which may slower your application or in some ways enhance its functionalities.
Real world GPS testing is out of a question
Final notes
If you are intending to work with iOS only emulator can be used to do much of a development. Sheer lack of different screens sizes and hardware diversity makes it a perfect platform for a test purposes. Android on the other hand is completely different story, its emulator is simply useless for test purposes. I have several real Android devices, ranging from Android 2.1 + , different screen sizes and finally hardware architecture. You don't need to believe me but everything I mentioned play a significant role while testing Android applications.
If your main concern is testing your jQuery Mobile application I would still advise you a use of a real device in case of Android while in case of iOS you can successfully use emulator. Android is problematic because transition effects are to darn slow and that includes everything else that requires animations. Swipe will not be a problem and I can vouch it works just fine. Second real problem is a device rotation. jQuery Mobile sometimes can have a problem with it, mostly when used with non responsive 3rd party jQuery plugins (carousels, sliders ....). Third problem is mentioned in my list of bad sides, basically web view used in a emulator acts different then one in a real phone so sometimes you will see one thing in your real device and one thing in your emulator.
It is not necessary to purchase such a device.
For Android there is an emulator provided by the Android Development Kit (ADK). You can use it to configure multiple emulated devices with defferent screen sizes, etc. to test for multiple resolutions and Android (browser) versions.
[edit] Though to really test it for iphones you would need that emulator too I suppose, to make sure the website is correctly displayed in the provided browser.
[edit 2] To test "real" smartphone apps (not webapps), it is better to have a real device at hand.
This very much depends to which level you want to test it before you are happy to hand it over for the usage. After you do that and someone reports a defect, will you be able to see where is the problem (if it works on your PC)?
The development itself can be done in your browser, you can even simluate swipe events by dragging mouse. You don't even need any simulators, you can just make chrome window smaller (most of the devices are using some version of webkit, same as chrome).
However, once it comes to testing, I wouldn't feel great if I didn't know how it looks on the device itself. So I think having at least one device (ideally two with different OS and resolution) is always beneficial.
I would also be unsatisfied if I was working on something of which I could not see the result :)

Can an app keep running while the screen is locked, on a jailbroken iphone?

I have an idea for an app that I'd like to develop, but before I invest a lot of time learning objective C and the iOS APIs, I'd like to make sure that what I want to do is feasible.
The app I want to make is a purely auditory (sound-only) version of Google Glass. I'm visually impaired, so spending a lot of money on something visual, even though it can read content to you, would not be worth it. But if I could use an iPhone to give many of the same options as Google Glass, that would be great.
Many times, I've wanted a piece of information while walking down the street, where I couldn't easily get to my iPhone, because I have my cane in one hand, and something else in the other. In such cases, it'd be awesome if I could say a command, and get a voice response.
I'd use the microphone built into the Apple earphones for audio input, but I'm not sure if it's possible to listen for audio input while the screen is locked. I'm certain it's not possible with a non-jailbroken iPhone.
Can anyone can tell me if this is possible?
Yes, you can do this.
In order to keep your app running all the time, even when the iPhone is locked, you could build a Launch Daemon. A launch daemon can start when the phone does, and is not subject to the restrictions that iOS puts on sandboxed apps, installed to /var/mobile/Applications/.
You do need to have a jailbroken device to take advantage of Launch Daemons. Here is a good tutorial on building one.
Launch Daemons are also a normal part of OS X, so if you need more information, you might try consulting the OS X docs online. Most aspects of Launch Daemons work the same way on a jailbroken iPhone.
You'll also want to be able to detect certain events, to activate your app. You certainly don't want to be processing an audio stream at all times (maybe you only activate the app when you start walking with your cane). To detect events, like a home button press (or however you want to activate your code), I would take a look at RPetrich's libactivator library.

How can I programmatically interact between iOS and OS X apps?

This may sound a little strange, so I have to tell you why I am making this app. I just got a very old iMac that has very low processing power. I am attempting to make an application for my iPod Touch that can make it act as an external processor for OS X Panther. I have almost everything worked out, but I need the iPhone to be able to interact directly with the OS X app I am making, like iTunes does.
To be clear, I only want the iPod to work as an external processor by moving data from my OS X app to the iPod app, complete the code blocks, and send it back (thats the easy part). It does not have to work with any other OS X app. What I need to know is how I can send data through the cable to my iOS app directly. If this cannot be done, I have a backup data transmitting solution, but the cable would be much faster. Any ideas?
Good idea, don't post good idea's online ;-)
I'm going to tell you up front; unless you are lucky I don't think you will be able to get this to work.
I know that someone once found out that iTunes uses some kind of daemon program to communicate with your iDevices. I'm not sure if this is still true, but that daemon is undocumented but 'available'. I have no more clues than this, maybe you get lucky and find something on Google.
I'd go with wireless communication, I don't think speed is such an issue if we're talking about small instruction sets.
Also there's this, but I'm not sure if that will be of any help to you.
UPDATE:
found this post: Where is the mount point for the iPod/iPhone in Mac?
Which should help you write to the iDevice disk. You should be able to continuously look for filesystem updates on your device to process the data, and vice versa, to establish some kind of transfer system.

iOS WiFi network switching

My company is developing an iPhone accessory that requires a relatively high connectivity rate to the phone. Due to MFi limitations (USB 2 communications in HOST mode fair only around 100KBps), we're looking at hosting a WiFi ad-hoc network on our accessory, and connecting to that network with the iPhone's WiFi.
This could really work out great in many regards, except we can't seem to find an (Apple-approved) way to programmatically switch the iPhone's WiFi connectivity. Ideally the app would automatically connect to the accessory's network when visible, and then re-connect to the user's preferred network when not visible/needed.
We are aware of the MobileWiFi framework, which fits the technical bill, but won't pass Apple's approval process.
Can anybody suggest a way to achieve our goal? Perhaps there is a system model view that can be called up to allow the user to switch WiFi networks without directly using private APIs?
Creative solutions welcome!
Hate to say it, there's really no way to do it. I can think of two easy workarounds.
1. Make it available on Cydia for jailbroken devices. AirServer just did this.
2. Less elegant, have UIAlertView with a switch over to the wifi pane of the Settings app that is shown when the peripheral is connected and disconnected. A lot like the location settings prompt.
3. Make an Android app!
Apple, you're a pain in the ass.
Sorry to be the bearer of bad news, but the definite answer is no. The main problem with your approach wouldn't even be Apple's approval process, but the inability to access the Internet while connected to your device. iPhone doesn't even try using cellular data when connected to wifi, being that wifi connected to the Internet or not.
You could file a bug report requesting these features and pray Apple hears you which will probably never happen in this case.
I would suggest going bluetooth, but if usb is not fast enough for you, guess that's not an option either.
That pretty much puts you back to square one and going usb. Or distributing your app via Cydia.

Resources