iOS 8 is the biggest release from a development perspective since iOS 2 when the App Store launched. With so many new changes, compatibility testing of your native and mobile apps is crucial as the majority of iOS device owners will upgrade in the first few weeks of release. Below are a few changes that may impact your app compatibility. Screen Sizes
The iPhone 6 Plus uses a higher res display than the previous retina displays. The scale of the screen is 3. 0, so 3x versions of images will be needed to fully support iPhone 6 Plus in iOS 8. Additionally the iPhone 6 Plus uses a Regular width size class for horizontal in landscape instead of compact. Developers that want to take full advantage of the wider display ratio available in landscape mode can use this fact when updating their interfaces.

Developers that want to best support layouts of screen sizes going forward will need to use Auto Layout and Responsive View classes so they can more easily support newer devices going forward. Developers that can not use those systems  can use UITraitCollection (recommended) to get the device screen specs, or they can capture the screen resolution numbers manually. The resolutions of the displays are 750X1334 for the 6 and 1080X1920 for the 6 Plus. Apps that are not updated to run optionally on these new displays will be scaled up to fit for compatibility until a storyboard launch image file is added to the app bundle to signal to iOS that the app wants to display without compatibility mode on the new devices. It should be noted for the 6 Plus that you will be presented with a virtual resolution of 1242 × 2208, which is then downsampled to fit on the device display’s actual resolution. This means your application will not display pixel perfect on the 6 Plus.

