Post

Replies

Boosts

Views

Activity

Qualify Mac Build for TestFlight
I want to upload a MacOS App to App Store Connect and have it be available to test in TestFlight. I have already managed to sign the application as needed, as I can upload builds. The problem is, that they get marked as "Not Available for Testing". At first App Store Connect notified me of this issue: "ITMS-90889: 'Cannot be used with TestFlight because the bundle at “RougeLike.app” is missing a provisioning profile. Main bundles are expected to have provisioning profiles in order to be eligible for TestFlight.'" I added a provisioning profile to the app bundle at Contents/embedded.provisionprofile. Now I don't get this notification anymore, but the app still is marked as "Not Available for Testing". Does anybody know how to solve that?
1
0
1.2k
Jan ’22
App can't start because of broken/unverifiable dylib
I have an MacOS App that get's accepted by Transporter/App Store Connect and is available to download in TestFlight. The App also installs fine. But when I try to open it I get this error: “libgdx64.dylib” can’t be opened because Apple cannot check it for malicious software. This software needs to be updated. Contact the developer for more information. When I click "Show in Finder" I get taken to this folder: /private/var/folders/cs/bqb_3kr17f35kbtv34cw7s700000gn/T/<AppBundleID>/libgdxmayr/231c5cdb/libgdx64.dylib When I try to pen this file in any capacity, e.g. in a hex editor, I get this error: “libgdx64.dylib” is damaged and can’t be opened. You should move it to the Bin. This is weird to me for multiple reasons. When I compare(with the diff command) the file to the original file in the package I sent to App Store Connect, there is no difference at all. And when I manually replace the broken file in the /private/var/folders/... directory with the working one, the file still gets marked as damaged, even though it worked a second earlier outside of that location. The file actually gets copied to two other places as well. 1: /private/var/folders/cs/bqb_3kr17f35kbtv34cw7s700000gn/T/<AppBundleID>/231c5cdb259220476539382411.tmp This also is on a byte level the exactly same file as libgdx64.dylib. 2: /Users/mayr/Library/Containers/69A9AB69-9ECB-4B55-A715-1A28FC7168B6/Data/.libgdx/231c5cdb/libgdx64.dylib This location specifically seems to be a App Sandbox location, so I suppose the whole problem has to do with the Sandbox. More Context: The file libgdx64.dylib originally lives in a jar file in the Apps Resources folder. The file belongs to a java game engine framework, called libgdx. I have signed it myself and the signature persists, even to the 3 broken files. No other files neither in my own code, nor from the framework, get copied anywhere. Only this specific dylib behaves this way. When I click "OK" on the first popup, two others appear, for the other two files I mentioned earlier. If I say OK to all of them and approve all of them in the System Settings -> Security & Privacy Settings, the app starts as it normally would. So maybe it is also a signing issue, but as I wrote, I signed the file and the signature is visible on the broken files.
6
0
3.2k
Jan ’22
How to use AVDelegatingPlaybackCoordinator?
I want to create a SharePlay Application that plays a video without using AVPlayer. From what I have found in the documentation I think I should use the AVDelegatingPlaybackCoordinator. But I can't get it to work. I have created an AVPlaybackCoordinatorPlaybackControlDelegate that looks like this: class CustomControlDelegate: NSObject, AVPlaybackCoordinatorPlaybackControlDelegate { let player: SomePlayer init(player: SomePlayer) { self.player = player } func playbackCoordinator(_ coordinator: AVDelegatingPlaybackCoordinator, didIssue playCommand: AVDelegatingPlaybackCoordinatorPlayCommand, completionHandler: @escaping () -> Void) { print("playing") player.play() } func playbackCoordinator(_ coordinator: AVDelegatingPlaybackCoordinator, didIssue pauseCommand: AVDelegatingPlaybackCoordinatorPauseCommand, completionHandler: @escaping () -> Void) { print("pausing") player.pause() } func playbackCoordinator(_ coordinator: AVDelegatingPlaybackCoordinator, didIssue seekCommand: AVDelegatingPlaybackCoordinatorSeekCommand, completionHandler: @escaping () -> Void) { print("seek") } func playbackCoordinator(_ coordinator: AVDelegatingPlaybackCoordinator, didIssue bufferingCommand: AVDelegatingPlaybackCoordinatorBufferingCommand, completionHandler: @escaping () -> Void) { print("buffer") } } The player.play() and player.pause() methods work when I call them myself, so this is not the issue. I Create the coordinator like this: delegate = SomePlayerControlDelegate(player: somePlayer) coordinator = AVDelegatingPlaybackCoordinator(playbackControlDelegate: delegate) When I want to start the player I use this code: coordinator.coordinateRateChange(to: 1) And to pause I use: coordinator.coordinateRateChange(to: 0) But nothing happens. The playbackCoordinator functions do not get called at all. Am I using the wrong functions?
2
0
777
Sep ’22
Xcode Cloud Workflow creation can't get access to self hosted gitlab server
Xcode is unable to Grant Xcode Cloud access to my source code. When setting up a workflow one of the steps is "Grant Access to Your Source Code". On this tab I can select my self hosted Gitlab instance and click "Grant Access...". When I do this I get the following error message: This operation could not be completed. invalid clone_urls: http://[gitlab_repo_url].git
3
5
1.2k
Sep ’22