{"id":25118962,"url":"https://github.com/srgssr/castor","last_synced_at":"2026-04-10T10:04:11.968Z","repository":{"id":274460846,"uuid":"921724926","full_name":"SRGSSR/castor","owner":"SRGSSR","description":"An SDK for delightful Google Cast integration on iOS","archived":false,"fork":false,"pushed_at":"2025-04-17T08:53:13.000Z","size":3556,"stargazers_count":5,"open_issues_count":15,"forks_count":0,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-17T23:56:40.076Z","etag":null,"topics":["audio","cast","google-cast","hls","ios","media","playback","player","reactive","streaming","swift","swiftui","video"],"latest_commit_sha":null,"homepage":"https://testflight.apple.com/join/3DMfy33Y","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SRGSSR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-24T13:53:08.000Z","updated_at":"2025-04-17T08:53:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"9f0f9af1-9206-4623-8548-2f41fa44968c","html_url":"https://github.com/SRGSSR/castor","commit_stats":null,"previous_names":["srgssr/castor"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRGSSR%2Fcastor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRGSSR%2Fcastor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRGSSR%2Fcastor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRGSSR%2Fcastor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SRGSSR","download_url":"https://codeload.github.com/SRGSSR/castor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250301346,"owners_count":21408149,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","cast","google-cast","hls","ios","media","playback","player","reactive","streaming","swift","swiftui","video"],"created_at":"2025-02-08T04:23:30.584Z","updated_at":"2026-03-10T11:14:11.451Z","avatar_url":"https://github.com/SRGSSR.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable-next-line MD041 --\u003e\n[![Castor logo](docs/README-images/logo.png)](https://github.com/SRGSSR/castor)\n\n# Overview\n\n[![Releases](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2FSRGSSR%2Fcastor%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/SRGSSR/castor) [![Platforms](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2FSRGSSR%2Fcastor%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/SRGSSR/castor) [![SPM compatible](https://img.shields.io/badge/SPM-compatible-4BC51D.svg?style=flat)](https://swift.org/package-manager) [![GitHub license](https://img.shields.io/github/license/SRGSSR/castor)](LICENSE) [![TestFlight](https://img.shields.io/badge/%EF%A3%BF-TestFlight-499ae4?link=https%3A%2F%2Ftestflight.apple.com%2Fjoin%2F3DMfy33Y)](https://testflight.apple.com/join/3DMfy33Y)\n\nCastor is an SDK for easy [Google Cast](https://developers.google.com/cast) integration in iOS applications.\n\n# Features\n\n- Ready-made standard player, mini player, and device selection views for effortless integration.\n- First-class integration with SwiftUI for effortless custom view integration.\n- APIs for device discovery and playback management, focusing on fast and responsive UI updates.\n- Built-in support for transitions between local and remote playback.\n- Playlist management.\n- Support for alternative audio tracks and subtitles.\n- Volume management.\n- Metadata support.\n- Animated Cast button and icon.\n- Playback speed controls.\n- Looping playback.\n\n# Showcase\n\n[![Showcase](docs/README-images/showcase.png)](https://github.com/SRGSSR/castor)\n\nFrom left to right:\n\n- Screenshot 1: Standard device selection view.\n- Screenshot 2: Standard mini player view.\n- Screenshots 3, 4 and 5: Standard player view, including playlist management and playback settings menu.\n\n# Compatibility\n\nThe library is suitable for applications running on iOS 16 and above.\n\n# Integration\n\nThe library can be integrated using [Swift Package Manager](https://swift.org/package-manager) directly [within Xcode](https://developer.apple.com/documentation/xcode/adding_package_dependencies_to_your_app). You can also declare the library as a dependency of another one directly in the associated `Package.swift` manifest.\n\n# Documentation\n\nCastor documentation includes articles, tutorials and an API reference to help you learn more about available features and how to integrate them into your application.\n\n\u003e [!TIP]\n\u003e If you discover errors in the documentation or if some documentation is missing please file a dedicated [issue](https://github.com/SRGSSR/castor/issues/new/choose). You can also directly submit documentation improvements via [pull requests](https://github.com/SRGSSR/castor/compare).\n\n## DocC documentation\n\nDocumentation is available as a [DocC](https://developer.apple.com/documentation/docc) documentation catalog. This catalog must be built by opening the project with Xcode and selecting _Product_ \u003e _Build Documentation_. You can then access it right from within the Xcode documentation window.\n\n## Online documentation\n\nDocumentation for Castor can also be found online on [Swift Package Index](https://swiftpackageindex.com/SRGSSR/castor/documentation/castor).\n\n\u003e [!TIP]\n\u003e Documentation available from the above link opens for the latest tag. Use Swift Package Index navigation top bar to quickly switch to another tag or `main`.\n\n## Miscellaneous documentation\n\nFurther documentation is also available by following the links below:\n\n- [Known issues](docs/KNOWN_ISSUES.md)\n- [Continuous integration](docs/CONTINUOUS_INTEGRATION.md)\n\n# Plugins\n\nThe package provides a single plugin which automatically inserts correct versioning information into binaries. This plugin must be trusted interactively when a project integrating Castor is built using Xcode for the first time.\n\nOn a continuous integration server you must trust plugins automatically by setting an appropriate default:\n\n```shell\ndefaults write com.apple.dt.Xcode IDESkipPackagePluginFingerprintValidatation -bool YES\n```\n\nIf you are using Xcode Cloud this can be achieved with a [custom build script](https://developer.apple.com/documentation/xcode/writing-custom-build-scripts).\n\nIf your project is built with `xcodebuild` directly the same effect can be achieved by passing the `-skipPackagePluginValidation` option.\n\n\u003e [!IMPORTANT]\n\u003e Build services such as GitHub Actions, Bitrise, CircleCI, and Travis CI often provide caching mechanisms to accelerate CI/CD pipelines, including caching Swift package sources. Castor leverages Git tags from its package repository to automatically determine the correct version. However, this process depends on having up-to-date local tags, which may not be guaranteed when a package cache is used.\n\u003e\n\u003e To ensure accuracy and reliability, we recommend performing clean builds when delivering your application via a delivery pipeline. Caches can still be utilized for routine continuous integration tasks to save time during development.\n\n# Contributing\n\nIf you want to contribute to the project have a look at our [contributing guide](docs/CONTRIBUTING.md).\n\n# License\n\nSee the [LICENSE](LICENSE) file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrgssr%2Fcastor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsrgssr%2Fcastor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrgssr%2Fcastor/lists"}