2015-06-03 64 views
6

Tôi có tình huống sau trong đơn đăng ký của mình:Làm cách nào để dừng MPMusicPlayerController khi phát khi ứng dụng chấm dứt bởi người dùng?

Tôi có hệ thống âm nhạc trong ứng dụng của mình và tôi đã sử dụng MPMusicPlayerController để phát nhạc; mọi thứ đều hoạt động tốt cho đến bây giờ.

Vấn đề của tôi: Khi người dùng bắt đầu phát nhạc trong ứng dụng của tôi và sau một thời gian nó chấm dứt, âm nhạc không thể dừng lại vì tôi đang sử dụng các đối tượng [MPMusicPlayerController systemMusicPlayer]. Tôi biết có một tùy chọn khác là applicationMusicPlayer, nhưng nó dừng phát nhạc ở chế độ nền mà không đáp ứng các yêu cầu của tôi.

Làm cách nào để dừng phát nhạc khi ứng dụng bị người dùng chấm dứt?

Tôi có một số mã mà cố gắng để ngăn chặn nó trong applicationWillTerminate: nhưng nó chỉ hoạt động trong một số trường hợp:

  1. Nếu tôi nhấn nút home hai lần và chấm dứt các ứng dụng từ giao diện người dùng đa nhiệm, sau đó ứng dụng có thể dừng trình phát nhạc.

  2. Nếu tôi nhấn nút trang chủ một lần và sau đó chuyển đến màn hình chính, sau đó tôi nhấn nút home hai lần và chấm dứt ứng dụng thì nó không thể dừng trình phát nhạc của tôi.

Tôi cố gắng để đặt một breakpoint trong applicationWillTerminate: nhưng trong ví dụ thứ hai (từ trên cao), các ứng dụng bị rơi và không thực thi mã của tôi, không giống như trong tình huống đầu tiên.

UPDAT

Và tôi biết rằng khi tôi sử dụng chế độ nền MPMusicPlayerController là không cần thiết vì nó bắt đầu âm nhạc trong máy nghe nhạc quê hương.

Mọi trợ giúp sẽ được đánh giá cao.

+0

bạn đã cố thêm 'audio' vào' UIBackgroundModes' chưa? –

+0

@ Sega-Zero khi bạn phát nhạc qua MPMusicPlayerController không yêu cầu chế độ nền –

+0

@chiragshah Tôi gặp vấn đề tương tự - bạn giải quyết vấn đề này như thế nào? http: // stackoverflow.com/questions/42331852/bỏ-app-nguyên nhân-lỗi-tin-từ-debugger-chấm dứt-do-to-signal-9 – wayneh

Trả lời

3

Thật không may tùy chọn duy nhất của bạn dựa trên yêu cầu của bạn là phát âm thanh bằng ứng dụng của riêng bạn, AVAudioPlayer chẳng hạn và đặt yêu cầu chế độ nền âm thanh.

Vì không có cách nào nhận được thông báo khi ứng dụng của bạn bị hệ điều hành hoặc người dùng chấm dứt, bạn không có cách nào xung quanh nó, bạn sẽ không thể dừng hệ thống hoặc trình phát ứng dụng khỏi quá trình của mình.

Đăng ký NSUncaughtExceptionHandler sẽ không bắt SIGKILL hoặc SIGSTOP để bạn không thể dựa vào trình phát nhạc hệ thống.

Điều này không phải là vấn đề khi dễ thiết lập phát lại âm thanh trong ứng dụng của bạn. Nếu bạn đang sử dụng trình phát hệ thống để người dùng có thể phát nhạc riêng của họ, bạn nên sử dụng bộ chọn và truy cập thư viện nhạc của họ để họ có thể chọn nhạc.

+0

bạn nên có bất kỳ bản demo cho điều này bởi vì tôi không biết về cách chơi bài hát trong AVAudioPlayer –

+0

Chắc chắn, tôi sẽ cập nhật câu trả lời của tôi. Trước tiên hãy giải thích những gì bạn muốn chơi, nơi mà âm thanh đến từ vv? Chẳng hạn như nếu người dùng chọn một bài hát từ thư viện của họ, nếu bạn giới thiệu cho người dùng một danh sách các bài hát họ có thể chọn để phát, có phải là các bài hát trên máy chủ, v.v. không? – jarryd

+0

Người dùng có thể chọn bài hát chỉ có trong trình phát nhạc –

Các vấn đề liên quan