Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS: error publishing on the App Store due to private _AudioConvertHostTimeToNanos and _AudioGetCurrentHostTime #132

Open
mockersf opened this issue Jun 7, 2023 · 1 comment

Comments

@mockersf
Copy link

mockersf commented Jun 7, 2023

When publishing an app on iOS through XCode / App Store Connect, I get rejected because of using private symbols:

Prepared archive for uploading
Upload failed
	error: Asset validation failed
The app references non-public symbols: _AudioConvertHostTimeToNanos, _AudioGetCurrentHostTime

If I remove all calls to these methods and always set the timestamps to 0, publication is successful.

It seems they are available on macOS, but not on iOS https://developer.apple.com/documentation/coreaudio/1422393-audioconverthosttimetonanos.

Is there a workaround that would keep the timestamps? It seems they are used only for sysex messages, would it be OK to put those calls behind a feature flag so that they can be ignored when not needed? I can submit and test a PR if that's the direction to take.

@Boddlnagg
Copy link
Owner

Boddlnagg commented Jun 9, 2023

I think the timestamps are not only used for sysex messages (at least AudioConvertHostTimeToNanos is called in any case). But I agree that it would be great to find a workaround for the private symbols in order to allow iOS app publishing.

I'm open for a PR that disables these calls based on a feature flag (there are already two feature flags related to timestamps, so adding another one seems okay). It might even make sense to reuse the avoid_timestamping feature that's currently used for input on ALSA. However, because Cargo features shouldn't have negative semantics, it's probably better to have a default-on feature that can be opted out of (and is by default disabled on iOS). Maybe coremidi_receive_timestamped analogous to coremidi_send_timestamped?

If anyone knows an alternative solution that doesn't use the private symbols, that would be great too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants