Post

Replies

Boosts

Views

Activity

MultipeerConnectivity background operation for mesh relay — alternatives to CoreBluetooth rewrite?
'm building a peer-to-peer mesh messaging app using MultipeerConnectivity. The app implements TTL-bounded flooding relay so messages can traverse multiple hops across devices that aren't directly connected to each other. The core limitation I'm hitting: MPC stops browsing and advertising when the app is backgrounded, which means a node can no longer relay messages for the rest of the mesh. For the mesh to be useful in practice, nodes need to stay active as relays even when users switch to other apps. I'm aware of the standard options: . Background task extension (beginBackgroundTask) — only buys ~30 seconds, not a real solution . Push notifications (APNs) — requires a server, defeats the goal of a fully offline/local mesh . CoreBluetooth with state preservation/restoration — genuine background capability, but essentially a full rewrite of the transport layer, and BLE throughput (~100–250 kbps) would hurt larger payloads Before committing to a CoreBluetooth rewrite, I want to make sure I'm not missing anything. specifically questions are: Is there any way to keep an MCNearbyServiceAdvertiser or MCNearbyServiceBrowser running in the background that I'm not aware of? Does MCSession maintain existing connections long enough in the background to be useful for relay (i.e., does it survive past the background task expiry)? Is Network.framework's local network discovery (NWBrowser with Bonjour) any more background-friendly than MPC's browser/advertiser? • Has anyone successfully implemented a hybrid approach — CoreBluetooth for background discovery/signaling + a higher-bandwidth channel (WiFi Direct or Network.framework TCP) negotiated when foregrounded? • Are there any entitlements or capabilities (e.g., AccessorySetupKit, NEAppProxyProvider, or anything in the networking extension family) that could help here that aren't commonly discussed? The relay/routing layer, E2EE, and message dedup all sit above the transport and are transport-agnostic, so the rewrite scope is limited to the discovery and session management layer — but it's still significant. Any experience with this pattern would be very helpful.
1
0
542
Jun ’26
eliable way to match an MCPeerID across notifications — is identity comparison safe?
I have a MultipeerConnectivity-based app where a view controller is opened for a specific connected peer. When data arrives for that peer, my networking manager posts a Notification whose userInfo carries the sender's MCPeerID, and the view controller filters updates like this: guard let incomingPeerID = userInfo["peerID"] as? MCPeerID, incomingPeerID == self.peerID else { return } // apply update…
1
0
336
Jun ’26
Xcode 26 on Tahoe crashing
I've instilled Tahoe and Xcode 26(17A324) and the combination is virtually unusable, particularly the latter I'm no longer able to build projects reliably. My workflow is completely disrupted by a spinning beach ball so just a warning that you might want to delay until taking the plunge as I should have done. Fortunately, I have a back sequoia machine I can use instead.
1
1
144
Sep ’25
MultipeerConnectivity background operation for mesh relay — alternatives to CoreBluetooth rewrite?
'm building a peer-to-peer mesh messaging app using MultipeerConnectivity. The app implements TTL-bounded flooding relay so messages can traverse multiple hops across devices that aren't directly connected to each other. The core limitation I'm hitting: MPC stops browsing and advertising when the app is backgrounded, which means a node can no longer relay messages for the rest of the mesh. For the mesh to be useful in practice, nodes need to stay active as relays even when users switch to other apps. I'm aware of the standard options: . Background task extension (beginBackgroundTask) — only buys ~30 seconds, not a real solution . Push notifications (APNs) — requires a server, defeats the goal of a fully offline/local mesh . CoreBluetooth with state preservation/restoration — genuine background capability, but essentially a full rewrite of the transport layer, and BLE throughput (~100–250 kbps) would hurt larger payloads Before committing to a CoreBluetooth rewrite, I want to make sure I'm not missing anything. specifically questions are: Is there any way to keep an MCNearbyServiceAdvertiser or MCNearbyServiceBrowser running in the background that I'm not aware of? Does MCSession maintain existing connections long enough in the background to be useful for relay (i.e., does it survive past the background task expiry)? Is Network.framework's local network discovery (NWBrowser with Bonjour) any more background-friendly than MPC's browser/advertiser? • Has anyone successfully implemented a hybrid approach — CoreBluetooth for background discovery/signaling + a higher-bandwidth channel (WiFi Direct or Network.framework TCP) negotiated when foregrounded? • Are there any entitlements or capabilities (e.g., AccessorySetupKit, NEAppProxyProvider, or anything in the networking extension family) that could help here that aren't commonly discussed? The relay/routing layer, E2EE, and message dedup all sit above the transport and are transport-agnostic, so the rewrite scope is limited to the discovery and session management layer — but it's still significant. Any experience with this pattern would be very helpful.
Replies
1
Boosts
0
Views
542
Activity
Jun ’26
eliable way to match an MCPeerID across notifications — is identity comparison safe?
I have a MultipeerConnectivity-based app where a view controller is opened for a specific connected peer. When data arrives for that peer, my networking manager posts a Notification whose userInfo carries the sender's MCPeerID, and the view controller filters updates like this: guard let incomingPeerID = userInfo["peerID"] as? MCPeerID, incomingPeerID == self.peerID else { return } // apply update…
Replies
1
Boosts
0
Views
336
Activity
Jun ’26
multi device subscriptions
I would like to be able to price my app with different tiers with increasing number of increasing device installations ie smal 2 devices, family2-4, community - 100+ what is the best way to do this if it can be.
Replies
1
Boosts
0
Views
150
Activity
May ’26
iOS 26 VideoToolbox rejects valid H.264 SPS from Tello drone
it seems that video toolbox in ios26 is having trouble decoding h.264 streams I have filed a bug report under https://feedbackassistant.apple.com/feedback/20741484
Replies
1
Boosts
0
Views
188
Activity
Oct ’25
Xcode 26 on Tahoe crashing
I've instilled Tahoe and Xcode 26(17A324) and the combination is virtually unusable, particularly the latter I'm no longer able to build projects reliably. My workflow is completely disrupted by a spinning beach ball so just a warning that you might want to delay until taking the plunge as I should have done. Fortunately, I have a back sequoia machine I can use instead.
Replies
1
Boosts
1
Views
144
Activity
Sep ’25
agent coding in xcode
am I correct in thinking that local agentsic coding is going to come to Xcode at some point ? I'm thinking cursor ai or windsurf / cline style.
Replies
1
Boosts
0
Views
303
Activity
Mar ’25
multi seat subscriptions
Is it possible to have a subscription pricing model where the subscription is a prime number of activation of an app on multiple devices? This would be for a period of time before needing to renew. If this is possible, please could some point me in the direction of some documentation or guidance.
Replies
0
Boosts
0
Views
212
Activity
Mar ’25
real device missing in run target list
I want to run a nap. I'm developing on my actual iPhone previously. I have been able to do this but the phone is now missing from two computers. It appears in devices and simulators on both machines.
Replies
1
Boosts
0
Views
496
Activity
Dec ’24