I am getting dozens of crash reports for our app running on iOS 14. The crash log (please see attached) indicates the crash on Thread 0. I am not able to reproduce the crash.
CFNetwork crash in iOS 14
This looks like the issue covered by this thread.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
Thank you for sharing the thread.
It looks like the issue is specific with Multipeer Connectivey in iOS 14?
We are using Multipeer Connectivity in our app. Do you know if it will this be fixed in the next iOS release?
Do you know if it will this be fixed in the next iOS release?
I can’t predict the future, alas.
What you using Multipeer Connectivity for? My experience is that a lot of folks use that API in situations where they’d be better off using a more traditional networking API, and if that’s the case here then you might benefit from making that switch now.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
Wouldn't it be great if we can predict future? 😂
Our users work in an offline mode (airplane mode) and need to share information within devices. So we use Multipeer Connectivity framework to support that.
You mentioned about other API's, do they support sharing information in airplane mode?
Our users work in an offline mode (airplane mode) and need to share information within devices.
Can you expand on this a little? Specifically:
-
What does “within devices” mean? As written, it sounds like you’re trying to share information between two apps on the same device, but I find that hard to believe. Did you mean “between devices”?
-
Airplane Mode turns off the Wi-Fi interface, which disables peer-to-peer Wi-Fi (which is the underlying technology used by Multipeer Connectivity). This is why, for example, Settings says:
Unlocking with Apple Watch, AirDrop, AirPlay and … require Wi-Fi.
How exactly do you use Multipeer Connectivity in this context? Do you enabled Airplane Mode and then manually re-enable Wi-Fi?
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
- Yes, share information between devices.
- Yes, user turns on airplane mode and the explicitly turns on Wi-Fi and that's one time task, next time when user turns on airplane mode iOS remembers the previous state and does not disable the Wi-Fi.
next time when user turns on airplane mode iOS remembers the previous state and does not disable the Wi-Fi.
Oh, that’s cool. I didn’t know that we’d tweaked that.
Anyway, if Wi-Fi is on, regardless of how it’s on, then peer-to-peer Wi-Fi networking will work. You can access that through a wide variety of APIs, including Network framework, Foundation (NSNetService and NSStream), and Multipeer Connectivity. Of the APIs I’ve listed here, the Foundation APIs have been replaced by Network framework [1], so the choice is between Network framework and Multipeer Connectivity:
-
Use Multipeer Connectivity only if its network architecture is a good match for your architecture.
-
Otherwise use Network framework.
Multipeer Connectivity’s network architecture is completely symmetric. No one peer exists in a privileged position. My experience is that this is a bad match for many networking products, which instead use an asymmetric architecture (for example, one peer is the server and the other peers are all clients). If that’s the case with your product, use Network framework.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
[1] Specifically, the issue discussed in this thread.