How can i restrict my app to iPhones with a Taptic Engine?

I'm releasing a free sensory experience app that relies on the new Core Haptics framework and so will therefore only work on iPhones with a Taptic Engine. There is no alternative backup experience I can provide on phones without this engine.


How can I make my app visible on the App Store only to devices with this engine?


Limiting only to iOS 13 almost achieves this - however the iPhone SE is the only exception as it supports iOS 13 yet doesn't have the Taptic Engine. If i simply brought up a screen saying "This app is not supported on this device" when the app is launched on iPhone SE, will my app get rejected? (FYI the app is free, so no money will be lost by people who experience this)

Replies

>How can I make my app visible on the App Store only to devices with this engine?


I don't think you can do that in this example, leaving you to detect and alert post-install, etc. I'd suggest to warn in that app's description in the store, but that requires users to pay close attention, so...


Seen the 'undocumented' suggestion in this SO thread?

https://stackoverflow.com/questions/41444274/how-to-check-if-haptic-engine-uifeedbackgenerator-is-supported


>will my app get rejected?


No one here can promise what app review will/won't accept reject, app review isn't here and there are no pre-reviews.


Good luck.

Not sure why an undocumented solution was necessary. CoreHaptics provides a capabilities API. Just use:

if ([[CHHapticEngine capabilitiesForHardware] supportsHaptics]) {
// Do haptics
}
else {
// Warn the user
}