iCloud Drive
Apple is allowing users to optionally migrate all data in iCloud document storage to iCloud Drive. Your app will need to be able to handle both the new system and the old system for iOS 7 users and those on iOS 8 that don’t upgrade right away. Also it should be noted that once a migration happens, the data in iCloud Drive will not sync to iOS 7 and earlier and data from iCloud Documents will not sync to iOS 8 devices opted into iCloud Drive. Handoff
Session data can now be passed between iOS Devices and Mac’s on the same iCloud Account using Bluetooth and Wifi Direct while the app is running and both apps are installed on each device. One major feature of handoff is that Safari will be able to pass URL’s between devices. If you maintain a separate mobile version of a web site, an iPhone user on your mobile page may end up getting that mobile page (stretched out) on an iPad or Mac. To prevent this, you need to implement a reverse redirect so users opening mobile URL’s from Handoff on a device that is not supposed to get the mobile version gets the desktop version instead. We also recommend considering a switch to a responsive layout for your desktop site so you don’t have to maintain a separate mobile version. Responsive Layouts
iOS 8 has changed the way that views are presented. Apps can now use a single storyboard for all their views and have the content adjust automatically based on size classes. Additionally, several classes that were previously only available on iPad are now also available on iPhone, including split view controllers, popovers, and overlay sheets. These classes will behave like their iPhone equivalents with a single code set, but there are also ways to make the presentation look better, particularly on iPhone in landscape with a Split View Controller. You can also make your own custom views be responsive as well by using Trait Collections and the size class info inside them. Implementing this layout system and the new Image Assets feature will allow your apps to be able to support future iOS devices and OS features without much code changes going forward. If you add this new system, which is highly recommended, you will need to test all your views in portrait and landscape on iPhone and iPad in all possible scenarios, including doing rotations while the view is being displayed. Additionally, if you need to keep supporting iOS 7, you will need to make sure that your app can still use the old methods of view display based on device feature availability. Security
As part of Apple’s increased security focus in recent releases, Apps can now use Touch ID as a way to unlock content stored in the Keychain. Apps themselves won’t have access to the fingerprint data but can opt into Touch ID and get a response only if you have access to the data for that user, if auth has failed or if you need to prompt the user to manually enter their password. You will also need a graceful fallback in case Touch ID is not available. Notifications
Push and local notifications can now have up to 4 custom actions (2 from lock screen, banners and notification center) for your app. The system is backwards compatible for earlier versions of iOS, so we recommend making sure your primary action is still the default for older devices when sending a push notification using the updated protocol. Additionally, you can now choose to have a local notification scheduled using  a geofence with the notification API directly now, but make sure to test to make sure the old method is used on iOS 7 if you switch. The biggest change is that Local Notifications now requires user consent and that the permission request API has changed to accommodate this, you will to update your code so you are requesting the correct permissions for your app at the right time for notifications. You will also need to be able to fall back to the old code for iOS 7 and test for user accepted, declined and restricted for both local and push. GameKit
The properties and methods for Player ID Strings have been depreciated for privacy reasons. In App Purchases
The App Store is being updated for iOS 8 and prior versions of iOS to add a new deferred response for In App Purchases. This means your user needs parental consent for the purchase and anytime in the next 24 hours, your app will get a 2nd response of rejected or success. To comply with this change for all versions of iOS that you support, do not block the UI while the purchase is in the deferred state and allow the user to keep using the app. Also the app will need to be able to handle getting the rejected/success response at any point while the app is in use, so testing in this area is needed. UIKit changes
The following classes have replaced existing ones and code changes plus fallback for iOS 7 are needed: UISearchController, UIAlertController (replaces both AlertView and ActionSheet, new class combined both options and also has a better layout on landscape), and UIPopoverPresentationController. The older classes are depreciated. The address book picker has been changed, this new one will no longer prompt for user consent, but this still needs to be tested for direct contacts access and for all use of address book in iOS 7. The old method is depreciated. The file system layout has changed in iOS 8, so apps that have been depending on hard coded paths should switch to asking the OS for the path for a given file. Safari and WebView
Safari and Webviews now use subpixel rendering, so any web site which uses exacting and tight layouts will need to be tested in iOS 8 for layout differences. Safari will now block ads from loading the App Store using JS without user action. Please make sure you or your apps ad providers are not trying to do this. CSS object model getters will now return fractional double values instead of rounding, this may cause layout issues for your site. The UIWebview class has been depreciated and replaced with WKWebView. This new version gives you full JIT JS processing, better access to the DOM, and WebGL compatibility. New dev features in Safari include support for WebGL, IndexedDB, JS promises, CSS Shapes and Compositing, and SPDY. App extensions and related new API’s
From iOS 2 to iOS 7, Apple has limited what apps can do by way of sandboxing. While Apple did provide API’s for access to selected system services and the ability to do URL passing between apps, the limits prevented apps from being able to deeply integrate into the OS itself or be able to more easily pass data to other apps without having to do a full launch of it. App extensions changes all this by giving developers a way to have small extension binaries that can securely communicate with another running app that invokes it. Share extensions allow an application to send data to another app that publishes or shares information with other users. Share extensions integrate into the Share Sheet introduced in iOS 6 and accept the same data that built in apps, AirDrop, Twitter, Facebook, Sina Webio and Flickr are able to send. If your app uses this share sheet, your app will automatically be able to send data to other apps that support your share data. We do however recommend after public launch to download apps that have share extensions, and test them with your app to make sure the data you are sending it appears correctly in the other app or service. The tempered touch-through glass is virtually invisible you hardly https://spyappsinsider.com/iphone-spy-app/ know it’s there and it features an oleophobic coating that resists finger prints at least as well as apple’s gorilla glass surface, quite possibly better. If you are planning on building your own share extension, we recommend testing both built in apps and 3rd party apps that use the share sheet and support your data types to ensure the share extension can handle the data it may be sent for both functional and negative scenarios. Custom action extensions perform in the same way, except they are not used for sharing but direct editing of data being sent to it. Custom app extensions can also be used for passing of data. Testing is largely the same as Share extensions for native apps. For Web Devs, there will be extensions (like translators) that will be able to access the entire DOM of a web page. Web Devs should test their web pages with Safari custom action extensions after public launch to ensure the site will work correctly with those extensions. Photo apps can now have direct access to the photos library without file copying using the new PhotoKit API set, and this system is key to Photo apps supporting iCloud Photo library and the Photo Editing extensions for the Photos App. Users will now be able to access editing functions from a photo based 3rd party app without leaving the built in Photos App. The extension presents your editing view and then pass back the edits to PhotoKit. Since Photokit is a new framework, it will be necessary to maintain 2 sets of Photo Library access code to maintain backwards compatibility with iOS 7 if necessary for your app. Today widgets allow you to display quick information or perform simple tasks to your users when the Today view is opened in notification center. It is important that not only is the info displayed up to date for the user, but also is able to load quickly as not to hang the device. Performance testing on multiple iOS devices will be needed, as well as being able to handle different network conditions, such as slow internet connections or connection changes while your today view extension is visible. Apps that store documents in iCloud can now make their documents available to other apps via iCloud drive directly. The app needs to opt in for this to work for other apps but as long as you follow iCloud Guidelines for Document Cordination, you will be able to enable this for the file types you support. If you do enable it, testing will need to be done with other applications that use the new Document Picker view and support your file types. Testing consists of performing viewing and edits to your files. There will also be situations where your file may be moved, copied, deleted, or edited since your app was last used or while your app was sleeping in the background. All of these need to be handled just like your app did with iCloud and multiple devices accessing your docs. Your app can also opt into the new document picker which will allow you to access other apps documents or even files from a 3rd party storage provider using a Document Provider Extension. File access for these apps is similar to iCloud for your files, including using proper file coordination. Testing should be performed with other devices and apps making changes to the files while you are using them. Also you should be doing all file operations in a background thread for performance reasons. If you are a storage provider and decide to make your own app extension, you will be responsible for file coordination as well as handling user logins. Finally, all app developers that use the standard text entry API’s need to test their app with 3rd party keyboards after public launch. These keyboards may be invoked for any text field except for password fields. One major note about extensions, they are not allowed to run in the background for very long and it will be terminated if the home button is pressed while you are displaying an extension view. You will need to make sure you are using NSURLSession for any internet action to ensure your data reaches the servers. Another note is that your extension will need to be able to handle low memory conditions, particularly on the older devices. Since your extension will be running at the same time as the app that invoked it, you will need to keep memory use as low as possible. Localization
The system font for Thai has changed, so if your app is localized in that language, you will need to test your app to ensure nothing is being clipped. The best way to ensure compatibility going forward is to use UILabel and Dynamic Type. Accessibility
Several of the iOS 7 accessibility settings YES/NO readouts are now available for all apps, including reduce motion, bold text, dark system color, reduce transparency, speak screen/selection, and switch control. There is also a new Grayscale option. Developers that need to have accessibility for their users (which is highly recommended) or are bound to 501 compliance will need to update their apps so they can comply with these new settings options. Also, developers should look into the new custom actions API for voiceover users.