On which iOS devices exactly is region monitoring supported? - ios

From what I can interpret from the runtime requirements of sample region monitoring code of Apple, region monitoring is available on iPhone 4, iPad 2 Wifi + 3G or later. So I'm assuming that it's not available on iPad1 with 3G, or iPhone 3G/3GS.
Is this a correct interpretation? I cannot test this since I don't have all those devices and I couldn't find an official documentation about this.
PS: I know that I can check for it in the code by calling regionMonitoringAvailable method but I need this information to decide for the architecture of my app, so I need to know this upfront.

From what I have learned from working on region monitoring enabled devices is that you are correct.
Currently, region monitoring is only supported on the following devices (running iOS 5.x).
iPhone 4
iPhone 4S
iPhone 5
iPad 2, 3, and 4 (new iPad) 3G/4G
iPad 3 and 4 (new iPad) Wifi
(would love some feedback for region monitoring on iPod Touch models)
I was told at WWDC that with the advent of the location tiles in iOS 6, that region monitoring would be coming to ALL iOS 6 devices. However, my testing so far has only garnered me the Wifi enabled iPad 3. I haven't been able to test on the iPhone 3GS yet, but I'm not holding my breath. It may be possible that they will enable this in a later beta or at launch, but I'm not optimistic.
Hope this information helps.

Related

iOS CLLocation difference between device models

I'm using the Google Maps API for iOS to essentially highlight a width of coverage using the GMSPolygon.
Running the iOS simulator I get an odd behavior. Using both a iOS 9.3 build for all the testing, the map properly highlights coverage using the location simulated by the simulator on an iPhone 5S, 6, and newer.
You can see this in this screen capture that I did: 5S Highlighting
Now when using the iPhone 4S and 5 it does not draw the GMSPolygons! iPhone 5 Not Highlighting
A few things to note, I made sure that location permission were authorized on all testing and the same "city Run" simulation was used on all the testing. Again the highlighting works fine on 5S and newer devices running 9.3, but not on 4S & 5 using 9.3. Is there a fundamental API change in the CLLocationManager between the builds for these devices?
As discussed in Simulator User Guide, there are some hardware and API differences in Simulator which may affect your app when testing in Simulator.
In addition to that, please note of these hardware features that are not simulated as of iOS 8.2:
Motion support (accelerometer and gyroscope) are unsupported.
Audio and video input (camera and microphone) are unsupported.
Proximity sensor
Barometer
Ambient light sensor
Aside from those, there are also API differences wherein Simulator APIs don’t have all the features that are available on a device such as these:
Receiving and sending Apple push notifications
Privacy alerts for access to Photos, Contacts, Calendar, and Reminders
The UIBackgroundModes key
Handoff support
Please try going through the Simulator User Guide for more information.

iOS app for specific devices

We are working on a kids app similar to Talking Ben app. It has lots of JPEG image sequences in it for interactive animations.
The thing is the animations are playing fine on iPad Air but they are playing slow or lagging on iPad 2. This is obviously due to the 512 MB RAM in iPad 2.
My question is can we mention in the app description something like - "Recommended devices iPad 3 or later" so that users dont download it on iPad 2 ?
Or can we straight away submit app for only iPad 3 or later devices ?
Whats the legal method for this ?
In short, I want to restrict my app to be downloaded in iPad 2.
Please help guys.
Thanks
Not too familiar with specifically what architecture is used on the iPad 2, but this post may help you with regards to making sure the app is only compatible with certain architectures: Restricting app installations from AppStore only to users with iPhone 5/5s/5c
You should set bluetooth-le as a requirement in your app Required device capabilities in your info.plist.
This should prohibit your app from being installed on iPad 2 as Bluetooth-LE (bluetooth 4.0) is available only since iPad 3rd generation (see here).

Multi bluetooth device Connection using EAAccessory framework

