Xcode 4.5 with iOs 6 issue in iOs 4.3 - iphone

I was developing iPhone/iPad apps using XCode 4.2. With the recent update, I upgraded my XCode to 4.5 with iOs6. And I developed an iPhone app with this. But the issue when I run the app in iPhone 3GS with iOs 4.3, it crashes some times. I couldn't find any specific or common reason for this crashes. It happens randomly, not when doing a specific action. But it happens very rarely in iPhone with iOs 5 and iOs 6. I tried to track the issue using Instruments, but still I couldn't find any reason. Some memory leaks are there, but it wasn't the issue.
So, I have some guesses, may be it is happening due to the device is 3GS? Or because, some codes that come with iOs 6 not supporting in iPhone 3GS or iOs 4.3. In the Xcode it is not showing any warning.
So, I am not sure, is there any possibilities for my guess??
Also, I would like to know, now we have iOs 6, so when we develop new app, should we still support iOs < 5? Or can we specify it needs iOs 5 or above as requirement?
Please give me some suggestions.

Regarding your first question - "App crashing randomly". You have mentioned that your app crashes on all the iOS versions - rarely on 5 & 6 but frequently on 4.3. If this is the case, then as per my experience, this issue is mainly related to "Low Memory". To verify this, debug your app on device and check your Debugger giving you "Low Memory Warning". This is the way you will find your issue.
Now regarding your second question - "which iOS to support". Answer to this would be iOS 5.0 and above - YES. Not all the iPhone/ iPad users have updated their devices to iOS 6. Also some of the users can't because of device issues. So you must provide support for iOS 5.0 at least. As per the latest stats iOS device users are hardly using iOS 4.x but iOS 5.x users are plenty enough. A lot of apps in App Store don't provide support for below iOS 5.0. So go for iOS 5.0 and above. Rest it depends on your requirements like if the app is pretty simple enough then providing support for below iOS 5.0 is not a headache.

Related

Is there any way to develop iPhone app under iOS6 that targets iOS 3.1.2?

I have a very frustrating experience with recent iOS development. The situation is:
I have developed an iPhone app which targeting iOS 3.1.2, and I am about to submit to AppStore.
What I received from Apple after submission is:
I have to support iPhone 5 tall screen.
The reject message is:
iPhone 5 Optimization Requirement
To support iPhone 5, I need to update the UI and include a launch image: Default-568h#2x.png
After having the Default-568h#2x.png included, Apple rejected my submission again with reason:
Invalid Launch Image - Your app contains a launch image with a size
modifier that is only supported for apps built with the iOS 6.0 SDK or
later.
OK, I am kind of stuck, Apple force me to support iPhone 5 screen, yet, it doesn't allow me to upload app under iOS 6 with iPhone 5 tall screen support.
So I try to compile the code with iOS 6 SDK, then what I find is in order to support iOS 6 I need to have XOS 10.7. Mine is 10.6.8.
To support 10.7 I need to upgrade my Mac to have 2GB memory and i3 duo core CPU and brah brah brah brah...which I don't have at the moment.
So, my question is:
I have XCode 3.2.2, XOS10.6.8, I want to develop iPhone app for iOS 3.1.2 and able to publish in AppStore, how can I do it?
Thank you.
Regards,
Apple will not accept an app targeting an iOS version that old. I don't think they will accept anything less than 5.0 anymore (might be 4.3 but I doubt it).
Sorry, but Xcode 3.2 is years old at this point. Apple simply doesn't support this. iOS 3.1.2 has such a negligible install base that there is almost no reason to target it any more. To support the latest features of iOS (e.g. iPhone 5 support) you need to be building apps with the latest SDK, and you will need to upgrade your development machines and Xcode. You have no choice.

Can I still submit iOS 5.1 apps to the app store (Oct 2012 )?

I started building an iOS app with xCode 4.3.2 , using armv6 and armv7 instruction sets. My deployment target is iOS5.1 . Now that iPhone 5 is released, and xCode 4.5 drops support for armv6, and replaces it with armv7s , what is the correct approach to submitting apps to the app store?
I'm afraid that if I submit the app incorrectly, the app store review team would try to launch the app on iPhone 5, running armv7s , and the app would not run.
Should I update to xCode 4.5, and build my apps against iOS6 now, even though I do not have an iPhone 5 to test it on?
Thank you for any clarifications.
Should I update to xCode 4.5, and build my apps against iOS6 now, even though I do not have an iPhone 5 to test it on?
You can submit an app that does not exploit the iPhone specific features (namely, the taller screen). If your app works on iPhone 4, then it will work on iPhone 5, although in a special mode where the visual content of your app is centered on screen, with black bands both above and below it.
On the other hand, you can use the Xcode 4.5 simulator to ensure that your app works on iPhone 5, if you are worried about it. Then you could change your code base to make it run on iPhone 5 and still provide an official build for the App Store made with Xcode 4.3. This is good for all except performance tuning and fixing memory management issues; but you can work on those points on your current iPhone/iPad, whatever.
With Xcode 4.5, Apple decided to make a move towards discontinuing support for older devices: the original iPhone, iPhone 3G, and the first two versions of iPod Touch. So, if you want to support iPhone 5, you will be forced to discontinue support for those devices. I don't think it is a big issue, although I myself have got an old iPod Touch 2nd Gen and I cannot foresee a bright future for it.
If in doubts about supporting iOS5 vs. iOS6, you could also have a look at this other post.
Hope this helps.

