2015-09-20 21 views
9

Trong iOS 9 (Xcode 7, Swift 2.0) Tôi đang cố gắng để chơi một âm thanh trong chế độ im lặng bằng cách sử dụng đoạn mã sau:Chơi âm thanh trên iOS 9 ở chế độ im lặng

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: .MixWithOthers) 
try! AVAudioSession.sharedInstance().setActive(true) 
AudioServicesPlayAlertSound(1005) 

Theo câu trả lời khác và Apple Tôi nghĩ rằng điều này sẽ làm việc nhưng nó không chơi một âm thanh trên iOS 9 khi ở chế độ im lặng. Nó không phát khi không ở chế độ im lặng. Từ tài liệu của Apple:

AVAudioSessionCategoryPlayback - Chỉ phát lại. Phát âm thanh ngay cả khi màn hình bị khóa và với công tắc Ring/Silent được đặt thành im lặng. Sử dụng danh mục này cho ứng dụng có phát lại âm thanh có tầm quan trọng chính.

Tôi có thiếu gì đó ở đây hoặc có cách nào khác/mới để làm việc này không?

+3

Tôi hy vọng nó không hoạt động. Nếu tôi đặt điện thoại ở chế độ im lặng thì tôi không muốn các ứng dụng tạo ra âm thanh. Đó là điểm của chế độ im lặng. – rmaddy

+2

Từ tài liệu của Apple, điều này có thể thực hiện được. Và tôi đang sử dụng nó cho một ứng dụng hẹn giờ trong trường hợp nó thậm chí nên chơi khi điện thoại ở chế độ im lặng vì nó là tầm quan trọng hàng đầu. – lammert

+0

@lammert bạn sẽ tìm thấy bất cứ điều gì liên quan đến điều này? Xin vui lòng đề nghị tôi làm thế nào nó hoạt động trong ios 8 và sau đó đặc biệt cho chế độ im lặng – Abha

Trả lời

4

Đây là mã của tôi:

do { 
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: AVAudioSessionCategoryOptions.MixWithOthers) 
    } 
catch { 
     // report for an error 
    } 

AudioPlayer.play() 

Nó hoạt động trên iPhone của tôi.

Chúc may mắn!

+1

Tuyệt vời! Điều này cũng hoạt động trong iOS10! – demonofthemist

+0

Âm thanh tiếp tục phát cho tôi. Không làm việc. – user3427013

+0

@ user3427013 không phải là mã này phải giữ âm thanh phát không? nếu bạn muốn dừng lại, hãy thực hiện 'AudioPlayer.stop()' –

0

Đối Swift 3.2:

do { 
     try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.duckOthers) 
    } 
    catch { 
     // report for an error 
    } 
Các vấn đề liên quan