Table of Contents
Xây dựng một trình chơi nhạc tự chọn cao cho iOS
Phát triển một máy chơi nhạc tùy chỉnh cho iOS đi xa hơn là bao bọc [FLT: 0] trong một cái nút vui chơi. Người dùng mong đợi phát lại nền không liền mạch, sự kết hợp giàu có, hỗ trợ phát nhạc, máy chơi không khí và điều khiển đáp ứng cảm thấy bản xứ. Hướng dẫn này dẫn này đi qua việc tạo ra một trình chơi nhạc sẵn sàng với điều khiển nâng cao bằng cách sử dụng bộ điều khiển (LKLKT), UI Kit và khung hiện đại như [FL:1]. Chúng tôi sẽ bao gồm cấu trúc, nền, thiết kế, điều khiển âm thanh, điều khiển từ xa, và điều khiển âm thanh, và chỉnh độ mở rộng để bạn có thể gửi một ứng dụng lên phần bổ sung.
Kiến trúc lõi: Bí mật hóa
Mỗi máy chơi nhạc tùy chỉnh trong iOS bắt đầu với AVFFlution ). Lớp người chơi chính (để truyền tải và tập tin địa phương) và (cho phát lại âm thanh đơn giản hơn). Đối với người chơi trọn bộ, Trình chơi [FLT:] là người chơi đa năng [FLT] tốt hơn vì nó hỗ trợ sự lựa chọn truyền tải, thời gian và không khí và chế độ nền.
Thiết lập cách nhập tên
Tạo một hạng dịch vụ giữ . Việc này đảm bảo trạng thái phát lại dai dẳng qua bộ điều khiển xem. Cấu hình người chơi bằng địa phương hay từ xa:
import AVFoundation
class MusicPlayerManager {
static let shared = MusicPlayerManager()
let player: AVPlayer
private init() {
player = AVPlayer()
configureAudioSession()
}
func play(url: URL) {
let item = AVPlayerItem(url: url)
player.replaceCurrentItem(with: item)
player.play()
}
}
Luôn luôn đặt kiểu phiên chạy âm thanh . playback vì vậy người chơi tiếp tục làm việc khi điện thoại bị khóa hay trong chế độ im lặng. Tính năng này bắt buộc cho bất kỳ ứng dụng âm nhạc nào.
Quản lý nước chơi
Dùng KVO (Key-Value) để phản ứng với của của khi xem lại khi bạn thay đổi trạng thái phát lại (đã ngừng, tạm dừng, chờ đợi mạng). Việc quan sát của [FLT:] có khả năng lái con trượt và nhãn thời gian chạy nhanh .
Thiết kế giao diện người dùng bằng ngôn ngữ chạyName
Trong khi UIKit là người trưởng thành, [FwiftUI cung cấp nhanh hơn và cú pháp cắt giảm hoàn hảo cho các máy chơi nhạc UIs. Tạo một bố trí sạch với nghệ thuật album, theo dõi thông tin, con trượt tiến trình, kiểm soát âm lượng và nút phát lại.
Thành phần giao diện người dùng khoá
- Xem Nghệ thuậtAlbum) – chứa tác phẩm từ một địa chỉ URL từ xa hay tài sản địa phương.
- Nhãn hiệu Track and Artist ) – văn bản động mà cập nhật qua thuộc tính theo kiểu xem.
- Con trượt ) — một phong tục được tạo theo dõi và màu sắc ngón cái, được gắn liền với thời gian hiện tại của người chơi.
- Volume Slider ) – dùng khi mục tiêu âm lượng hệ thống, hoặc xây dựng một con trượt tự chọn đặt ( Ghi chú: âm lượng hệ thống được ưu tiên cho độ nhất quán).
- Play/Puse, tiếng tiếng tiếng người, tiếng trái – rõ ràng nhãn, với phản hồi haptic trên liên lạc.
Dùng để thích nghi với kích cỡ màn hình khác nhau, đặc biệt là với các tác phẩm album có kích cỡ rất chuẩn trên iPad.
Kết nối UI tới máy chơi
Hãy để mô hình xem của bạn phù hợp với và xuất bản các bài hát hiện thời, phát lại thời gian và chơi các nhà nước.
class PlayerViewModel: ObservableObject {
@Published var currentTime: TimeInterval = 0
@Published var isPlaying = false
@Published var currentTrack: Track?
// … bindings to MusicPlayerManager
}
Dùng và hoặc định kỳ quan sát để cập nhật một cách trơn tru.
Kết hợp điều khiển từ xa và hiện đang chơi thông tin
Một người chơi nhạc chuyên nghiệp phải đáp ứng các sự kiện điều khiển ( mắc khóa màn hình điều khiển, điều khiển giữa, Apple Watch, AirPods) và trình bày “Giờ đây, việc này được thực hiện qua [FLT: 0]MP Now InfoCenter [FLT: 1] và [FLT: 2] reemoteCenter [FLT:].
Thiết lập lệnh từ xa
Trong hoặc bộ quản lý máy chơi nhạc của bạn, cấu hình trung tâm điều khiển từ xa sau khi phiên chạy âm thanh được kích hoạt:
import MediaPlayer
func setupRemoteCommands() {
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.playCommand.addTarget { [weak self] _ in
self?.player.play()
return .success
}
commandCenter.pauseCommand.addTarget { [weak self] _ in
self?.player.pause()
return .success
}
commandCenter.nextTrackCommand.addTarget { [weak self] _ in
self?.skipToNext()
return .success
}
commandCenter.previousTrackCommand.addTarget { [weak self] _ in
self?.skipToPrevious()
return .success
}
commandCenter.changePlaybackPositionCommand.addTarget { [weak self] event in
guard let event = event as? MPChangePlaybackPositionCommandEvent else { return .commandFailed }
self?.player.seek(to: CMTime(seconds: event.positionTime, preferredTimescale: 1000))
return .success
}
}
Hãy bật chế độ nền trong dự án Xcode: chọn mục tiêu, ký tên và phụ kiện, thêm vào “các chế độ nền, và kiểm tra“ máy bay, máy bay và hình ảnh trong Hình ảnh.
Cập nhật thông tin đang chạy
Mỗi khi đường ray thay đổi hoặc phát lại trạng thái cập nhật, hãy gọi với từ điển chứa các phím như , , , , , và .
Âm thanh nền điều khiển bằng âm thanh
Cấu hình phiên chạy âm thanh một lần khi khởi chạy:
func configureAudioSession() {
do {
let session = AVAudioSession.sharedInstance()
try session.setCategory(.playback, mode: .default, policy: .longFormAudio)
try session.setActive(true)
} catch {
print("Failed to set audio session: \(error)")
}
}
Để biết các ứng dụng thu âm hoặc sử dụng giọng nói, hãy cẩn thận với loại nhạc cụ.
Điều khiển cấp cao: Đồng bộ, danh sách phát nhạc và phát không khí
Một khi các yếu tố cơ bản hoạt động, hãy phân biệt người chơi với các tính năng nâng cao.
Trình cân bằng đồ họa
Dùng với để áp dụng một bộ phân cách 10 băng hay tùy chỉnh. Điều này đòi hỏi phải thay thế với một phương pháp tiếp cận [FLT: 38] động cơ. Tài liệu của Apple trên cung cấp mã mẫu. Có sẵn ban sẵn ban nhạc (Rock, Pop) và cho phép con trượt tự chọn.
Quản lý danh sách phát nhạc
Lưu danh sách nhạc trong Dữ liệu Core hoặc Bộ xử lý Thông tin. Mỗi danh sách phát âm chứa một danh sách các URL theo dõi (từ xa hay xa). Thiết lập kéo và thả xuống (FLT:40) hoặc . Hỗ trợ tải xuống để tải về bên ngoài ứng dụng.
Thiết bị phát sóng và ngoài
tự động hỗ trợ AirPlay khi phiên chạy âm thanh được thiết lập và đường đi sẵn sàng. Để điều khiển tốt, hãy dùng bộ chọn đường hoặc (iOS 11+). Cung cấp bật lại để chỉ bật/tắt khi cần thiết.
Comment
Hãy theo dõi những mẹo này để giữ cho ứng dụng này nhanh và thân thiện với pin.
- Bảo vệ tập tin với các cấu trúc ) – dùng các công cụ đo thời gian và lõi để phát hiện sự tắc nghẽn chính. Tránh cập nhật UI nặng trên mỗi khung; cập nhật thiết bị con trượt nóng đến ~30 FPS.
- Trích dẫn Stratey ) – đặt trên để cân bằng thời gian khởi động chống lại việc sử dụng bộ nhớ. Giá trị 10 giây hoạt động cho hầu hết dòng.
- Quản lý bộ nhớ – khi chuyển đổi dấu vết, phát hành mục cũ và ảnh vẽ. Hãy dùng để vẽ tập ảnh.
- [FLT: 0] Phụ trách sụp đổ ) — bảo đảm người quản lý không thỏa thuận khi chơi. Hãy dùng tài liệu tham khảo mạnh và phục hồi lại nếu cần.
Comment
Trình mô phỏng không thể kiểm tra chính xác âm thanh nền, AirPlay, hay kiểm soát âm lượng. Luôn luôn kiểm tra trên iPhone và iPad vật lý chạy phiên bản iOS khác nhau. Kiểm tra xem trung tâm điều khiển cập nhật đúng và màn hình khoá hiển thị nghệ thuật tập ảnh.
Những thực hành tốt nhất cho sự phát triển của người chơi nhạc iOS
Lấy từ kinh nghiệm sản xuất nhiều năm, đây là những lời khuyên bổ sung.
- Mở rộng ) – dùng lười biếng nạp cho danh sách nhạc lớn và công thức mã tiền phân loại kích cỡ mẫu ảnh.
- Viết tắt của UI ) – theo các chỉ dẫn của hệ thống con người của Apple cho phát lại phương tiện truyền thông. Hãy dùng biểu tượng hệ thống cho hành động như xáo trộn và lặp lại.
- Dịch phụ đề: QKK [FLT: 1] – lắng nghe và tạm dừng/gấp bênh. Hiển thị một số sự ngắt quãng tạm thời nếu có cuộc gọi đến.
- Quyền riêng tư ) — chỉ yêu cầu cho phép microphone nếu bạn thật sự cần (v. d., lệnh giọng nói). Luôn luôn giải thích tại sao.
- [FLT: 0] Khả năng truy cập – nhãn tất cả các nút, hỗ trợ tiếng nói bên trên, và chọn kiểu động để nhãn.
Kết luận
Xây dựng một máy chơi nhạc có điều khiển tùy thích cao ) nhưng đòi hỏi sự chú ý đến chi tiết trong quản lý phiên chạy âm thanh, sự kết hợp điều khiển từ xa, và sự đáp ứng ULT. Bằng cách điều khiển [FLT: 0] [FLT: 1], ), [FLT: 1 ứng dụng mà có thể tạo ra một ứng dụng mà nghe bóng loáng. Bắt đầu với người chơi, phát âm thanh, rồi phát âm thanh thêm các tính năng như các lớp và các thiết bị phát âm thanh khác, và các thiết bị mở rộng.
Để đọc thêm, hãy khám phá khung của Apple , và hướng dẫn ) ) ) ). Những nguồn tài nguyên này sẽ giúp bạn xử lý những trường hợp cạnh và cung cấp một sản phẩm mạnh.