iOS 4.2 SDK download - cocoa-touch

Does anyone know where I can get the iOS 4.2 SDK for xCode? I cannot find it anywhere on the Apple site.
I am building an App for Verizon Phones which only supports iOS 4.2. I get a runtime error that says 'Symbol not found' for AdInterstitialAd. I am not sure, but I am guessing I am getting that error because I added the iAd.framework from the iOS 4.3 SDK.

To submit an app to the App Store you will always build against the latest SDK which is 4.3. Apple will reject your app if you don't. You can set the deployment version of your app to lower version. And you are correct, AdInterstitialAd is only available in 4.3 or higher. You can still use the ADBannerView in the lower version.
If you want to use AdInterstitialAd in your app, you will have to use weak linking to make sure the framework if avaiable.
For example:
class adClass = NSClassFromString(#"AdInterstitialAd");
If (adClass) {
// do full screen ad stuff
} else if ((adClass = NSClassFromString(#"ADBannerView")) {
// do banner ad stuff
}
Using iAds While Maintaining Backwards Compatibility is a blog that provide some tips for using iAds when it was first announced last year. Some of those tips are this valuable today.

http://www.felixbruns.de/iPod/firmware/

Related

Can I still upload an application that does not support iOS8+?

Can I still upload an application that does not support iOS8+?
I currently have an app that we are releasing for iOS7 and 7.1, but it was rejected because it was not compatible for iOS8.
We are currently in the process of building the iOS8 version, but wanted to release something quickly.
You just need to build & submit it with XCode 6, iOS SDK 8.0.
They may reject if the app doesn't work with iOS 8. Do a quick test to make sure it doesn't crash, and all major functions are working fine.
No you can't. I'm not sure the exact date that apple made it mandatory to support iOS 8 but I do know it has passed so any new apps/updates submitted to the app store need to support iOS 8.

How to stop supporting iOS7

I have just installed Xcode 5, and I have an application that should be targeted only to iOS 6.0 and iOS 6.1 devices.
How can I stop supporting iOS 7.0 ??
That is not possible, you can stop supporting previous versions of iOS, but not the other way. You need to prepare your app to work on iOS7.
YOu don't need to redesign your app or anything, just open in with XCode 5 and get rid of all the warnings/small bugs.
As others have noted, you can't "not support iOS 7". However, you can delay upgrading to the iOS 7 SDK (at least, in the short term).
To do such, simply continue using Xcode 4 to build your app. When you're ready to submit it, simply do such using Xcode 4 like you normally would.
For the time being, Apple will most likely accept apps built using the iOS 6 SKD. (Imagine, for example, that you've spent several months or a year building your app... Apple will still let you submit it for the time being even using an older SDK).
Further, the app will run and appear correctly (in many/most cases) using iOS 6 UI components for the most part (in example, UIAlertView is an exception to this, which will use the iOS 7's UIAlertView look).
In the long term, however, you really should convert your app to use the latest SDK.
It's not possible to prevent the installation of your app to devices that meet minimum version requirements.
Of course, you're free to check in your app the iOS version and do something about that. For example, if your concern is really that the user user should download another, iOS 7-designed version of your app, you can inform her about this possibility:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if ([self.window respondsToSelector:#selector(setTintColor:)]) // iOS 7
... // redirect user to better, tint-enabled version
return YES;
}

Cannot test the social framework on a device lower than IOS6

I am working with the social framework. On iPads with IOS6 it works fine.
But when I test it on a device with IOS 5 I get the following error.
dyld: Library not loaded: /System/Library/Frameworks/Social.framework/Social
Referenced from: /var/mobile/Applications/3A3020E0-09D7-49DD-96E2-2E0F20C098D2/RacingGenk.app/RacingGenk
Reason: image not found
Can anybody help ?
Kind regards.
Stef
The social framework isn't available before iOS 6, which explains the problems you're having.
What you need to do is weak link the social framework, which will let you use it on iOS 6 but won't cause pre iOS 6 devices to try to load it. To weak link a library you should select your application's target in XCode, go to the Build Phases tab, and under Link Binary with Libraries make sure that the 'Social.framework' entry is set to Optional rather than Required.
The social framework was introduced in iOS 6, but if you want you have sharing ability for facebook, twitter and many other social networks / sites on devices running versions of iOS before 6.0 then feel free to explore sharekit:
http://getsharekit.com/
Its really easy to use and works for both iOS 6 apps and apps running on previous versions of iOS.
That is because the Facebook integration is only available on iOS6. You can however still use facebook using the original Facebook API for < IOS6 devices.

Upgrading App to support iOS 5

I have developed an ios4 app and now want to upgrade it to ios5. What are the sort of things i need to be aware of in terms of the switch being successful and not causing any pains? My most important question is that if i do push a new change to apple, what will ios4 users see when an upgrade is available that supports only ios5 and up? Can they just ignore that update and continue using the ios4 version they had installed? Will the appstore error out if they try to download the ios5 upgrade anyway? What exactly will happen?
Thanks
The biggest change in IOS 5.0 is the ARC project, so if you converted it to ARC it won't work with older devices like 3g (3gs can have ios 5.0 so it's safe).
Other than that, a user that has an iOS 5.0 device (or an upgraded one) would be able to get the update as soon as it is made available from apple store.
Keep in mind that lower end ios 5.0 devices might not have enough memory for the application though, it's the same that applies for ios 3 / ios 4 and sequentially ios 5/ios 6.0.

iPad: What happens to iAds if iOS on user's machine doesn't support them?

Ok,
So say I put some iAds in my iPad app. Assuming that I implement it via the iOS4.2 update that comes out next week.
Now, say I release my product but the majority of users haven't installed iOS4.2 in their iPads yet. Does that mean that my app will not run on their systems (meaning, my app requires iOS4.2), or does it mean that it'll run in their system (say iOS 3.2.2) but just the iAds won't show?
Regarding making your app available on iOS 3.2 devices: Make sure to weak link iAd.framework (i.e. in your target's settings, choose 'Weak Link' next to iAd.framework) as it is not available on iOS 3.2. You should also check for availability like
if (NULL != NSClassFromString(#"ADBannerView"))
{
// handle ad loading here
}
else
{
// no iAds available.
}
It depends how you compiled your app.
You can specify that an app can run on iOS 3.2.2, but can still use features of iOS 4.2, by carefully checking the availability before using these features.
You can also specify that your app can only run on iOS 4.2 and later; then you can use iOS 4.2 features without checking the availability.
So, it's your choice. Read this Apple document.