Mac Media Keys

As of version 2.9.17, Downcast for Mac can finally be controlled using an Apple keyboard's media keys. Since Apple still doesn't permit sandboxed apps to control the media keys, we have to do this with the help of a free 3rd party app called BeardedSpice. This app acts as a system wide controller for your media keys, passing media key press events to the appropriate application whether it's Downcast, Spotify, iTunes or some other app.

For more info on BeardedSpice and for install instructions, head over to their website and download the latest version, which includes support for Downcast.


Upcoming changes

Sorry for the long break, I've been busy working on the next major version of Downcast, v3.0. For the initial release of v3.0 my focus is modernizing the UI and underlying codebase changes that will reduce bugs, improve performance, and make adding features and making changes a far less time consuming process. Downcast has been playing catchup with iOS and macOS releases for a while now and v3.0 should help to break that cycle. After the initial release, the plan is to push out some other significant improvements as quickly as possible.

Notable changes in v3.0:

  • Universal and modernized UI for iOS
  • Full support for dynamic type
  • Variable height table rows
  • Alternate dark color scheme
  • Improved PIP support on iPad
  • Improved performance and reduction in memory related crashes
  • Better organized settings
  • Support for browsing episode chapters in the episode details view
  • Improved playback speed control
  • Improved sleep timer
  • Improved Help & Feedback section


After v3.0 (In order of priority)

  • CloudKit transition (v3.1)
  • Manual playlists (v3.2)
  • Localization (v3.3)
  • Something really cool (more later)
  • Watch app upgrade
  • Apple TV
  • Anything else...


Maintenance Releases & iOS 10 - There will be a maintenance release prior to the release of v3.0. This will mainly be meant to deal with any issues encountered during the iOS 10 beta releases or any other minor bug fixes I can squeeze in.


iCloud Syncing Changes

A number of syncing improvements are being introduced in v2.9.13. Performance and reliability are the focus. Both the iOS and Mac apps are receiving the same treatment.

Part of the changes include a slight change in the location Downcast stores it's iCloud data. This will prevent older versions of Downcast from syncing with v2.9.13+. It's important that you upgrade all of your devices if you want them to continue syncing with each other. I didn't want to do this, but a specific iCloud related behavior required this in order to fix one of the biggest syncing issues Downcast currently has. The most notable changes are detailed below...

Switch to data scope

iCloud Documents & Data has two scopes: documents scope and data. That's fancy terminology for two different directories in an app's iCloud container that have slightly different behaviors. IOW, documents scope covers any file stored in <iCloud Container Folder>/Documents, data scope covers any other location in your iCloud container besides the Documents folder.

There are two primary differences between these two scopes...

Difference 1 - Duplicate file handling

When an app isn't yet aware of a file that exists in iCloud, there is no 100% reliable way to determine this, it is possible to generate a local file by the same name. When this happens in the documents scope, a new file is created with a numeric suffix. In the data scope, a conflicting version of the same file is created instead. The latter allows you to treat duplicates as conflicts rather than separate files.

Until now, Downcast was storing it's iCloud data in the documents scope. This sometimes lead to different instances of Downcast potentially updating different copies of Downcast's iCloud data until both instances were killed and restarted. This led to syncing issues. There are ways to deal with this but it is far more miserable than simply dealing with conflicting versions per usual. In v2.9.13, Downcast uses the data scope to store its iCloud data. This immediately translates into far more reliable behavior.

Difference 2 - iCloud's Manage Storage UI

In the Manage Storage UI in iOS, the files stored in the documents scope are revealed. This UI allows you to delete individual files manually. Nothing about the data scope is revealed in this UI. Deleting something from the data scope means deleting everything in the data scope. This is fine for Downcast. Our original iCloud reset instructions called for manually deleting each file in the manage storage UI, but now you'll need to choose Delete All Documents & Data instead. However, you really shouldn't need to do this at all going forward. The end of the numerically suffixed files mentioned above should remove the need to delete this data. I'll probably make this an option from within the app itself in the future.

Throttling

I don't know how long this has been going on, but it has recently become clear that iCloud uses pretty aggressive throttling when uploading changed documents. It seems that updating a document just a few times within a few minutes is enough to trigger this. Depending on the frequency of updates, iCloud may postpone uploading a document for several minutes. This increases the risk of a conflict. To reduce the frequency of this, Downcast now conservatively throttles its own updates to this data. It will improve the problem but not solve it.

If you feel like nothing is syncing from one device to another, iCloud may be throttling you. Check the iCloud Syncing options view in Downcast to see if any options are stuck on Uploading (x%). If they are, you're being throttled. It's best to just be patient and avoid actively using Downcast on another device until the throttling period is over.

Other changes

  • The current status of each sync option is now exposed on Downcast's iCloud Syncing options view.
  • The iOS & Mac apps now share the same syncing code. This makes a lot of things easier, including the transition to CloudKit.
  • Improved conflict resolution.
  • Downcast's sync data is now compressed on disk.
  • When iCloud isn't available or if iCloud has failed to make Downcast's container available, the sync options view will indicate as much and suggest how to resolve the issue. This replaces the error alert you'd previously get when trying to initialize one of Downcast's syncing options in this scenario.

What about CloudKit?

Still working on it and it will still happen. As usual, it is taking longer than expected, but it has to be done correctly. The changes detailed above only make this easier. More on this later...


Publishers and user-agents ⟶

When an application makes a request for a web resource, it includes a user-agent string in that request to identify itself to the server. The server may use this for any number of reasons like serving up mobile vs desktop versions of websites, analytics, etc. [more]

CarPlay ⟶

Downcast's CarPlay support is currently awaiting review now available in the App Store! This is an exciting addition for Downcast. You've been asking for this for a long time and it's finally here. [more]

A few notes on App Store reviews ⟶

App Store reviews affect sales, no doubt. That's why so many apps have a nag screen begging for ratings. Downcast won't do that in the app since it's annoying, but it doesn't mean I don't want your positive review or 5-star rating! [more]

Tips - A Way to Support Downcast ⟶

Downcast has always been one of the most inexpensive podcast clients available despite its long list of features. I’d like to keep it that way but it needs to generate more revenue in order to continue adding the features podcast listeners want and expand to other platforms. [more]

Downcast in 2016... ⟶

Downcast had its ups and downs in 2015. I took over development & support at the beginning of 2015 and it has been a learning experience. An Apple Watch app was introduced and our iOS player UI was overhauled. The player UI change brought with it some painful bugs but now that the worst of them are resolved, Downcast is in a much better position to be improved going forward. [more]