8

Tôi đã dành hai ngày cho việc này và đã không nhận được hư không. Tôi đang cố gắng sử dụng ứng dụng [MPMusicPlayerControllerMusicPlayer] để phát âm thanh được chọn từ thư viện iPod của người dùng và chạy nó ở chế độ nền cũng như hỗ trợ các sự kiện từ xa. Bây giờ việc phát nhạc thực sự là phần dễ dàng. Lấy ví dụ, chọn các bài hát, gán hàng đợi nhạc và chơi. Ngay và luôn. NHƯNG ... a) Tôi không thể làm cho nó để chơi trong nền, và b) ngay cả khi ở phía trước tôi không thể có được sự kiện điều khiển từ xa để làm việc ở tất cả!Hỗ trợ điều khiển âm thanh và từ xa nền bằng MPMusicPlayerController trên iOS 4. Tính năng này có thể thực hiện được không?

Và trước khi bạn hỏi, có, tôi đã đặt mục nhập plist, danh mục phiên âm thanh, cuộc gọi để nói rằng tôi quan tâm đến việc nhận sự kiện từ xa và thiết lập trả lời đầu tiên để lắng nghe họ. có, tôi đã đọc từng tài liệu về chủ đề mà tôi có thể tìm thấy * (* một công việc mà tôi đổ lỗi cho Apple vì không rõ ràng về chủ đề này, cũng như không có mã ví dụ nào cho nó!) và tôi đã xem mỗi một trong những video WWDC liên quan đến nó (thậm chí đóng băng màn hình để sao chép mã chính xác từ ví dụ của họ ...) vì vậy trừ khi tôi đã bỏ lỡ điều gì đó không có trong danh sách này, trả lời với bất kỳ câu trả lời nào sẽ không Cứu giúp.

Một điều nữa ... Tôi đang nói rõ ràng về việc sử dụng MPMusicPlayerController mà theo tài liệu, không bao giờ sử dụng phiên ứng dụng. Nó luôn sử dụng phiên hệ thống. (. Có lẽ đó là của riêng mình trả lời câu hỏi của tôi, nhưng các tài liệu không rõ ràng nói rằng vì vậy tôi không chắc chắn, vì thế câu hỏi này)

Điều đó nói rằng, sau hai ngày, suy nghĩ của tôi là thế này:

  1. Khi sử dụng MPMusicPlayerController, bất kể bạn gọi phương thức nào hoặc mục nhập plist nào, ứng dụng của bạn sẽ không bao giờ chạy dưới nền. Giai đoạn. Nếu bạn sử dụng thể loại ipodMusicPlayer, nhạc tiếp tục phát, nhưng đó là vì iPod đang phát, không phải ứng dụng của bạn. Thay vào đó, nếu bạn sử dụng cá thể applicationMusicPlayer, khi chuyển sang nền, nhạc sẽ dừng. Trong cả hai trường hợp, ứng dụng của bạn bị tạm ngưng.

  2. Bất kể bạn đang sử dụng trường hợp ipodMusicPlayer hoặc ứng dụngMusicPlayer, tất cả các sự kiện từ xa đều tự đi đến chính ứng dụng iPod, chứ không phải của bạn, ngay cả khi bạn đã yêu cầu chúng một cách rõ ràng. Nếu bạn đang sử dụng cá thể applicationMusicPlayer và bạn sử dụng điều khiển từ xa để chọn 'Phát', ứng dụng iPod sẽ nhận lệnh để âm thanh của bạn tắt và bị gián đoạn và quá trình phát lại bắt đầu trong ứng dụng iPod. Nếu bạn đã chọn ipodMusicPlayer thay vào đó, sau đó tất nhiên nó không quan trọng như bạn đã rõ ràng nói rằng bạn về cơ bản chỉ quan tâm đến điều khiển từ xa các ứng dụng iPod mà một lần nữa, là những gì thực sự nhận được các sự kiện từ xa.

  3. Biểu tượng trong điều khiển chuyển đổi nhanh ở dưới cùng không bao giờ thay đổi biểu tượng ứng dụng của bạn bởi vì một lần nữa, ứng dụng của bạn chưa bao giờ được thiết lập để nhận sự kiện. Ứng dụng iPod, đó là lý do tại sao biểu tượng của nó xuất hiện ở đó.

Vì vậy, điều tôi muốn biết là ... tôi có sai ở đây không? Có ai thành công có thể sử dụng MPMusicPlayerController và có thể chặn các sự kiện từ xa không? Mặc dù tôi thích sử dụng applicationMusicPlayer với hỗ trợ nhạc nền nên tôi không bỏ qua iPod của người dùng, điều lớn hơn là thông báo điều khiển từ xa, có nghĩa là tôi phải sử dụng ipodMusicControl và giữ ứng dụng của tôi ở nền trước để chặn những tin nhắn, vì vậy hãy là nó. Đó là xấu xí theo cách đó, nhưng ít nhất nó là một cái gì đó.

Ví dụ mã hoặc ít nhất các bước rõ ràng chống lại một trong các mẫu ứng dụng tích hợp sẽ được đánh giá cao. (Thậm chí không cần thực hiện ... chỉ cần các bước. Hy vọng rằng sẽ xoa dịu không thể tránh khỏi 'Nó vẫn còn dưới NDA' điều mà mọi người tiếp tục trả lời câu hỏi với.)

Đánh dấu

Trả lời

8

Tôi giải quyết nó. Thông báo thông tin là trong câu hỏi khác của tôi ở đây ...

Stack Overflow: Play iPod music while receiving remote control events

... nhưng phiên bản ngắn gọn là bạn phải sử dụng AVPlayer (nhưng không AVAudioPlayer. Không biết tại sao đó là!) Với URL tài sản từ MPMediaItem bạn nhận được từ thư viện, sau đó đặt thể loại phiên âm thanh thành Playable (KHÔNG cho phép mixable!) và thêm các khóa thích hợp vào tệp info.plist của bạn cho OS biết ứng dụng của bạn muốn hỗ trợ âm thanh nền.

Điều này cho phép bạn phát các mục từ thư viện iPod của bạn (trừ các tệp Audible.com vì một số lý do!) Và vẫn nhận được sự kiện từ xa. Cấp cho bạn phải làm nhiều việc hơn, và vì đây là trình phát âm thanh của bạn tách biệt và sẽ làm gián đoạn ứng dụng iPod (có thể hoặc không được mong muốn. Và một lần nữa, đừng bật tính năng trộn hoặc ứng dụng iPod sẽ chiếm đoạt các sự kiện điều khiển từ xa) nhưng đó là những sự cố!

+0

Cảm ơn bạn rất nhiều vì đã đăng bài này! – genkilabs

+0

Không sao cả. Thực sự bực bội rằng Apple không rõ ràng hơn về những gì đang diễn ra ở đó. Thậm chí nhiều bực bội hơn (mặc dù có thể hiểu được vì lý do DRM) là bạn không thể thực hiện các tệp Audible theo cách này, điều này đã hủy hoại ứng dụng của chúng tôi vì đó là trọng tâm chính. Những gì bạn có thể làm! Tuy nhiên, vui mừng điều này đã giúp. – MarqueIV

2

Đối với bất cứ ai muốn biết, tôi phát hiện ra để có được chơi âm thanh ở chế độ nền, bạn phải thiết lập mục phiên âm thanh của âm thanh nền có thể điều khiển và sau đó làm việc tốt. Nếu bạn cũng muốn chơi âm thanh của riêng mình cùng lúc, bạn phải đánh dấu danh mục là có thể trộn. Điều đó giải quyết phần nhạc nền. Nhưng những gì tôi đã phát hiện ra là bất cứ lúc nào iPod đang chơi, có vẻ như bạn không thể nhận được thông báo từ xa.

Dưới đây là các chủ đề được cập nhật ...

How can you play music from the iPod app while still receiving remote control events in your app?

M

+0

Anh chàng này làm như thế nào ??? Ugh !!! http://www.engadget.com/2010/07/08/ios-4-adds-direct-access-to-itunes-library-iphone-dj-apps-about/ – MarqueIV

+0

Xin chào, bạn làm cách nào để ghi lại âm thanh trong lý lịch? – Namratha

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