This is much, much funnier than you'd realized. Up until COVID took...
I can imagine! And don’t get me wrong, I really understand why you guys are suggesting the Network framework. IMO, it makes total sense for new applications to build directly on top of that. But I think there’s still a lot of value in fixing the MPC framework, because there are many apps and libraries out there relying on MPC.
In our case, for example, we’re also quite restricted in terms of update policies due to our very regulated domain. We can’t simply push updated apps to customers, or at least not to customers running years-old versions who either don’t want to or can’t update to more recent releases. In those situations, we rely on Apple fixing these issues on the OS side.
We also wouldn’t be raising awareness here if this had always been an issue. Our apps have relied on MPC for almost a decade now (the code goes back to 2018), and for our use cases it worked flawlessly (it really did :D). Customers used it extensively without problems. This appears to be a regression introduced specifically in iOS 26, as the exact same MPC setup and connection flow worked reliably across previous iOS releases for years.
As you kind of mentioned yourself: if this wasn’t a newly introduced bug, we wouldn’t be filing feedback reports and sending mails with this much detail and urgency.
Now enough chit chat about background information and restrictions. Lets get back to the issue:
Two requests/suggestions:
Earlier I mentioned the sample "Building a custom peer-to-peer protocol"....
Done, and as assumed, I didn't reproduce it. (Surprise surprise! Network framework is great :D)
If the sample above works (which I expect it will), try running both apps in "split screen" (so that they're both running at the same time)....
Now here the result might actually surprise you: I STILL managed to reproduce it. Same steps as earlier. I even made sure the Tic-Tac-Toe game from Apple’s sample app was already paired up and running.
And in an attempt to really help you guys out as much as possible, I added the following to the feedback FB22691771:
A new pair of sysdiagnoses for the second test, running Tic-Tac-Toe and Rock Paper Scissors in Split View. As you suggested, I had both iPads powered off for at least 10 minutes. After booting, I waited another 5 minutes before executing the test steps. You should see clear log gaps from both devices, significantly less log noise, and only a single test execution with a few connection attempts before it successfully connected.
This time I included a video showing both devices in "split screen" running the two apps in "split screen" ("split screen"-ception. Sorry, couldn’t help myself), recorded during the sysdiagnoses above.
I really hope the effort I put in helps you out and maybe earns me a little reciprocal debugging effort from Apple’s side as well :D.
But honestly, with the information I already provided and the test steps I mentioned earlier, I think you should be able to reproduce the issue yourselves pretty easily. I assume you also have the right debugging and instrumentation tools internally to investigate this much more deeply than what sysdiagnoses alone would provide :)
Please give it a try. I’m convinced this affects all apps using MPC the same way the example app has it set up. There are also third-party Swift packages that abstract MPC even further for developers while using the same setup internally, so users of those packages are very likely affected as well.