ReplayKit's RPSystemBroadcastPickerView not showing preferredExtension

replaykit unity
replaykit github
replaykit camera
replaykit-compatible games
replaykit demo
ios replaykit permissions
replaykit simulator
how to use replaykit

I am using RPSystemBroadcastPickerView to show a picker view, from which a user can select a broadcast service to record the screen. Based on documentation, preferredExtension should allow me to set which broadcast extension should the picker show.

The code is super simple:

let broadcastPickerView = RPSystemBroadcastPickerView(frame: CGRect(x: 0, y: 0, width: 51, height: 51))
view.addSubview(broadcastPickerView)
broadcastPickerView.preferredExtension = "com.milan.nosal.broadcast-extension"
broadcastPickerView.backgroundColor = .clear
broadcastPickerView.showsMicrophoneButton = false

where "com.milan.nosal.broadcast-extension" is the bundle identifier of the extension I want the picker to offer (I checked its correctness multiple times).

However, when the control is tapped, at first the pop up shows empty selection:

After you close it, and tap the control again, it shows the correct extension. This only happens when the app is installed (or reinstalled), after it shows, then it shows always.

Is this the iOS 12 beta bug, or am I doing something incorrectly? Can I "preregister" the extension to work around this?

EDIT:

After publishing the app, we encountered the same problem with our users, but this time not even tapping the control multiple times helps - the picker is always empty! It seems that the extension is installed correctly, because it can be launched from control center.

Running on official release now.

I think it is the apple's bug, but it was fixed in iOS 12.2 after I tested it.

Live Screen Broadcast with ReplayKit - WWDC 2018, ReplayKit 2 provides built-in services for broadcasting your screen from iOS and tvOS to viewers online. See how broadcasts can be Download ReplayKit v1.28 for free. Repairs unviewable 'Warcraft 3 Replays' NOW SUPPORTS WARCRAFT 1.28 Do you love watching Warcraft III replays but hate all the obstacles like patching and finding renamed maps? Then try ReplayKit!

I have the same issue, looks like Xcode has some issues how to install broadcastExtension with you app. For me, It is related only for Debug mode. To see correct UI, try to enable broadcasting once in old way (control center -> deep touch -> start broadcast), after that in your BroadcastPickerView you will see correct UI (you are pushing iOS to update information about the extension). Cannot reproduce in release mode.

Introduction to ReplayKit: Building a Simple Screen Recording App , That is why Apple announced ReplayKit at WWDC15 along with iOS 9. ReplayKit is an incredible API which makes it extremely simple for  ReplayKit allows you to record the audio and video of your game, along with user commentary through the microphone and user video through the camera. Start a recording with the StartRecording () function, and stop it with StopRecording ().

You can find your exactly preferedExtension here:

When you add pickerView.preferredExtension exactly the Bundle Identifier, your app will be showed on the Recording App List. Hope this helps!

YouTube for iOS can now live stream ReplayKit apps and games , YouTube for iPhone and iPad now supports Apple's ReplayKit for live streaming iOS apps Duration: 8:18 Posted: Sep 5, 2017 ReplayKit allows you to record the audio and video of your game, along with user commentary through the microphone. Start a recording with the StartRecording () function, and stop it with StopRecording (). You can preview the recording with the Preview () function, which launches a separate video viewer.

If I do not set ".preferredExtension", I see all extensions on the list. I tested on iOS12 GM.

Getting started with screen recording with ReplayKit on iOS 11, ReplayKit is now not limited just to games but it has been extended throughout the system, meaning - you can record apps, broadcast in-app content, and even  One of the best things about the iPhone is how great it is to play games with. It’s awesome to think that you can play near home console level games on a device that fits in your pocket. However, games get even greater when you can show your friends how amazing you are at playing them! That’s why the geniuses in Cupertino created ReplayKit.

How to record user videos using ReplayKit, ReplayKit is one of many useful social media features built into iOS, and it's trivial to add to your projects. What's more, it's not just for games – you  ReplayKit is an iOS framework available from iOS 9 that provides the ability to record video, audio and camera within an app or game.

ReplayKit: Screen Recording, Today we go over how to do in-app screen recording with ReplayKit using Swift 3​. This is a Duration: 18:15 Posted: May 28, 2017 Run ReplayKit.exe and complete the installation Afterwards you can start your replays by double clicks on the files. Have fun :) If you ran into any trouble, check out the detailed guide with solutions for common issues

Use ReplayKit to record any app on screen, From the docs: Apps on a user's device can share the recording function, with each app having its own instance of RPScreenRecorder. replaykit is a command line tool intended for mobile continuous integration, which provides the ability to: record touchscreen events from one device and replay to many (aspect ratios must be the same) control multiple devices concurrently (e.g., run a shell command, install an app, etc.)

Comments
  • looks like it's a bug in final iOS 12 as well.
  • For us, this does not happen only in debug. If this was not happenning for us in production, I would not care.
  • @MilanNosáľ Do you have scenario, when once you are started broadcast in old way and after that you cannot reproduce the issue?
  • I really really do not want to tell all the users to first go to control center, etc. - that beats the whole purpose of RPSystemBroadcastPickerView which was supposed to help starting system-wide replay kit broadcast from within the app without having to go through control center..
  • As a fast way solution, I can suggest to you to do first showing of the picker view without 'preferredExtension' property to show all providers and for all other cases use 'preferredExtension' property. You can use UserDefaults to save information about first loading of the 'RPSystemBroadcastPickerView'. Any way you need to notify apple about the behavior on bugreport.apple.com. @MilanNosáľ .
  • This does not answer the question - I need the preferedExtension property to work correctly
  • With preferredExtension, replayKit does not provide a way to select extensions. Without preferredExtension, ReplayKit provide a way to select extensions from list. "preferred" is misleading word. It should be "targetExtension", because user does not have choice to select.