Xcode 4.4 , IOS 5.1 simulator. Twitter framework issue

Just upgraded to Xcode 4.4 in Mountain Lion and faced with an issue. Built-in Twitter framework doesn't work on IOS Simulator now. Looks like many developers who is upgraded to Xcode 4.4 have the same problem :
https://dev.twitter.com/discussions/4850
So the questions:
Is it an issue of a simulator? Would that twitter-code work in real device?
It's known that from IOS 6 it will be another built-in framework to connect with social media. Can the app with IOS 5 twitter-code be rejected from appstore now?
Is it an issue of a simulator? Would that twitter-code work in real device?
According to the thread you linked to it's a simulator-only problem. But you should always test your code on an actual iOS device before distributing to the store.
It's known that from IOS 6 it will be another built-in framework to connect with social media. Can the app with IOS 5 twitter-code be rejected from appstore now?
Actually the Twitter framework was available as a built-in framework from iOS 5 onwards. So your iOS 5 compatible implementation isn't going to be rejected in iOS 6 (all things being equal). In fact, if you have a custom, non-'Twitter framework' integration this will still be acceptable - Apple aren't forcing you to use the supplied Twitter framework exclusively.

iOS 4 for iPhone 4S

I am building an iOS application for public release, and I would like to develop it against iOS 4, as I see from the instapaper stats from November that iOS 5 has a 48% market share, which is good, but my app will probably not be used by these early adopters, and it's probably not going to be enough to force them to upgrade.
The issue is that I only have an iPhone 4S, which shipped with iOS 5. I have been unable to find an iOS build for my 4S, which upon reflection makes sense. Nontheless, I'd like to know if there is some sort of unofficial build for the 4S or some way to make the iPhone 4 version work on the 4S.
I'm pretty sure that the answer is going to end up being "Buy a 3GS/iPod touch for development". Would that necessarily be worth it or should I just tough it out? I'm pretty sure that most iOS 4 users will upgrade eventually. Does anyone have any stats on how long it took iOS 3 users to move on?
I would still suggest getting a used iPhone 3GS. Even if you are able to install iOS 4 on the 4S you still wouldn't be able to do any performance testing, but it's highly likely that someone who still uses iOS 4 has a 3GS.
For your first cut testing, you can use the simulator which, will allow you to test for iOS 4.3
Ideally you need to get hold of the appropriate devices to test your app. You say you're supporting iOS 4, but do you mean 4.2 or 4.3? If 4.2 then you'll be supporting iPhone 3G, if 4.3 then 3GS upwards.
There are testing services out there, just search "iPhone testing services". I've never used them myself, so can't vouch for any of them, but the cost may be less than investing in actual devices.
I kept a 3G and 3GS for testing, but to be honest, even though my main app supports 4.2, I rarely do any testing for older OS versions outside the simulator. I gave the 3GS to my father on condition he tested for me when asked… but of course I had to upgrade it to iOS 5 for him, so it's of little practical value, apart from testing at different screen res.
I would suggest you develop your app with minimum version 4.0 (or other) set. Then you test that on your iOS 5 iphone. I did it with my apps and it works great.
You can test on the lower version simulator or for final testing you could borrow a friend's device or similar.
As I understand (and believe), the compiler would stop you if you included features that are not 4.0 (or the set version) compatible.
Buying lower iOS is not worth it. If you can you should borrow it. In the simulator you can also make the iOS version to lower version to test. Also you can try ad hoc distribution to check how your app performs on other ios before releasing on appstore

Xcode deployment target

If my deployment target is set to iOS 4.1 and submitted to apple, and they test the app on iOS 4.3, would that cause the app to malfunction? My app was rejected for a bug that I am unable to recreate on my iPhone 4. The exact same device model they tested the app on. I simply cannot find the bug or error in my code. Any advice would be greatly appreciated.
If you build your app to target iOS 4.1 it should run on iOS 4.3. It's possible that your app does something that works on 4.1 but causes a problem on 4.3; I had that myself with an app already in the store, and had to post an update so it worked correctly under a newer iOS release.
Note that you can tell the iOS Simulator what version iOS to simulate: on the Hardware menu, select Version, and subsequent runs will be tested against that version of the system libraries.
The simulator is not a perfect reproduction of a real device, but hopefully you can do this to reproduce the behavior that Apple has seen on their devices.
Did you test it on your iPhone 4 with iOS 4.3? There's two parts to the puzzle. If they rejected it for crashing under iPhone 4, you have to check all the different iOS versions you claim to support. The target iOS 4.1 should still make it work on 4.3, you just might have a crash (which apparently you do). Through testing with that actual software version on your iPhone, you'll find the bug and hopefully squash it. Good luck!