wake-up-neo.com

Wie lässt sich das iPhone mit Swift zum Vibrieren bringen?

Ich muss das iPhone zum Vibrieren bringen, aber ich weiß nicht, wie das in Swift geht. Ich weiß, dass Sie in Objective-C einfach schreiben:

import AudioToolbox
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);

Das funktioniert aber nicht bei mir.

95
Nico Gutraich

Kurzes Beispiel:

import UIKit
import AudioToolbox

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))            
    }
}

laden Sie es auf Ihr Handy und es wird vibrieren. Sie können es nach Belieben in eine Funktion oder eine IBAction einfügen.

190
Steve Rosenberg

Versuchen Sie in iOS 10 auf dem iPhone 7 oder 7 Plus: 

let generator = UIImpactFeedbackGenerator(style: .heavy)
generator.impactOccurred()
47
Adam Smaka

Andere Vibrationsarten:

import AudioToolbox

AudioServicesPlaySystemSound(1519) // Actuate "Peek" feedback (weak boom)
AudioServicesPlaySystemSound(1520) // Actuate "Pop" feedback (strong boom)
AudioServicesPlaySystemSound(1521) // Actuate "Nope" feedback (series of three weak booms)

Mehr über Vibration - http://www.mikitamanko.com/blog/2017/01/29/haptic-feedback-with-uifeedbackgenerator/

37
Michael

Für iOS 10.0+ können Sie versuchen, UIFeedbackGenerator

Einfacher viewController oben, ersetzen Sie einfach Ihren View Controller in Ihrer Test- "Single View App".

import UIKit

class ViewController: UIViewController {

    var i = 0

    override func viewDidLoad() {
        super.viewDidLoad()

        let btn = UIButton()
        self.view.addSubview(btn)
        btn.translatesAutoresizingMaskIntoConstraints = false

        btn.widthAnchor.constraint(equalToConstant: 160).isActive = true
        btn.heightAnchor.constraint(equalToConstant: 160).isActive = true
        btn.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        btn.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

        btn.setTitle("Tap me!", for: .normal)
        btn.setTitleColor(UIColor.red, for: .normal)
        btn.addTarget(self, action: #selector(tapped), for: .touchUpInside)
    }

    @objc func tapped() {
        i += 1
        print("Running \(i)")

        switch i {
        case 1:
            let generator = UINotificationFeedbackGenerator()
            generator.notificationOccurred(.error)

        case 2:
            let generator = UINotificationFeedbackGenerator()
            generator.notificationOccurred(.success)

        case 3:
            let generator = UINotificationFeedbackGenerator()
            generator.notificationOccurred(.warning)

        case 4:
            let generator = UIImpactFeedbackGenerator(style: .light)
            generator.impactOccurred()
        case 5:
            let generator = UIImpactFeedbackGenerator(style: .medium)
            generator.impactOccurred()

        case 6:
            let generator = UIImpactFeedbackGenerator(style: .heavy)
            generator.impactOccurred()

        default:
            let generator = UISelectionFeedbackGenerator()
            generator.selectionChanged()
            i = 0
        }
    }
}
20
Malder

Wir können dies in Xcode7.1 tun

import UIKit
import AudioToolbox


class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        AudioServicesPlayAlertSound(kSystemSoundID_Vibrate)
    }
}
16
ken0nek

Swift 4.2 aktualisiert

Fügen Sie einfach folgenden Code in Ihr Projekt ein. 

Verwendungszweck  

Vibration.success.vibrate()

Quellcode

enum Vibration {
case error
case success
case warning
case light
case medium
case heavy
case selection
case oldSchool

func vibrate() {

  switch self {
  case .error:
    let generator = UINotificationFeedbackGenerator()
    generator.notificationOccurred(.error)

  case .success:
    let generator = UINotificationFeedbackGenerator()
    generator.notificationOccurred(.success)

  case .warning:
    let generator = UINotificationFeedbackGenerator()
    generator.notificationOccurred(.warning)

  case .light:
    let generator = UIImpactFeedbackGenerator(style: .light)
    generator.impactOccurred()

  case .medium:
    let generator = UIImpactFeedbackGenerator(style: .medium)
    generator.impactOccurred()

  case .heavy:
    let generator = UIImpactFeedbackGenerator(style: .heavy)
    generator.impactOccurred()

  case .selection:
    let generator = UISelectionFeedbackGenerator()
    generator.selectionChanged()

  case .oldSchool:
    AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
  }

}

}
14
muhasturk

Swift 4.2

 if #available(iOS 10.0, *) {
      UIImpactFeedbackGenerator(style: .light).impactOccurred()
   } 
4
Rashid Latif
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
1
Dhaval H. Nena

UINotificationFeedbackGenerator ist ab iOS 10 verfügbar und funktioniert mit Haptic v2. Wir können Folgendes überprüfen:

  let feedbackSupportLevel = UIDevice.current.value(forKey: "_feedbackSupportLevel") as? Int
        if #available(iOS 10.0, *), let feedbackSupportLevel = feedbackSupportLevel, feedbackSupportLevel > 1 {
            do { // 1
                let generator = UIImpactFeedbackGenerator(style: .medium)
                generator.impactOccurred()
            }

            do { // or 2
                let generator = UINotificationFeedbackGenerator()
                generator.notificationOccurred(.success)
            }
        } else {
            AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
        }
1
Sergei Lysiuk

Sie können das Telefon mit AudioServices oder Haptic Feedback in Vibration versetzen.

// AudioServices
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))

// Haptic Feedback
UIImpactFeedbackGenerator(style: .medium).impactOccurred()

Überprüfen Sie mein Open-Source-Framework Haptica , es unterstützt sowohl Haptic Feedback, AudioServices als auch einzigartige Vibrationsmuster. Works auf Swift 4.2, Xcode 10

1
efremidze
import AudioToolbox

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

Jetzt können Sie bei Bedarf einfach UIDevice.vibrate() aufrufen.

0

Hier finden Sie alle Codes für jedes .caf und die dazugehörige Kategorie:

https://github.com/TUNER88/iOSSystemSoundsLibrary

Wenn Sie beispielsweise eine leichtere Vibration wünschen, können Sie den Code 1003 verwenden.

Viel Glück und hab Spaß ;)

0
O. Boujaouane