An *Unofficial* Uitzending Gemist application for Apple TV 4
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Apple TV Uitzending Gemist

Build Status Release Commits Since Platform Swift codebeat badge Open Issues Closed Issues

UitzendingGemist is an unofficial native Uitzending Gemist and NPO Live application for the Apple TV 4 developed in Swift. It will allow you to browse and watch all video streams of the Nederlandse Publieke Omroep's (e.g. NPO, the Dutch public broadcaster) Uitzending Gemist website on your Apple TV.

No Signal

NOTICE: Due to the release of the NPO 2.0 website and mobile apps in Spring 2017, the old API this tvOS app relies on was deprecated. As of Januari 2018 the NPO has shut down the deprecated API, which consequently means this tvOS app will cease to work. Please refer to TV Gemist; the project that replaces Uitzending Gemist.


Watching videos is very snappy and almost instantaneous, contrary to streaming from your iDevice to Apple TV over Airplay or using the built-in player in your smart tv. This is a truly native app contrary to some of the other apps that I have seen which are basically webcontainers using a web app hosted on a remote server.


  • Fast native app for Apple TV
  • Confirmed to work abroad via Unlocator (disable the secure transport setting in the configuration view)
  • Easy to use interface for browsing Programs and Episodes
  • Live streaming TV and themed channels
  • The possibility to (un)favorite programs
  • Remembers watched episodes and will allow you to resume watching
  • Will show you new unwatched episodes of favorite programs
  • Closed Captioning for the deaf and hearing impaired (in Dutch)
  • The ability to watch YouTube videos for Programs that have YouTube Resources

Okay, that's all great! But how do I get this on my Apple TV?

Unfortunately the app cannot be distributed in the AppStore as the NPO does not allow third parties in doing so. However, using a free Apple Developer account you can compile it yourself and install it in your own Apple TV 4 (but also read the note below). While this may sound scary and difficult to non-technical users, it's really not that hard if you follow these steps :)


  • an Apple TV 4th or 5th generation (the ones that have an AppStore)
  • run tvOS 10 or 11
  • a recent Apple Computer running macOS 10.11.x El Capitan or higher
  • a (free) Apple Developer account (signup here)
  • a USB-C cable to connect your Apple TV to your Apple Computer

Note: as of summer 2016 Apple has reduced the free Developer account provisioning from 90 days to a mere 7 days, which means when you are using a free Apple Developer Account the application will expire every 7 days after which you need to re-deploy the app (make sure to keep your bundle identifier the same for your favorites to stick). The paid Apple Developer Accounts do not have a time based limitation and deployed apps will continue to work during the lifetime of your subscription.

1. Xcode

The (latest) code was developed in Xcode 9(alternative link) so you need at least to have that version installed. Continue with the following steps when you have finished installing Xcode as the next steps require a finished installation.

2. Download the project

You can either download a zipped distribution (novice) or use Git (advanced).

2.1 Download the zipfile

For novice users it is probably the easiest route to just download the latest zipped version and continue with step 3. After installation to your Apple TV you are safe to delete the downloaded project but keep the Bundle Identifier (see step 5) you used in mind as you will need to use it again when you want to redeploy your app to your Apple TV (in the case of software updates or when your free developer limit (7 days) runs out).

2.2 Using Git

While not required, it is advisable to have a Developer folder on your machine. Execute the following code in Terminal to create those folders and clone this project:

mkdir -p ~/Developer/tvOS
cd ~/Developer/tvOS
git clone
cd UitzendingGemist

If you are not experienced with Git, you can pull new changes using:

cd ~/Developer/tvOS/UitzendingGemist
git fetch
git pull

Instead of using the terminal you can also use a graphical client like SourceTree (generic) or GitHub Desktop (GitHub specific).

3. Open the project

Now that everything is in place, you can open the project file UitzendingGemist.xcworkspace (and not the xcodeproj file)in Finder. Alternatively, when you still have Terminal open you can also execute the following command:

open UitzendingGemist.xcworkspace

4. Connect the Apple TV 4 to your computer

Connect the Apple TV 4 using the USB-C cable to your Mac and perform / click through the following steps in Xcode:

Steps to perform

5. Change the Bundle Identifier

The bundle identifier (see 4 in the screenshot above) uniquely identifies your app. As you cannot reuse mine, you need to set your own bundle identifier in reverse domain format (for example: com.yourname.UitzendingGemist). Make sure you remember the name as you will need to enter the same bundle identifier when you want to update or re-deploy the app to your AppleTV.

Note: using a different identifier will make the app deploy next to a previous installation and separate favorites. Keeping the identifier the same will make the favorites continue to work after updates. Also free Apple Developer Accounts have a limit on the number of different identifiers you can create on a weekly basis (10).

6. Select the team

In order to deploy the application to the Apple TV it needs to be signed with your team (see 5 in the screenshot above). If you do not have a team (e.g. None), or you see the message No Matching provisioning profiles found click the Fix Issue and login with your Apple ID / Apple Developer Account credentials.

7. Select the Build Device

On the top left in Xcode click on the device the compiled program will be deployed to (see 6 in the screenshot above). If your Apple TV 4 is properly connected you will be able to pick you Apple TV device (otherwise it will run in the Simulator).

8. Run the application

Finally you are able to compile the program and deploy it onto your Apple TV! Click the play icon (see 7 in the screenshot above). The application will be compiled and deployed on your Apple TV 4. After this the application will remain on the Apple TV.

Note: if you encounter issues or you are unable to play, this is where you should debug what it going on. Observe the Xcode console output while leaving your Apple TV connected. Alternatively you can also run in the simulator (see 6 in the screenshot above) and observe the Xcode console output to debug the issues you are experiencing.

9. Sit back and enjoy :)

You're done! You can disconnect your Apple TV and start watching! :)


If you have set up a firewall to filter outbound network requests, make sure to configure it to allow the following URL patterns you can expect the app to call (also see #18):

  • (the API)
  • (check for new releases)
  • * (images, videos and live streams)
  • (youtube API)
  • (youtube videos)
  • (determine your country by ip)

Note: as the video and image content URLs come from the APIs, although unlikely, these URLs might change


Application Icon

App Icon

Application screen with Application Icon and Top Shelf image

Main Screen

Tip Screen

Tip Screen

Episode Screen

Episode Screen

Continue Watching

Continue Watching

Program Screen

Program Screen

By Day Screen

By Day

By Program Screen

By Program

Live TV Screen

Live TV

Update Screen

Update Screen

Program with a YouTube channel

Several programs have additional YouTube content available.

YouTube Button

YouTube Channel

Content Availability

Content that is geographically restricted will show a warning then you are outside of The Netherlands. While the play button remains enabled you will most likely be unable to watch the video. If you encounter such warnings and are unable to play the respective videos, you might give Unlocator a try. It has been confirmed to work reliably with the Uitzending Gemist tvOS app when you disable the secure transport setting in the configuration screen (see below).

Region Check


When using Unlocator outside of The Netherlands, disable the secure transport setting (which is enabled by default).


Closed Captioning

When closed captioning is enabled in the configuration screen (see above), all content will be subtitled (when available).

screen shot 2017-03-22 at 22 32 26


See the accompanying LICENSE and NOTICE files for more information.

Copyright 2016 Jeroen Wesbeek

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.