如何将iPhone设置为震动一次?
例如,当玩家失去一条生命或游戏结束时,iPhone应该震动。
如何将iPhone设置为震动一次?
例如,当玩家失去一条生命或游戏结束时,iPhone应该震动。
当前回答
你可以使用
1) AudioServicesPlayAlertSound (kSystemSoundID_Vibrate);
iPhone和一些新款ipod。
2) AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);
ipad。
其他回答
你可以使用
1) AudioServicesPlayAlertSound (kSystemSoundID_Vibrate);
iPhone和一些新款ipod。
2) AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);
ipad。
对于以某种方式关闭振动的设备,我遇到了很大的麻烦,但我们无论如何都需要它工作,因为它对我们的应用程序功能至关重要,而且由于它只是文档方法调用的整数,因此它将通过验证。所以我已经尝试了一些在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);
}
}
在iOS 10和更新的iphone上,你也可以使用触觉API。这种触觉反馈比AudioToolbox API更柔和。
对于你的GAME OVER场景,一个重UI影响反馈应该是合适的。
UIImpactFeedbackGenerator(风格:.heavy) .impactOccurred ()
你可以使用其他的触觉反馈方式。
迅速:
import AVFoundation
...
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
Swift 2。0 +
AudioToolbox现在将kSystemSoundID_Vibrate表示为SystemSoundID类型,因此代码如下:
import AudioToolbox.AudioServices
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate)
而不必通过额外的强制转换步骤
(@Dov的道具)
原始答案(Swift 1.x)
下面是你如何在Swift上做这件事(以防你遇到和我一样的麻烦)
链接AudioToolbox.framework(转到你的项目,选择你的目标,构建阶段,链接二进制库,在那里添加库)
一旦完成:
import AudioToolbox.AudioServices
// Use either of these
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
SystemSoundID基本上是UInt32的类型别名(花哨的swift typedef),而kSystemSoundID_Vibrate是一个常规Int。编译器给你一个错误,试图从Int转换到UInt32,但错误读为“不能转换为SystemSoundID”,这是令人困惑的。苹果为什么不直接把它做成Swift enum,我真搞不懂。
@aponomarenko详细介绍了,我的答案只是给斯威夫特的。