2018年7月后提交iOS应用:兼容iOS9及部署目标相关技术问询
Hey there, let's break down your two questions clearly based on Apple's submission guidelines and real-world iOS development practices:
1. Can users with iOS 9 devices download my app if I submit it after July 2018?
Absolutely—as long as you set your app's Deployment Target to iOS 9 and ensure your code doesn't rely on iOS 11-only APIs without proper fallback logic. Apple's 2018 rule only requires new apps and updates to be built with the iOS 11 SDK or later (your Base SDK), but it doesn't force you to drop support for older iOS versions.
As long as your app functions correctly on iOS 9 (you’ll need to test this thoroughly on a physical device or simulator), iOS 9 users will see your app in the App Store and be able to download it without issues.
2. Can I set Deployment Target lower than Base SDK? How to handle iOS 11 features that iOS 9 doesn't support?
Yes, this is not only allowed—it’s standard practice for supporting older iOS versions while leveraging the latest SDK tools. The Base SDK is the iOS version you compile your app against, while the Deployment Target defines the oldest iOS version your app can run on; these two values are designed to be independent.
For iOS 11-exclusive features, here’s how to handle compatibility properly:
- API Availability Checks: Use Swift’s
if #available(iOS 11.0, *)(or Objective-C’sif (@available(iOS 11.0, *))) conditional blocks. This lets you run iOS 11-only code only on devices that support it, and provide a fallback (like a simplified feature or a user-friendly message) for iOS 9 users. - Avoid Unchecked API Calls: Never call an iOS 11 API directly without checking for availability first—this will cause crashes on iOS 9 devices.
- Test on Target Versions: Always test your app on an iOS 9 device (or simulator) to catch compatibility issues early. You might find UI elements behave differently or certain frameworks aren’t available, so you’ll need to adjust your code accordingly.
- Use Alternative Implementations: If a key feature relies on an iOS 11 API, look for open-source libraries that replicate the functionality for older iOS versions, or build a custom implementation that works on iOS 9.
内容的提问来源于stack exchange,提问作者D-A UK

