Home

Awesome

<p align="center"> <!-- Pocket Casts brand image --> <img src="https://user-images.githubusercontent.com/308331/194037473-41ad7eba-8602-4be5-be73-49e3c0c48c12.svg#gh-light-mode-only" /> <img src="https://user-images.githubusercontent.com/308331/194041226-4c6d8181-cafa-4ea8-8735-1d8106f5e5f6.svg#gh-dark-mode-only" /> </p> <p align="center"> <!-- Badge: "build: {trunk CI status}" --> <a href="https://buildkite.com/automattic/pocket-casts-ios"><img src="https://badge.buildkite.com/6c995de3d1584006341cc4dfda1312619f375385f5c0319dfe.svg?branch=trunk" /></a> <!-- Badge: "license: MPL" --> <a href="https://github.com/Automattic/pocket-casts-ios/blob/trunk/LICENSE.md"><img src="https://img.shields.io/badge/license-MPL-black" /></a> <!-- Badge: "platform: ios|watchos" --> <img src="https://img.shields.io/badge/platform-ios%20%7C%20watchos-lightgrey" /> <!-- Badge: "Xcode: {version}+" --> <img src="https://img.shields.io/badge/Xcode-v15.4%2B-informational" /> </p> <p align="center"> Pocket Casts is the world's most powerful podcast platform, an app by listeners, for listeners. </p>

Setup

If you don't already have it, you need to install Bundler:

gem install bundler

Next you'll need to install all the dependencies needed for CocoaPods and FastLane using this script:

make install_dependencies

External contributors

If you're an external contributor run make external_contributor. After that you should be able to build and run the project.

Swift Formatting

We use SwiftLint to ensure code is spaced and formatted the same way and follows the same general conventions. We have a script that will run it over the whole project.

Once the required dependencies are installed via bundle exec pod install, you can run:

make format

You should do this before making a pull request.

Running

Open the .xcworkspace file, select the Pocket Casts project and the Simulator Device you want to run on, and hit the play button.

Localization

You can learn more about localization at docs/Localization.md

Protocol Buffers

The app uses Google Protocol Buffers to define our server objects.

To update server objects you'll need to install the protobuf command line tool as well as the Swift Protobuf translators. This can be done via Homebrew with:

brew install protobuf
brew install swift-protobuf

To update the protobuf files you can then run:

Replace the {API_PATH} with the full path to the pocketcasts-api/api/modules/protobuf/src/main/proto folder

make update_proto API_PATH={API_PATH}