Skip to content

Morris-Lau/Oto

Oto

Oto is a SwiftUI iOS music app built around the NetEase Cloud Music ecosystem. The current app includes login-aware discovery, search, album/artist/playlist browsing, background playback, lock-screen controls, and offline downloads.

简体中文 README

Screenshots

Oto discover feed with recommendations and mini player Oto full-screen player Oto full-screen lyrics player

Highlights

  • SwiftUI app architecture with shared service singletons for playback, session, downloads, and caching
  • NetEase-backed discovery and personalized shelves
  • Full-screen now-playing experience with lyrics, queue management, and transport controls
  • Offline download flow with persisted playback/download state

Tech Stack

Project Layout

  • Oto/ app source
  • OtoTests/ unit tests
  • Config/ checked-in public-safe config plus local override template
  • fastlane/ release automation

Requirements

  • Xcode 17 or newer with iOS simulator runtimes installed
  • Ruby/Bundler for fastlane workflows

Getting Started

1. Clone the repository

git clone https://github.com/Morris-Lau/Oto.git
cd Oto

2. Install Ruby dependencies

bundle install

3. Optional local signing override

The repository ships with public-safe placeholder identity values in Config/Identity.xcconfig.

If you want to run on a real device or archive/TestFlight-build the app, copy the local override template and fill in your own values:

cp Config/Local.xcconfig.example Config/Local.xcconfig

Then set:

  • APP_BUNDLE_ID
  • APP_TEST_BUNDLE_ID
  • APPLE_DEVELOPMENT_TEAM

Config/Local.xcconfig is gitignored and should stay local.

Build

List the available scheme:

xcodebuild -project Oto.xcodeproj -list

Build for the simulator:

xcodebuild -project Oto.xcodeproj -scheme Oto -destination 'platform=iOS Simulator,name=iPhone 17' build

Test

Run the test target:

xcodebuild -project Oto.xcodeproj -scheme Oto -destination 'platform=iOS Simulator,name=iPhone 17' test

Release

Fastlane lanes:

bundle exec fastlane ios beta
bundle exec fastlane ios upload_testflight

For TestFlight upload you will also need App Store Connect credentials via environment variables or a local setup supported by fastlane/Fastfile.

Privacy and Local Secrets

  • Do not commit Config/Local.xcconfig
  • Do not commit .env, provisioning profiles, signing certificates, or local deploy scripts
  • Keep any device-specific or account-specific configuration in ignored local files only

Contributing

Please read CONTRIBUTING.md before opening a pull request.

Security

Please report vulnerabilities following SECURITY.md.

License

This project is licensed under the MIT License.

Third-Party Software

See THIRD_PARTY_NOTICES.md for dependency license notes.

Acknowledgements

About

A SwiftUI iOS music app for NetEase Cloud Music with discovery, playback, lyrics, and offline downloads.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors