Я не уверен, что есть способ сделать это, кроме проверки моделей, что, вероятно, не очень хороший подход. Я знаю, что яблоко обеспечивает:
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
Если устройство может вибрировать, оно будет. На устройствах без вибрации ничего не поделаешь. Есть еще один звонок:
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
Этот будет вибрировать устройство, если у него есть возможность, или устройство подаст звуковой сигнал.
Может быть, лучше просто иметь настройки и дать некоторые объяснения по поводу настройки, потому что пользователь может захотеть услышать звуковой сигнал, когда у него нет вибрирующего устройства. Может быть, вызвать настройку как-то иначе, чем «Вибрационное оповещение вкл / выкл».