Post not yet marked as solved
After some further investigation, it turns out that the HEVC video gets transcoded into MPEG-4, even though we've configured our PHPickerViewController as follows:
var configuration = PHPickerConfiguration()
configuration.selectionLimit = 0
configuration.preferredAssetRepresentationMode = .current
return PHPickerViewController(configuration: configuration)
We're loading the file using itemProvider.loadFileRepresentation(forTypeIdentifier: "public.movie"), which I believe should be correct.
A few interesting findings:
If I Airdrop the file to my Mac, it remains being HEVC and keeps the correct size
If I load that file into the Xcode Simulator and add it to our app running in the Simulator, transcoding is not taking place
The latter is especially interesting: What is the difference between the file on the device vs. the file in the Simulator after airdropping? Why does transcoding take place on device and not in the Simulator?
I'd almost say there's some kind of device setting or iCloud influencing the result, but at this point, I've got no clue. Looking forward to get your thoughts!
Post not yet marked as solved
Thanks for those insights! It seems that there's still a scenario. We've been able to reproduce the user's behavior as follows:
Create a video in GoPro Quik
Export it to the Photos app
Import it into the WeTransfer app <- This is where we use PHPickerViewController in combination with .current
Notice a difference in file size as reported by the Photos app
Even though the video is locally stored (not in iCloud), a "Preparing..." progress popup appears. That indicates transcoding is happening.
I've attached a few screenshots to indicate our issue.
Could it be that there's still some kind of setting we're missing to indicate our app allows any kind of file to be added?
Post not yet marked as solved
When I deactivate an extension I still see it in systemextensionsctl list but it’s flagged as deactivated
I see the same; the extension is deactivated. However, my app is still installed in /Application with the deactivated extension. Re-running from Xcode 14.2 and macOS 13.2.1 (22D68) I couldn't get my new build to execute.
I did find another way to solve it without restarting:
Remove application from /Applications
Press continue to confirm it will delete the app's extension
Clean my Trash bin
Re-run the app
This is a quick enough timeline, but obviously, ideally, I would just re-run from Xcode and have my latest Network Extension code working.
Post not yet marked as solved
Is your start method called? What about your stop method? If so, what’s do you see passed to the reason parameter?
I managed to find the cause, I was using true for both:
let providerConfiguration = NEFilterProviderConfiguration()
providerConfiguration.filterSockets = true
providerConfiguration.filterPackets = true
After changing filterPackets to false my extension didn't stop anymore!
I’m not sure I undertand this question. However, the code snippet you posted in reasonable enough.
Perfect, that's all I need to know right now! After my extension started working, I was able to disallow all incoming requests and verified my concept.
Btw, I found a small improvement in your guideline: https://developer.apple.com/forums/thread/725805
The next issue you’ll find is that choosing Product > Run runs the app from the build products directory rather than the Applications directory. To fix that:
Edit your app’s scheme again.
On the left, select Debug.
Debug was a bit unclear to me at first. I would better understand this if it was named Run.
Btw, your instructions helped big time!
Post not yet marked as solved
For the ones that like to have this functionality, I've created RocketSim 6.0. It allows creating screenshots with bezels, as well as recordings.
You can now join the beta:
https://testflight.apple.com/join/ORz3QWRv