如何将iPhone设置为震动一次?
例如,当玩家失去一条生命或游戏结束时,iPhone应该震动。
如何将iPhone设置为震动一次?
例如,当玩家失去一条生命或游戏结束时,iPhone应该震动。
当前回答
摘自“iPhone教程:检查iOS设备功能的更好方法”:
这里有两个看似相似的函数,它们都带有参数kSystemSoundID_Vibrate:
1) AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
2) AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
这两个功能都能使iPhone震动。但是,当你用第一个 功能在不支持振动的设备上,它会发出哔哔声 声音。另一方面,第二个函数不做任何操作 不受支持的设备。所以如果你要振动这个设备 连续地,作为一个警告,常识说,使用函数2。
首先,在构建阶段中将AudioToolbox框架AudioToolbox.framework添加到目标中。
然后,导入这个头文件:
#import <AudioToolbox/AudioServices.h>
其他回答
在我的例子中,我使用的是AVCaptureSession。 AudioToolbox是在项目的构建阶段,它被导入,但仍然不能工作。为了使它工作,我在振动之前停止会话,然后继续。
#import <AudioToolbox/AudioToolbox.h>
...
@property (nonatomic) AVCaptureSession *session;
...
- (void)vibratePhone;
{
[self.session stopRunning];
NSLog(@"vibratePhone %@",@"here");
if([[UIDevice currentDevice].model isEqualToString:@"iPhone"])
{
AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);
}
else
{
AudioServicesPlayAlertSound (kSystemSoundID_Vibrate);
}
[self.session startRunning];
}
在iOS 10和更新的iphone上,你也可以使用触觉API。这种触觉反馈比AudioToolbox API更柔和。
对于你的GAME OVER场景,一个重UI影响反馈应该是合适的。
UIImpactFeedbackGenerator(风格:.heavy) .impactOccurred ()
你可以使用其他的触觉反馈方式。
对于以某种方式关闭振动的设备,我遇到了很大的麻烦,但我们无论如何都需要它工作,因为它对我们的应用程序功能至关重要,而且由于它只是文档方法调用的整数,因此它将通过验证。所以我已经尝试了一些在TUNER88/ iossystemsoundlibrary之外的声音
然后我偶然发现了1352,不管静音开关或设备上的设置(设置->震动铃声,震动静音),它都在工作。
- (void)vibratePhone;
{
if([[UIDevice currentDevice].model isEqualToString:@"iPhone"])
{
AudioServicesPlaySystemSound (1352); //works ALWAYS as of this post
}
else
{
// Not an iPhone, so doesn't have vibrate
// play the less annoying tick noise or one of your own
AudioServicesPlayAlertSound (1105);
}
}
你可以使用
1) AudioServicesPlayAlertSound (kSystemSoundID_Vibrate);
iPhone和一些新款ipod。
2) AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);
ipad。
迅速:
import AVFoundation
...
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))