-
Notifications
You must be signed in to change notification settings - Fork 10
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 14 Unexpected Behavior #56
Comments
Hey Ben, Thanks for reporting this. Here is what I tried to reproduce this:
When giving permission to access the local network, all three devices find each other and everything works as expected. I have no idea what is causing the issue for you. Have you tried to completely uninstall the app that is not working? Maybe the OS remembers that the app does not have networking permissions for some reason, and just reinstalling via Xcode does not reset that. Best, Florian |
Thanks Florian, |
This is weird! Let me know if there is something I should test. |
I am running into exact same problem as @olympianoiseco describes when preparing my app for an iOS14 update. I am a bit lost on how to fix this. @fgo-ableton : The problem is reproducible with LinkHut by setting the deployment target to any value greater than iOS 11.4, so there is a strong relationship to the issue #57 |
I'd even go as far and say both #56 and #57 have the same root cause and could be fixed by the same fix. We need to know which networking privacy rules(?) changed with iOS 11.4 then. |
Ok. I can reproduce this now. |
Oh wow, that sounds like you need to request a special entitlement from Apple in order to make LinkKit work then?
|
No special requirements from Apple needed, just User Consent to agree that the local network is used from the App that asks for consent
-
… Am 12.10.2020 um 11:30 schrieb Frederik Riedel ***@***.***>:
Ok. I can reproduce this now.
Link does not use Bonjour. It uses multicast UDP messages on port 20808.
I found https://developer.apple.com/forums/thread/662082 and https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_networking_multicast
It seems there are indeed new requirements in iOS 14. And as @uwehollatz pointed out, when compiling against the iOS 11.4 SDK, Link still work fine - even when running on iOS 14.
Oh wow, that sounds like you need to request a special entitlement from Apple in order to make LinkKit work then?
This entitlement requires permission from Apple before you can use it in your app. Request permission from the Multicast Networking Entitlement Request page.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
I cannot set the target of my app to anything below iOS13 since I am relying on this version. So basically every app which uses Ableton Link on iOS and needs the target set to iOS12 and higher will stop working ... ok, I have filled out the form to request the multicast network entitlement form Apple. I will let you know about my outcomes then. |
no sorry @designerfuzzi, only the consent is not working. |
Can confirm: the nslocalnetworkusagedescription is needed, as well as a bonjourservice entry: at least my app using audiobus needed it for this to work, but for link I didn’t put no entry to this array and it works as expected for me. Could be it’s needed there because before I made it for audiobus the user wasn’t asked for permission to grant the usage? |
OK - here is my update: |
Just adding NSLocalNetworkUsageDescription and a Bonjour entry for the app does not seem to work. Which is in accordance with what Apple sais. |
Maybe this works because Audiobus is actually using Bonjour, and that also enables other network traffic? |
That’s my guess. The app also uses osc protocol so there is an entry for it on the bonjour service too, so these two seem to open the network connectivity. |
OSC Port (TCP/UDP) Messaging can be driven without Bonjour entries also but the DNS record can be implemented for convenience so Devices can discover other hosts in a local network. While OSC could be driven as Multicast Network its standard not to do so and instead to use normal IP targeting to specific hosts which is why any OSC app would start with introduction of a list of known devices and IP’s to communicate with.
Multicast can keep this process away from users when the protocol is constructed that way and the other Peers are not targeted specifically.
Which leads to the assumption that fgo is right.
Use of Link would need the Apple Multicast Entitlement.
Then more wondering why we are the first to discover this issue.
Another thing is, would it work when you implement the old Link bundle in an App that has deployment target set to iOS14?
|
No. Once you target iOS12 and up and run on iOS14 you will need the entitlement. |
Using Xcode 11 and targeting iOS 13 might also allow running on iOS 14. But I don't have the devices here to verify that. |
@fgo-ableton
@uwehollatz, what did you tell them to get approved? |
This is what I have filled into the form to get approval: Describe your app:
Explain why your app needs to send multicast or broadcast traffic, or browse for all Bonjour service types
|
Thanks @uwehollatz. That's more or less what I said in my application, but I didn't include a link to the website. Hopefully adding the link to the Ableton Link website will be enough to get it through. |
@olympianoiseco The IP and port Link uses are 224.76.78.75:20808. I'll add some documentation once we have successfully gone through the entitlement process. |
Our request for the entitlement has been approved. We also referenced https://www.ableton.com/en/link/ |
@olympianoiseco Are there any news on the entitlement process from your side? |
I requested an entitlement in a similar manner, and mine just got approved this morning. |
Mine just came through last night as well! Had to bug them, but it's all good now. Haven't implemented the entitlement yet but I don't expect that to be an issue. Thanks! |
I am testing on iOS14 and am getting some unexpected behavior with Link, where it fails to connect to peers on the local network.
Update : I've been able to reproduce the issue with LinkHut.
To test:
Open Ableton on my computer (10.1.17, macOS 10.15.6) and enable Link.
Open my app on iPad (iOS 13.2, latest LinkKit version) and enable Link,
Open my app on iPhone (iOS 14, latest LinkKit version) and enable Link. The system requests permissions for local network usage, and I accept)
Expected result :
Link works on all three devices.
Actual Result:
Link works between Ableton and the iPad (iOS 13). The iPhone (on iOS14) does not find the other link enabled apps.
This is possibly related to the restrictions on local network access with iOS14. On iOS14, local network access must be confirmed by the user. As expected, this dialog pops-up when enabling Link for the first time. However, granting access does not fix the issue. In addition, if you deny access, the Link View Controller will show the enabled state regardless of permissions.
Additional breadcrumbs :
The App Store build of my app (built with a previous iOS SDK, and older LinkKit) works as expected.
If I open up another one of my Link enabled apps on my device, my app is able to connect to all of the Links in the network. As soon as I quit the other Link app on the device, it disconnects.
I'm able to re-create the issue using the LinkHut demo project. LinkHut will not connect to other Link enabled apps in the network unless the older Link enabled app is also open. LinkHut works correctly on my iPad with iOS13.
Any thoughts or things to try would be greatly appreciated.
Thanks,
Ben
The text was updated successfully, but these errors were encountered: