Is the simulator a good judge for iOS compatability? - ios

This is a more general question. If I am developing an iOS app (or game) and it works fine on the devices I have (ex. iPod 3g, iPhone 4, and iPad 1 + 2), and it works fine on the simulator for devices I don't have (iPhone 3g, iPhone 5, iPad 3), can I trust that everything will work on the real devices exactly the same as the simulators? I've read all around and have experienced differences between the simulators and real devices. But since I get what I expect from the devices I do have and from the simulators that I don't, would it be reasonable to assume that my application would behave properly, if I am absolutely unable to get my hands on the real devices?

For many things, you are probably safe since you have tested on real devices. The iPhone 5 has the bigger screen but the iPhone 5 simulator should be good enough to test that your app works on the bigger display. The real iPhone 5 uses armv7s, not armv7. So it's possible some highly optimized code or timing code could be different. The iPad 3 has the retina screen but this can be tested in the retina iPad simulator. Very few devs have every device with every version of iOS they support. You've done a good job with what you have. I'd be comfortable with what you've done but it really depends on what your app does and how it pushes the OS and the device.
I'd be more concerned with testing your app across all versions of iOS that your app supports. iOS bugs get fixed, there are differences in behaviors from 4.3 to 6.0.

I will second that. We run a lot of apps on different devices, but for example, we don't test on the 4S, but we would test on iOS 4.3, 5.0, 5.0.1, 5.1, and 6.0, as some code is OS dependent. For devices, iPhone 3GS, 4, 5, iPad 1, 3. We leave out iPad 2, and the iPhone 4S. We don't test any iPod Touch at all.
As for your question, it all depends on what your app does, and whether there are any OS specific functions, or device specific features. If not, then you should be fine to rely on the simulator for those you don't have.

Related

iPod Touches and Development

I've begun developing the iOS version of my app. While I have a working android, I don't have a working iPhone and I will not spend the $1000 for the new one. I found some older posts, which said yes to this question, but I wanted to make sure it was still valid before I buy an iPod touch. I was wondering, that so long as my app doesn't use iPhone specific hardware (like GPS) if I can just use an iPod touch for development. And if it works on the iPod touch, does that imply it will work on iPhone (again, given the hardware constraints).
Thanks for the help.
An iPod touch is an iOS device. All iOS apps not specific to just iPads will run on any iOS device, including iPod touches. This is true as long as the app doesn't list a required device capability not found on the given device.
So yes, in general, using an iPod touch to test an iOS app is perfectly fine. Use it along with all of the different simulators to make sure your app works properly on all of the different screen sizes. But you should always test an app on a real iOS device since the simulator has limitations such as no camera, inability to send email, no ability to launch other 3rd party apps, a case-sensitive file system (normally the simulators are case-insensitive), etc.
Just be sure you get the latest iPod touch that supports iOS 11 (the 6th gen). Keep in mind that even the latest iPod touch may not be useful for more than a year, maybe two, with regard to being able to install the latest version of iOS.
You could also look into a refurbished iPhone 6s or even a new iPhone SE. Both are much cheaper than $1000. As I write this, you can get a refurbished iPhone 6s for $369 USD. Though a refurbished 6th gen iPod touch is $149 USD. But buy the newest device you can afford. A cheaper device that won't run iOS 12 or 13 isn't much of a bargain.
I find the https://en.wikipedia.org/wiki/List_of_iOS_devices page useful to know what devices run which versions of iOS.

What devices currently support Apple ARKit while its in preview mode?

I'm trying to play around with Apple's new ARKit and have downloaded their sample ARKitExample project into Xcode 9 (beta).
Since ARKit doesn't work in the Apple simulator, I'm trying to archive, export and install this ARKitExample app onto my iPhone 7+ so I can actually take ARKit for a test spin as an actual user.
However from that example project's own README:
"ARKit and this sample app require iOS 11 and a device with an A9 (or later) processor. (ARKit is not available in iOS Simulator.)"
Looking at the specs for iPhone 7+, it looks like I cannot upgrade my phone to iOS 11, which makes me think that I cannot deploy and run this ARKitExample app on my phone.
However I see lots of confusing articles about which devices currently support ARKit, like this one, which seems to indicate that my phone does support it.
So I ask: do I need to figure out how to upgrade my iPhone 7+ to iOS11, or will everything work fine as-is, or do I need to find some other device that does run iOS 11? If that last scenario is the case: what devices currently run iOS 11?! I don't think it's even been released yet as it still stands in preview mode...
List of iPhone and iPad Compatible with ARKit in iOS 11:
iPhone SE
iPhone 6s
iPhone 6s Plus
iPhone 7
iPhone 7 Plus
iPad Pro (All three variants and models)
New 9.7-inch iPad (2017)

How to skip the support for iPad , iPad 2, and iPad 3 when submitting iOS games and apps to Apple App store?

I am developing and testing my iOS game on my REAL device that is the iPad 4 (fourth generation), and it works well on the REAL iPad 4. However, I have not tested the game on the REAL older iPads such as iPad 1 and iPad 2 or even iPod. So, I would like to have 3 questions that are related to one another as follow:
(1) Xcode Simulator ?
The real iPad 1 only has 256 Mb of RAM, and the real iPad 2 only has 512 Mb of RAM. In addition, the processors of these 2 devices are certainly slower that those of the new iPads. (Unfortunately, I don't have the money to buy iPad 1 and iPad 2 for testing.)
So, if I use the Xcode simulator to test my game on these 2 devices, will the simulator accurately set up the test conditions that truly reflect the limitations of the RAM, processor speed and hardware performance of these 2 devices ? Please show me how to do that if there is a way to do that ?
(Honestly, I think that the XCODE simulator is just that: it is a simulator and NOT an emulator. Therefore, I doubt that the XCODE simulator can accurately simulate the testing conditions on the real iPad 1 and iPad 2 devices, and hence, I am afraid that my test on XCODE simulators won't be accurate. For example, the simulator may show that the game works fine, but in reality, when users install that game on the real iPad 1 and 2, it may have some lagging issue with the animation to say the least...)
(2) Skipping the iPad 1, iPad 2, iPad3, and iPod ?
Is there a way for me to tell Apple that I only want to release my game to iPad 4 (fourth generation) and newer generations of iPad, and I don't want to release my game for the iPad 1 and iPad 2 ?
(3) Apple Regulation ?
Or does Apple enforce the rule that says that all iPad games must work for all generations of iPad (including iPad 1 and iPad 2) before developers can release the games for sale on the App store ?
There are no such rules. There are two things which decide what devices should be supported.
1) Deployment target
So if your deployment target (Oldest iOS version supported) is iOS8 or iOS9 it means you need to support iPad 2 but not iPad 1 as iPad 1 cant run on iOS 8 or 9. You can wait for Xcode 8 public version and you can set minimum iOS to iOS10 , that will eliminate iPad 2.
If you want to skip both iPad 1 and iPad2 I would not run on that.
2) Valid Architecture
You can only support 64 bit processor (arm64) in build settings that will discontinue app for those devices which are not running on 64 bit processor. By doing this your app will only run on devices with Apple A7 and more Processors (You can figure out the devices)
Based on these two settings you can decide which devices you should be supporting
You can make an app iPad only. That removes the iPod from the equation.
Apple doesn't let you arbitrarily block certain versions of a device, but You can restrict your app based on OS version. The iPad 1 is old and only works up to iOS 7, if memory serves. You are likely using APIs that won't run on the iPad 1 already.
There are certain hardware-based APIs that are only available on some devices, and if your app requires one of those then it will exclude some devices.
Older devices are both slower and have less RAM. You should really test on the lowest spec device you support. (The sim is no good for performance or low memory testing.) eBay is a good source of cheap older devices.
In the requirements you can state a specific version of iOS or higher. I don't know accurately which versions of iOS that iPad 2 can support up to (for sure that iPad 1 will support up to a lower version than that one supported by iPad 2). Stating this so you excluded iPad 1 and 2. Moreover, you can state that this app is for iPad only, so you also excluded iPod and iPhone as well.

App on appstore has iPad support when iPhone family set?

I have an app on the App Store and I've made sure several times that iPhone is selected in: App > Target > General > Deployment Info > Devices > iPhone
..rather than Universal or iPad.
It appears every time the app is approved it still says iPad supported, how can I disable iPad support completely since the above "solution" doesn't work?
That is normal, iPhone applications can also run on iPad in a iPhone simulator mode.
This is the description of one application of mine only available for iPhone.
Compatibility: Requires iOS 7.0 or later. Compatible with iPhone,
iPad, and iPod touch. This app is optimized for iPhone 5.
This one just for iPad:
Compatibility: Requires iOS 7.0 or later. Compatible with iPad.
and this Universal (both iphone and ipad, no simulator)
Compatibility: Requires iOS 7.0 or later. Compatible with iPhone,
iPad, and iPod touch. This app is optimized for iPhone 5.
It seems the same, but in the reality there is also a + sign with written:
This app is designed for both iPhone and iPad
Making them "Just for iPhone" doesn't let iPads not use them. Imagine this bit of a crisis: on the first iPad's release, how did apps get on the store, since they were designed for iPhone? Developers had some options:
Make an "HD" or "iPad" version. This involved redoing the entire UI so it would fit on the bigger screen.
Do nothing. The iPad's would get the iPhone version of the app, but they would just be, as you can guess, oversized iPhone apps.
After a couple years, there was another option:
Make a "universal" app. This allowed both UI's, both big and small, retina and 1x scale devices, to be "bundled" together in the same Bundle. (heh, bundle pun.) Puns aside, this allowed for apps like "Facebook" to run on iPad, iPhone 3GS, iPhone 4, iPhone 5, iPhone 6, the future iPhone cheeseburger double-decker 7+, and everything else, without having to remake the entire app.
On the iPad, as mentioned by Andrea, it runs in an "iPhone Simulator" mode. This makes the tiny screen be rendered in the tiny screen scale, and, since iPad is over twice the size of the iPhone, it gave the iPad a "2x" button to zoom it in and make the UI bigger.
It's like an app designed for iPhone 4 running on an iPhone 6 Plus.
The iPhone 4 renders stuff at 960x720 landscape or 720x960 portrait, and iPhone 6 Plus's display is much bigger. To accommodate, it letterboxes the content and scales it up automatically.

Dropping iPhone 4S Support

The iPhone 4S is the oldest iPhone still to be supported by Apple, which as such runs iOS 8, a requirement of my own app.
However, as hard as I am trying, my app experience is being worsened due to the fact I keep having to adapt to the tiny (y comparison) screen size of the iPhone 4S.
Is it possible in any way to drop support for a device? Or as it runs iOS 8, do I have no way of doing so? Is it a case of, if I release it on iOS 8 for iPhone, it WILL be available for iPhone 4S owners?
You can't drop support for iPhone 4S just yet, however you can disable some features when your app runs on certain undesired devices. Just make sure you state that in your app's description.
This follows the lead of GarageBand for iOS version 2.1 in which some features are only available for newer devices.
PS: remember to also quote this fact in the reviewer's notes section.

Resources