現在、iPhone のみがバイブレーションをサポートしており、バイブレーション機能を呼び出す前にデバイスがバイブレーションをサポートしているかどうかを確認するにはどうすればよいですか。
3 に答える
iOS SDK には、iPhone を振動させる 2 つの機能があります。ただし、振動ハードウェアは iPhone にのみ存在します。では、iPad または iPod touch でアプリを使用しているユーザーにどのように警告しますか? 明らかに、モデルをチェックすることは適切ではありません。パラメータ kSystemSoundID_Vibrate を取る、一見似たような関数が 2 つあります。
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
どちらの機能もiPhoneを振動させます。ただし、振動をサポートしていないデバイスで最初の機能を使用すると、ビープ音が鳴ります。一方、2 番目の関数は、サポートされていないデバイスでは何もしません。
ちょっとした回避策ですが、これでうまくいくことがわかりました。これは、現在 iPhone デバイスのみが振動ハードウェアを搭載しているという仮定に基づいています。
if([[UIDevice currentDevice].model isEqualToString:@"iPhone"])
{
// An iPhone: so should have vibrate
}
else
{
// Not an iPhone: so doesn't have vibrate
}
残念ながら、デバイスが振動をサポートしているかどうかをテストするための文書化された方法はありません。ドキュメントから:
一部の iOS デバイスでは、kSystemSoundID_Vibrate 定数を渡してバイブレーションを呼び出すことができます。他の iOS デバイスでは、この関数をその定数で呼び出しても何も起こりません。
ここでの正しいアプローチは、振動がサポートされているかどうかを確認せずに、Saurabh が言及したメソッドを単に呼び出すことです。