This question might seem silly but since im new to IOS Developement i ask it again.
Can we connect to multiple devices at a time in IOS using the EAAccessory framework?
What is the maximum data rate for an Iphone, Ipad mini, Ipad, Ipod using bluetooth connection?
Will the data rate change according to the framework used in the application? If so, then what is the maximum data rate for the Iphone, Ipad mini, Ipad, Ipod?
Thanks in Advance
Ramnathpraveen G
I only have an answer to your first question.
Yes it is possible. I just did a small test with a iPhone 5c and 2 accessories connected via Bluetooth. I can see that these accessories can connect at the same time.
I recommend that you give the EADemo a try to test more scenario's.
I do not have information regarding your your other 2 questions.

Do I need to separately test on iPod touch, iPad and iPhone?

I would like to start developing for iOS. Coming from an Android developing background, I know that the more types of devices you can get your hands on, the better testing will be, as all devices have wildly different specs, and what may work perfectly in your test device may not even run in another one, let alone look good.
I know that testing on the actual device is very important, as there are many limitations on what you can test on an emulator, so I've decided to get an actual device.
However, there are also tons of devices available in the iOS world! There's the iPod touch, the iPad and the iPhone, each in several different generations and configurations (8GB version vs 16GB version, WiFi version, 3G version, etc.). Not also the screen sizes, but also the aspect ratio is very different across devices, and also the included sensors.
I think that getting an application to run in varied devices should not be difficult, but is it necessary to actually test on all the device types you plan to support? Apple is not renown for its low price, and I would like to keep the starting costs as low as possible.
So, to conclude: Is it necessary/recommended to test on as many device types as you can in the iOS development world?
A small clarification: I'm specially asking if it is possible for there to be compatibility issues related to a specific device/family-of-devices that I would not be able to catch either by testing on the emulator nor a totally different device.
Generally speaking, the major differences in capabilities between testing on the simulator and testing on a device are:
The simulator does not use exactly the same sandboxing as the device. So, for instance, if your provisioning profile is missing your Passbook credentials, this problem will show up on a physical device but not on the simulator.
The simulator doesn't generally support GPS, multitouch, push notifications, Bluetooth, and some other specific features.
On a non-retina display, the simulator view for an iPhone 5+ or (especially!) a retina iPad will be nigh unusable at 100% because its size will exceed the size of your screen.
There are a few, very rare, crashes that occur only on the simulator and a few that occur only on the device.
The simulator does not always support the earliest iOS versions your app supports. For instance, the current version of Xcode (which you must use if you want to build for the latest iOS version) only has simulators from 5.0+ available.
Certain profiling with Instruments is, as far as I can tell, only available in the Simulator.
Now, in my specific case, I try to test on one of each screen resolution I support and one of each major OS version I support.
This boils down to the following array of test devices:
(480x320) iPhone 3GS running 4.3.3
(1136x640) iPod 5gen running the latest 6.x
(960x640) iPhone 4S running 6.0
(1024x768) iPad 1st gen running 5.0
(2048x1536) iPad 4th gen running the latest 6.x
Note that the iPad mini is the same resolution as the iPad 1st gen.
(My choices are skewed towards later iOS versions since I like to implement integration with all of Apple's snazzy optional features as they roll them out. It would probably be a more balanced assortment if one of the 6.x devices were running 5.1 instead.)
If you don't need to support 4.x, I would personally advise against it, since iTunes Connect no longer collects crash reports for it and the simulator no longer offers it. Of course, only you can decide whether you really need to or not, and if you do, focus a lot of your testing there as Xcode does not warn you if you are using APIs that were only introduced in 5.0, which will crash any device running 4.x.
Please note that there are ways to (with significant preparation) downgrade the version of iOS on a device, so if you really want to test more versions than you have devices for, you can (with a lot of effort). But you're probably better off cultivating a strong pool of beta testers for this, anyway.
Whilst it's obviously great to test on all possible devices, the iOS ecosystem is much tighter than Android, so you can narrow down the field somewhat.
You can start by limiting your target iOS versions. That will anyway cut out a number of older devices. iOS6 share of all iOS devices is now probably around 75% 4 months after release; iOS5+iOS6 upwards of 90%. If you are just now starting to develop for iOS, you could probably just target iOS6.
That means your minimum hardware platform is iPad2 / iphone3GS / ipodTouch4
Total list of devices
iPad: 2 3 4 mini
iPhone: 3GS 4 4S 5
iPod: 4 5
Ten devices.
But you won't need to test them all. You could sensibly narrow it to...
iPad: mini + one of the retina models
iPhone: 3GS + 5
for everyday testing.
Obviously if you do want to be more back-compatible, just replace the lower-end testing model for a lower-spec device (iphone 3, iPad 1).
The difference in storage capacity (8GB vs 16GB for example) will be mostly immaterial.
There are some hardware features you will have to pay special attention to, depending on your project. The obvious one is retina vs non-retina displays. Hardware features for location services is particularly nuanced between models.
Lowendmac have a pretty thorough iphone comparison chart...
I think that getting an application to run in varied devices should
not be difficult, but is it necessary to actually test on all the
device types you plan to support?
That depends a lot of what kind of apps you intend to build. For example, universal apps run on both small- and large-screen devices but may present themselves differently on each, so you'd want to be able to try both. Many apps target iPad specifically, so obviously testing on small devices isn't necessary. iPod Touch and iPhone are very similar, so testing on one or the other is often sufficient.
In short, you don't have to own every version of every device, and you don't probably don't have to test on every single version of iOS that's ever been released. But you do want to get your product tested on as many different devices and operating system versions as you can. So, cultivate a group of beta testers who will help you out by trying your app on their devices. The iOS developer program lets you add up to 100 test devices to your account precisely so that you can get your app tested in lots of different circumstances.
Testing on the iPod touch is generally not worth it.
In the iOS world, there is generally the iPhone/iPod, the iPhone 5/iPod 5th generation, and the iPad.
So, that is a total of 3 screen sizes.
If you plan on targeting more than the latest OS (iOS 6), that is where the complexity of testing comes in. Simply targeting iOS 5, and iOS 6 nearly doubles the amount of targets you need to test for.
I try and keep it simple. I test on my iPhone 5, and my iPad. Both of those run iOS 6. For iOS 5 and the small iPhone, I rely on the simulator.
I develop for both Android and iOS, so I get where this question is coming from. I have the luxury of being able to develop on most of the different iOS devices and I would say that in most cases I would feel comfortable testing on the least advanced device my user will be using. If it runs smooth on a iPOd 3rd gen then it is going to run very smooth on an iPhone 4S, 5, etc. For the different screen height for the iPhone 5, the simulator works very good with laying it out.
Things you will need to consider is if your apps have the option to use certain feature only a phone would have, like making calls. Also if you want to make a iPad or universal app, it would be very handy to have an actual iPad, but the simulator does work very good.

For preliminary learning and testing iPhone apps which device to pick if you have to choose from iPhone or ipad iPad2, Is it ok to test it on iPad2?

I am new to iOS world.
What it seems to me if i buy new iPad2 i can test both iPhone and iPad apps
According to me there is only major difference in terms of Screen space.
So for preliminary learning and testing is it ok to test it on ipad2.I am looking forward to buy only one iOS 5 device.Is there any better option for me.
Either device will be ok for learning. You can even start learning without investing in a device because you can ran the applications you develop on the iOS Simulator which comes with Xcode.
Testing on device is important only if you are developing an actual application, and in this case, you need to test the app on all the devices it will run on: iPhone, iPad or both. So if you have an idea for an app that will target only iPhone or iPad, buy that device now or later.
iPhone 3GS will be better option to keep your investment low initially.
From coding point of view first start with iPhone and then once you master it switching to iPad development would be much easier.
For real application it has to be tested on each device on which you are targeted it for.
You can also use an iPod touch. There are missing some of the hardware that an iPhone has, but for basic testing they work well. And you can get a previous gen version from eBay for only about $100.

Resources