Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

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 Support #764

Closed
abbanatic opened this issue Dec 5, 2020 · 10 comments
Closed

iOS Support #764

abbanatic opened this issue Dec 5, 2020 · 10 comments
Labels
feature request Feature request

Comments

@abbanatic
Copy link

Hi,

please be so kind to think about providing iOS support for Jamulus in the future.

Due to Apple's change from Intel to ARM, universal binaries for all of Apple's platforms became reality.

So it would be great for Jamulus to support the New Apple Silicon AND iOS devices, with their great built-in capabilities regarding Audio and MIDI.

Thank you very much!
Thomas

@abbanatic abbanatic changed the title iOS Support Please provide iOS Support Dec 5, 2020
@ann0see
Copy link
Member

ann0see commented Dec 5, 2020

Agree. Porting should be possible but there would still be the same two problems like for Android (which is in development):

  1. how to deal with WiFi (of course you could use USB to LAN adapters)
  2. How to deal with Audio Interfaces (iOS uses CoreAudio, so does macOS)

Something iOS specific:

Submitting to the AppStore would require Jamulus to be dual licensed (?). Apple doesn't like the GPL.

See https://www.reddit.com/r/linux/comments/fv1hmp/discuss_those_scenarios_for_gpl_and_apple_app/

And the Nextcloud iOS Repo on GitHub.

See also #83 Android Support

@ann0see
Copy link
Member

ann0see commented Dec 5, 2020

First of all, I don't have any knowledge of iOS development. Therefore somebody experienced should look at this issue.

I want to document some changes I made compile and run Jamulus on iOS:

  1. I created a new iOS folder (with the content of the macOS files), added the Info.plist file and edited the .pro file.

I tried to compile Jamulus with QT Creator for iOS and it (of course) failed.
We can't use the same audio backend as in macOS:
In file included from /.../jamulus/ios/sound.cpp:25: /.../jamulus/ios/sound.h:70:5: error: unknown type name 'AudioDeviceID'; did you mean 'AudioFileID'?

This will probably be one of the main issues. We will need to rewrite this part for iOS.

Changes needed to compile for iOS:

  1. In client.h the include statement for Apple systems has to be changed to check if it's being built for iOS.

  2. Also clientdlg.cpp: SetMyWindowTitle: we can't show a badge number on iOS --> exclude it for iOS

  3. Framework AudioUnit doesn't exist on iOS --> don't include it in the .pro file

I could now at least compile it via XCode. But it only shows a black screen. I don't know how to get iOS show the QT widgets. Maybe somebody from the Android team knows something about that? Do we need a complete UI rewrite?

If anybody has experience I can try and test it.

@gene96817
Copy link

Apple announced at WDC2020 some kind of merging macOS and iOS for 2021. I don't follow the details in this area closely. This suggests people interested in iOS support should look at the developer's tools for macOS 12.x.x and this "merger" with iOS. Of course, this doesn't solve the needs of devices that run old iOS release.

@corrados corrados added the feature request Feature request label Dec 6, 2020
@corrados corrados changed the title Please provide iOS Support iOS Support Dec 6, 2020
@ann0see
Copy link
Member

ann0see commented Dec 6, 2020

I got a headless Jamulus server up and running on my iPhone SE 1st gen (although it's connected via wifi, the quality is ok) which can show up on a central server.

Everything GUI related doesn't work and also I assume files can't be written because of the iOS sandbox.

@ann0see
Copy link
Member

ann0see commented Dec 9, 2020

https://developer.apple.com/documentation/avfoundation/avaudiosession?language=objc in https://developer.apple.com/documentation/avfoundation/avaudiosessionmodemeasurement mode could be a good choice for audio in iOS. Does anybody know anything about iOS Audio/iOS CoreAudio?

@ann0see
Copy link
Member

ann0see commented Dec 9, 2020

Although I have no idea how to write the sound.cpp or sound.h files or StoryBoard files etc. have a look at my changes:

https://github.com/ann0see/jamulus/tree/patch-3

@ann0see
Copy link
Member

ann0see commented Dec 12, 2020

Anybody else here knowing iOS development and QT? Unfortunately I have almost no idea how the csound class should look like on iOS since it seems as if we can't use the same code line on macOS.

@corrados what are the main methods for a sound.h/sound.cpp file?

Did I find the correct ones in my code?

@corrados
Copy link
Contributor

Is this still work in progress? Or shall I remove the label?

@ann0see
Copy link
Member

ann0see commented Jan 14, 2021

You should remove the label (but I will probably continue working on some of this stuff once the installer and autobuild stuff works)

@ann0see
Copy link
Member

ann0see commented Jan 19, 2021

Current open issues here:

  1. Write sound driver for iOS
  2. Fix the GUI: Currently if you launch Jamulus on iOS (after having it compiled via Xcode), it displays the "Would like to access your microphone" screen but doesn't show anything else. I think the problem is related to some settings in Xcode I don't know. There's almost no documentation for Qt widgets applications on iOS and I don't think a Qt widgets app would ever get into the AppStore.

@jamulussoftware jamulussoftware locked and limited conversation to collaborators Mar 14, 2021
@jamulussoftware jamulussoftware unlocked this conversation Dec 7, 2021
@jamulussoftware jamulussoftware locked and limited conversation to collaborators Dec 7, 2021

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
feature request Feature request
Projects
None yet
Development

No branches or pull requests

5 participants