SwiftUI:如何使 phone 振动?

SwiftUI: How to make phone vibrate?

所以我通过本教程了解了如何让 phone 提供触觉反馈。 https://swifttom.com/2020/03/11/haptic-feedback-in-a-swiftui-button/

然而,我想弄清楚的是如何让 iPhone 真正振动,就像接收到 phone 呼叫或定时器(从默认时钟应用程序)在 phone 静音时关闭。我知道这似乎可以在 Google 上轻松找到答案,但老实说我找不到解决方案。如果有人能提供帮助,将不胜感激。

import SwiftUI

struct ContentView: View {
    let generator = UINotificationFeedbackGenerator()
    var body: some View {
        VStack{
            Button("Press") {
                generator.notificationOccurred(.error) //I want vibration, not haptic feedback
            }
        }
    }
}

只需调用AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)。您可能需要导入 AudioToolbox 框架。

我想这应该有点帮助。试试看! Lmk 如果它有效!

源代码

import SwiftUI
import AudioToolbox


struct ContentView: View {
    var body: some View {
        VStack{
            
            Button("Press"){
                AudioServicesPlayAlertSoundWithCompletion(SystemSoundID(kSystemSoundID_Vibrate)) {   }
               
            }
            
        }
        
    }
}

1. 首先你需要导入 AudioToolbox

我在点击按钮时使用振动功能。

@IBAction func startVibration(_ sender: Any) { for _ in 1...5 { AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) sleep(1) } }

它工作正常。

2. 让它成为 UIDevice 的扩展?

extension UIDevice { static func vibrate() { AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) } }

现在您可以根据需要调用 UIDevice.vibrate()。