Non è possibile avere build separati con lo stesso BundleID spedito all'AppStore. Se vuoi davvero avere "Qualcosa di speciale" per i dispositivi che sono compatibili con ARKit, utilizza alcuni tipi di controlli durante l'avvio dell'app. Ecco la citazione da Apple
Important
All ARKit configurations require an iOS device with an A9 or later processor. If your app otherwise supports other devices and offers augmented reality as a secondary feature, use this property to determine whether to offer AR-based features to the user.
If your app requires ARKit for its core functionality, use the arkit key in the UIRequiredDeviceCapabilities section of your app's Info.plist to make your app available only on devices that support ARKit.
Quindi puoi utilizzare ARConfiguration.isSupported
per controllare le funzionalità del dispositivo nel runtime. Se non è supportato fallback all'implementazione "Vecchio".
Per compilare il codice per gli obiettivi < 11 puoi contrassegnare metodi o anche classi con @available(iOS 11.0, *)
in questo modo:
@available(iOS 11.0, *)
func doSomeARStuff() {
if ARConfiguration.isSupported { print("Supported") }
}
Per chiamare questi metodi usando il codice esistente, fai come segue:
if #available(iOS 11.0, *) {
doSomeARStuff()
} else {
// Fallback on earlier versions
}