用于在 iOS 中创建自定义振动。使用 AudioServicesPlaySystemSoundWithVibration 和 AudioServicesStopSystemSound。
心跳振动示例
NSMutableDictionary* pulsePatternsDict = [@{} mutableCopy];
NSMutableArray* pulsePatternsArray = [@[] mutableCopy];
// beat for 100 times
for (NSInteger i=0; i<100; i++){
[pulsePatternsArray addObject:@(YES)]; // vibrate for 100ms
[pulsePatternsArray addObject:@(100)];
[pulsePatternsArray addObject:@(NO)]; //stop for 1200ms * 0.3
[pulsePatternsArray addObject:@(1200*0.3)];
[pulsePatternsArray addObject:@(YES)]; //vibrate for 100ms
[pulsePatternsArray addObject:@(100)];
[pulsePatternsArray addObject:@(NO)]; //stop for 1200ms * 0.5
[pulsePatternsArray addObject:@(1200*0.5)];
}
[pulsePatternsDict setObject:pulsePatternsArray forKey:@"VibePattern"];
[pulsePatternsDict setObject:[NSNumber numberWithInt:1.0] forKey:@"Intensity"];
AudioServicesPlaySystemSoundWithVibration(kSystemSoundID_Vibrate, nil, pulsePatternsDict);
但只有调用这个(AudioServicesPlaySystemSoundWithVibration)才会使振动永远不会停止。所以我必须找到一些函数来阻止它。
答案是AudioServicesStopSystemSound
。它也是 AudioToolbox 框架中的私有函数。
函数的声明就像
void AudioServicesStopSystemSound(SystemSoundID inSystemSoundID)
NOTE: AudioServicesPlaySystemSoundWithVibration
仅适用于 iOS6
目前 iOS 9 和 iOS 9.1 中没有公开可用的 API。
And In iOS 10有一个新的 API 叫做UIFeedbackGenerator
。看到这个更多细节。目前仅适用于 iPhone 7 和 iPhone 7 Plus。
免责声明:有一种方法可以直接与 Taptic Engine (iOS 9) 交互,但有一个私有方法。您不应该在 App Store 应用程序中使用它。