app在后台可以震动

  1. app开启后台运行权限,定位或者录音等都可以
  2. 设置AVAudioSession时,mode设置为voiceChat
  3. 手机震动调用
    AudioServicesPlaySystemSoundWithCompletion(kSystemSoundID_Vibrate, nil)
import UIKit
import AVFoundation

class ViewController: UIViewController {

    var recorder: AVAudioRecorder?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let session = AVAudioSession.sharedInstance()
        try? session.setCategory(.playAndRecord, mode: .voiceChat, options: [])
        try? session.setActive(true)
        
        /**
         AVAudioSession.category = playAndRecord
         mode = defualt, 震动不生效
         mode = voiceChat, 可以震动
         */
        let url = URL(fileURLWithPath: NSTemporaryDirectory().appending("/abc.caf"))
        recorder = try? AVAudioRecorder(url: url, settings: [:])
        recorder?.prepareToRecord()
        recorder?.record()
    }

    override func touchesBegan(_ touches: Set, with event: UIEvent?) {
        Timer.scheduledTimer(withTimeInterval: 3, repeats: true) { _ in
            AudioServicesPlaySystemSoundWithCompletion(1521, nil)
            //AudioServicesPlaySystemSoundWithCompletion(kSystemSoundID_Vibrate, nil)
        }
    }
}

你可能感兴趣的:(app在后台可以震动)