Posts under App & System Services topic

Post

Replies

Boosts

Views

Activity

[macOS 27] Cannot receive 4096-byte packets over USB CDC-ACM (works in macOS 26)
Hello, I’m facing an issue with a custom USB CDC-ACM device after updating to macOS 27. The device sends 4096-byte packets, which were correctly received under macOS 26. Since I need to transfer large amounts of data, 4096 bytes was a good compromise between performance and reliability. However, now any packet larger than 1019 bytes is not received at all. Wireshark confirms that the packets are present on the USB bus, but neither Serial Tool nor my own software can see them. The device uses the AppleUSBACMData driver (CDC-Data interface, Full Speed USB, with bMaxPacketSize0=64). Fragmenting the incoming data into chunks of 1019 bytes or less works as a temporary fix, but it significantly reduces performance and is not a sustainable solution. I have three specific questions: Is there a hardcoded 1019-byte buffer limit in AppleUSBACMData or IOSerialFamily in macOS 27? Is this a known issue in macOS 27 with CDC-ACM devices? Should I consider writing a custom driver for my device instead of relying on Apple’s default AppleUSBACMData? Any help or insights would be greatly appreciated. Thanks!
1
0
40
1d
Vendor ID Approval
We are building an iPadOS app that requires a DriverKit USB transport dext, and we have been waiting on the restricted entitlement for over three weeks with no movement on any of our requests. Team ID: AKFY9W27HB Entitlements requested: com.apple.developer.driverkit and com.apple.developer.driverkit.transport.usb ┌────────────┬───────────────┬───────────┐ │ Request ID │ Requested │ Status │ ├────────────┼───────────────┼───────────┤ │ 633LBK79JF │ 25 July 2026 │ Submitted │ ├────────────┼───────────────┼───────────┤ │ 6N8PP3G6BA │ 6 August 2026 │ Submitted │ ├────────────┼───────────────┼───────────┤ │ Y8T72G8YJS │ 6 August 2026 │ Submitted │ └────────────┴───────────────┴───────────┘ All three are still showing "Submitted" with no response, the oldest for over three weeks. What we actually need is one configuration, not three grants. The three requests cover three vendor IDs, but a single dext has to match all of them simultaneously: 0x1452 (5202) 0x1343 (4931) 0x0D16 (3350) I believe this is the same situation as thread 826658 (https://developer.apple.com/forums/thread/826658), where multiple vendor ID requests were consolidated into a single entitlement configuration. If our three can be merged the same way, that is exactly what we need. Any guidance on the status of these three requests, or on consolidating them, would be much appreciated.
3
0
617
1d
macOS 27/APFS: Supported ACL Absence Verification When acl_get_fd_np Returns ENOENT
Subject: Supported fail-closed ACL absence verification on macOS 27.0.1 / APFS Environment: macOS 27.0.1, build 26A434; APFS; installed macOS 27.0 SDK. We need a supported, documented way to determine whether an existing filesystem object has no effective ACL entries, while rejecting genuine retrieval failures and unsupported or unavailable ACL evidence. We are seeking clarification of the public interface contract, not alleging an Apple defect. For existing directory and regular-file fixtures, pathname metadata and descriptor metadata identify the same object. Errno is cleared immediately before each native call and captured immediately afterward. ACL retrieval uses ACL_TYPE_EXTENDED: acl_get_file(path, ACL_TYPE_EXTENDED) acl_get_fd_np(fd, ACL_TYPE_EXTENDED) On fresh objects, both return NULL with ENOENT. Explicit one-entry fixture ACLs are retrieved successfully. Explicit zero-entry fixture ACLs can also yield NULL/ENOENT, while attribute queries return a serialized zero-entry ACL. The attribute queries use getattrlist() and descriptor-bound fgetattrlist(), requesting ATTR_CMN_RETURNED_ATTRS | ATTR_CMN_EXTENDED_SECURITY, with FSOPT_NOFOLLOW | FSOPT_REPORT_FULLSIZE and WITHOUT FSOPT_PACK_INVAL_ATTRS. Buffer lengths, variable-reference bounds and returned-attribute validity are checked. For the existing directories of interest, both calls succeed but omit the ATTR_CMN_EXTENDED_SECURITY returned bit. Explicit populated and zero-entry fixture records do set the bit. APFS reports valid VOL_CAP_INT_EXTENDED_SECURITY support; we do not assume that volume capability proves per-object ACL availability. On macOS 27.0.1, build 26A434, using APFS, which supported interface and documented conditions allow software to distinguish an absent ACL from unavailable or unsupported ACL evidence when descriptor-bound attribute queries succeed but omit ATTR_CMN_EXTENDED_SECURITY and native ACL getters return ENOENT for an existing object? Please clarify: Whether ENOENT has a supported ACL-absence interpretation, and under exactly which checked conditions. Whether an omitted extended-security attribute can establish ACL absence, rather than unavailable or unsupported evidence. How explicit zero-entry ACLs differ from absent ACL records through supported interfaces. How KAUTH_FILESEC_NOACL should be interpreted through supported APIs. How genuine retrieval failures, including permission, I/O, allocation and unsupported-operation errors, must remain distinguishable. Whether a supported descriptor-bound verification method exists that preserves fail-closed security checks and object identity binding; please identify its guarantees and limitations regarding pathname/ancestor changes and later operations. Whether relevant behavior is specific to this macOS/APFS version. Please identify the applicable public documentation or supported verification sequence. We do not want to modify permissions, synthesize ACLs on target objects, treat invalid-attribute defaults as real evidence, or accept ambiguous omission/ENOENT as success. Existing ownership, mode and confinement checks must remain separate mandatory checks. If no public API can make this distinction reliably, please state that limitation.
10
0
383
1d
Can macOS enforce a 512 MiB combined address-space cap before child code runs?
On Apple silicon macOS, is there a supported public mechanism that can enforce a hard combined mapped virtual address-space ceiling of 512 MiB for a parent process and its new child from the first charged creation step through loading the child's executable image, before the child runs any application code? The current investigation targets macOS build 26B123 on arm64. We need to know how the supported limit accounts for inherited maps, shared-region reservations and image mappings during process creation. If the supported route is to partition the ceiling between per-process limits, please specify whether the child limit applies before its first charged map and how a limit failure is reported. Please identify the public API or documentation, supported OS versions and required setup. A control that only applies to resident memory or starts after application code begins would not cover this question.
1
0
86
1d
Hard aggregate process-tree memory enforcement on macOS
Is there a publicly supported macOS API, entitlement, or framework capable of enforcing a hard 64 MiB aggregate memory ceiling across a process tree, including its supervisor, observer, and descendants? Enforcement must be established before workload execution, survive fork/exec, and remain effective if the controlling process crashes. We have examined per-process resource limits and process-memory reporting, but these do not establish the required aggregate guarantee. If supported, which API and enforcement mechanism should we use? If not, is there a documented platform limitation?
1
0
33
1d
"Why doesn't the earbud button start Push to Talk?"
Apple's documentation says that once an app joins a Push to Talk channel, pressing "play" on a headset should start recording. On my iPhone it doesn't. Both the M015(our earbud) and AirPods send the press to Apple Music instead. The phone's own log says "No context for this command", then opens Music. So we ask Apple: What exactly has to be true for the earbud press to reach Push to Talk instead of Music? Does it work at all when nothing is playing? Can one press start and the next press stop, or is it press-and-hold only? Is a Bluetooth data signal from the earbud the only other way?
1
0
79
1d
Software I/O Support in SCSIControllerDriverKit
I'm pleased to announce that the initial beta of macOS 27.3 (26C5035r) includes our support for software I/O in SCSIControllerDriverKit. The class reference has not yet been updated to include this, but it is described in the release notes: "SCSIControllerDriverKit now supports software controllers. A software controller declares itself by setting kIOPropertySoftwareIOKey (an OSBoolean, from <IOKit/storage/IOStorageControllerCharacteristics.h>) through UserSetHBAProperties(). The system honors this setting only before controller initialization completes, so it stays fixed for the life of the controller. Such a controller doesn’t create any DMA mappings, and your dext can access the data buffer associated with a particular I/O through the UserCopyDataBuffer API. (182426393) (FB23797269)" Clearing up a few details on that process: The property kIOPropertySoftwareIOKey ("Software I/O") is created and set to "false" when IOSCSIParallelInterfaceController is initially created. That means a DEXT can check for software I/O support by using CopyProperties() to look for that key, instead of relying on a system version check or similar side channel check. The kIOPropertySoftwareIOKey must be set before the controller initialization sequence begins. Changes to the value after that point will fail. If kIOPropertySoftwareIOKey has been properly set to "true", then fBufferIOVMAddr will be set to NULL. This behavior can be used as additional confirmation that the kernel driver is properly configured. The deprecation and replacement of UserGetDataBuffer by UserCopyDataBuffer was primarily done to faciliate software I/O controllers. Functionally, the two APIs actually behave identically, however, the name change resolves the analyzer warnings that releasing the returned IOMemoryDescriptor previously caused. __Kevin ElliottDTS Engineer, CoreOS/Hardware
0
0
53
1d
BNNSNDArrayDescriptor rejects manually calculated strides?
Supporse, in a tight loop, I want to matrix MxP with PxN to get MxN (in rowNum x colNum convention). The call to BNNSNDArrayDescriptor.init(data:shape:) always fails if I (correctly) specify all the strides. /* The simplest and fastest matmul(A,B) is when both A and B are in inner- dimension-major order - with the size P dimension stored continuous. i.e. A*(B^T) when A,B are stored in C-like row-major order, or, first-dimension-major order, but first index is the row index, like BLAS */ import Accelerate // Different sizes, so incorrectly-ordered sizes/strides/indices generate error let M: Int = 16 let N: Int = 8 let P: Int = 32 let sizeA = BNNS.Shape.matrixFirstMajor(M, P, stride: (0, 0)) // OK: stride:(1, 0) // bad: stride:(0, 1) -- Matmul failed, because 1 is given to the wrong dimension: should be at least P // stride:(1, P) -- Failed to create BNNSNDArrayDescriptor??? let sizeB = BNNS.Shape.matrixFirstMajor(N, P, stride: (0, 0)) // OK: stride:(1, 0) bad: stride:(0, 1), stride:(1, P) let sizeC = BNNS.Shape.matrixFirstMajor(M, N, stride: (0, 0)) // OK: stride:(1, 0) bad: stride:(0, 1), stride:(1, N) let Mat1 = UnsafeMutableRawBufferPointer .allocate(byteCount: (M+N)*P*4, alignment: 128) .initializeMemory(as: Float.self, repeating: 1.234) let Mat2 = UnsafeMutableRawBufferPointer .allocate(byteCount: M*N*4, alignment: 128) .initializeMemory(as: Float.self, repeating: 0.0) guard let descA = BNNSNDArrayDescriptor( data: Mat1.extracting(0..<M*P), shape: sizeA), let descB = BNNSNDArrayDescriptor( data: Mat1.extracting(M*P..<(M+N)*P), shape: sizeB), let descC = BNNSNDArrayDescriptor( data: Mat2, shape: sizeC) else { print("Failed to create BNNSNDArrayDescriptor."); exit(1) } print(descA) // workspaceSize = BNNS.matrixMultiplicationWorkspaceSize(...) // withUnsafeTemporaryAllocation(byteCount: workspaceSize, alignment: ...) { wksp in var iter = 0 while iter < 1000{ do { try BNNS.applyMatrixMultiplication( inputA: descA, transposed: false, inputB: descB, transposed: true, output: descC, alpha: 1.0, workspace: /*wksp*/ nil) } catch { // Probably got the dimensions backwards, so two matrices are not multiplicable print("Matmul failed: \(error)") break } iter += 1 }I guess in the Swift overlay, the verifying initializer checked a wrong arrangement of stride[k] >= size[k-1] * stride[k-1]. These RowMajor FirstMajor, etc. with all different size and index orderings, are surely confusing. bnns_constants.h:1394 gives the right description. PS: Please don't educate me about deprecation of BNNS. context.executeFunction(arguments: [Aptr, Bptr, Cptr]) is nearly 5x slower for this one-matmul-in-a-tight-loop case, and there's no way to reuse the underlying graph in another thread yet, not withBNNSGraph.Builder. The (im)practical alternative is calling sgemm() that is even more verbose than this.
2
0
108
1d
FileManager.default.contentsOfDirectory fails with SMB
Hi, I am trying to list the contents of a directory selected by the user using the following code: let documentPicker = UIDocumentPickerViewController(forOpeningContentTypes: [.folder]) documentPicker.delegate = self self.present(documentPicker, animated: true) func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {         guard let folderUrl = urls.first else {return} let startAccessing&#9;= folderUrl.startAccessingSecurityScopedResource()         guard startAccessing else { print("ERROR")             return         }         defer {             if startAccessing {                 folderUrl.stopAccessingSecurityScopedResource()             }         }         var error : NSError? = nil         NSFileCoordinator().coordinate(readingItemAt: folderUrl, error: &error) { (url) in             let startAccessing = url.startAccessingSecurityScopedResource()             guard startAccessing else {                 print("ERROR 2")                 return             }             defer {                 if startAccessing { folderUrl.stopAccessingSecurityScopedResource()                 }             }                          do {                 let files = try FileManager.default.contentsOfDirectory(at: url, includingPropertiesForKeys: [.nameKey])                 print(files)             } catch let filesError {                 print(filesError)             }         }     } This works for iCloud and for local files. It also, curiously, works on empty folders on the SMB server (though, obviously, it returns an empty array). However, for SMB folders with contents I get the following cryptic error message. Error Domain=NSCocoaErrorDomain Code=256 "The file “downloads” couldn’t be opened." UserInfo={NSURL=file:///private/var/mobile/Library/LiveFiles/com.apple.filesystems.smbclientd/Gabgugfiles/downloads, NSFilePath=/private/var/mobile/Library/LiveFiles/com.apple.filesystems.smbclientd/Gabgugfiles/downloads, NSUnderlyingError=0x28010b0c0 {Error Domain=NSPOSIXErrorDomain Code=10006 "Unknown error: 10006"}} In addition, modifying the code slightly so the user picks an image instead works just fine too. I can load the image from the supplied URL. I have read the documentation here - https://developer.apple.com/documentation/uikit/view_controllers/providing_access_to_directories and watched the WWDC 2019 presentation, What's New in File Management and Quicklook, where this was introduced but this hasn't turned up any answers. My app is set up with Supports Document Browser. Is there something I'm doing wrong? The way this is described what I'm trying to do, get a list of files and act on each of them, is exactly what this is intended for yet it's not working.
12
0
3.5k
1d
UGreen NAS - Unable to enumerate contents of directory on iOS, works on macOS
I have a UGreen NAS. My app can read the contents of a folder on the NAS from macOS, but it cannot read the contents of a folder from iOS. I bring up a UIDocumentPickerViewController(forOpeningContentTypes: [UTType.folder], asCopy: false). I can pick a folder on the iPad’s internal storage, and successfully enumerate its contents. On the UGreen, I can pick a folder, but the content enumeration always returns zero items (no errors). Enumeration of the UGreen works from macOS. It also works on the iPad when connecting to a Mac mini, or a Synology NAS. . Files.app is able to view the UGreen folder and its contents. Oddly, my app cannot enumerate the contents, but it IS able to write a file to that UGreen folder. Since Files.app can enumerate and I can write to the UGreen folder (and I can enumerate contents on other servers) - how can I get the enumeration to work? Feedback is FB22955130
13
0
890
1d
iPhone Duo: NFCISO7816Tag reads fail with error 102 while connected to Wi-Fi
tl;dr: On iPhone Duo with connected WiFi it is not possible to fully verify/scan a NFC ePassport. On iPhone Duo (iPhone19,4, iOS 27.2), reading ePassports via NFCTagReaderSession / NFCISO7816Tag fails reproducibly while the device is connected to Wi-Fi. Access control (PACE) succeeds. During the following file reads (EF.SOD, DG2), one sendCommand call gets no response for about 2 seconds and then fails with NFCReaderError code 102 ("Tag response error / no response"). The failing command varies from run to run. After disconnecting from Wi-Fi in Control Center, the same passport reads immediately. Disconnecting is enough; Wi-Fi does not need to be turned off. The device lies still on the document in all attempts. ReadID Me, Regula Document Reader and our own app (KINEGRAM Digital Seal) all fail the same way. Filed as FB25502333 with sysdiagnose and video. This looks similar to the 2024 issue on iPhone 15 Pro / 16 Pro, where turning off Wi-Fi also helped: https://developer.apple.com/forums/thread/765855 If you see this on an iPhone Duo too, please file a Feedback and reference FB25502333.
1
0
65
1d
NFC (ISO7816)- Tag Connection Lost IPhone 15 & 16 variants
NFC reading starts but after BAC, during the reading of DG2 the NFC stops reading and returns with Tag connection Lost error . It almost fails everytime on iPhone 15 Pro max with the following error. What's the solution for this? This is really important because our app entirely relies on the NFC data to proceed forward. This always fails in iPhone 15 & 16. Same card works fine on older iPhone models. What change should we do or include for the newer models. Error Domain=NFCError Code=102 "Tag response error / no response" UserInfo={NSLocalizedDescription=Tag response error / no response, NSUnderlyingError=0x303bd6af0 {Error Domain=nfcd Code=29 "Tag Error" UserInfo={NSLocalizedDescription=Tag Error, NSUnderlyingError=0x303bd6910 {Error Domain=com.apple.nfstack Code=20 "No response from tag" UserInfo={NSLocalizedDescription=No response from tag}}}}}
3
1
1.6k
1d
StoreKit 2 returns USD product metadata in TestFlight while the storefront is FRA/EUR
Hello, We would appreciate some guidance regarding an unexpected StoreKit currency result in a TestFlight build. Our iPhone language and region are both set to France. The Sandbox tester is also configured for France, and our subscription products have French availability and pricing configured in App Store Connect. In the TestFlight build we diagnosed, StoreKit reports the current storefront as France with EUR: storefront=FRA/143442/EUR However, all 10 subscription products are returned with USD product metadata: products=10/10 formatCurrencies=USD localeCurrencies=USD error=NONE Example: formatCurrency=USD locale=fr_US_currency_USD localeCurrency=USD display=1,99 $US price=1.99 We first observed this through Flutter's in_app_purchase integration. To determine whether the Flutter plugin was involved, we added a native StoreKit 2 diagnostic to the same TestFlight build. The native result was identical: receipt=sandboxReceipt storefront before=FRA/143442/EUR storefront after=FRA/143442/EUR products=10/10 formatCurrencies=USD localeCurrencies=USD error=NONE The issue appears specific to the TestFlight distribution. When the application is installed directly from the development computer, prices are returned in euros on the same device. We also tested with the regular Media & Purchases account signed out and a French Sandbox tester connected. Once the products loaded successfully, StoreKit still returned USD metadata. In another configuration, the application displayed the USD price while Apple's purchase sheet displayed the price in euros. We are using the price and formatting information returned directly by StoreKit. We do not want to infer the currency from the device region or perform a client-side currency conversion, because StoreKit should remain the authoritative source. Could you please help us understand: Is it expected for Storefront.current to report FRA/EUR while Product.priceFormatStyle.currencyCode, its locale currency, and Product.displayPrice use USD? Could a TestFlight or App Store Connect configuration cause product metadata to use a different currency from the current storefront? Is there another account, availability, pricing or distribution setting that we should verify? Is there a recommended way to refresh or invalidate the product metadata used by a TestFlight installation? We have already filed Feedback Assistant report FB24723329, which is currently under investigation. Thank you very much for any clarification or additional diagnostic steps you can suggest.
10
1
1.5k
1d
StoreKit returns USD prices instead of EUR in TestFlight, blocking app release (iOS 27.0.1)
We are experiencing the same issue with two independent native iOS apps on an iPhone running iOS 27.0.1, using TestFlight in France. Our annual subscription displays US$34.90 instead of €39.90, and our non-consumable purchase displays US$5.99 instead of €6.99. Both apps displayed the correct EUR prices during local Xcode testing. In TestFlight, Apple's native purchase sheets still show the correct EUR prices, and both purchases work successfully. We have contacted Apple Developer Support (case 103017935062). As this issue is delaying the time-sensitive release of our educational app, could Apple confirm whether a workaround is available or whether a fix is planned? https://developer.apple.com/forums/thread/845478 Thank you.
0
0
33
1d
NEURLFilterManager: inconsistent per-domain blocking (some sites never block, one flaps) - confirmed PIR database is correct
Hello, Some context: DropBet is an app that helps people with gambling addiction stay off gambling sites and apps, using NEURLFilterManager/PIR to block a large list of known gambling domains system-wide. For a lot of our users this filter is a core part of their recovery > reliability really matters here. Since fixing an unrelated HPKE encryption bug (separate thread, now closed), the filter works end-to-end for the first time, but blocking is inconsistent per domain in a way I can't explain from my side: winamax.fr and the Winamax app: blocked reliably, every single time > clean "connection failed" style block, confirmed to load fine with protection off. unibet.fr and betclic.fr: never blocked, consistently > confirmed even after a full device reboot (rules out stale caching), and confirmed identical across both Safari and Chrome on iOS tested side-by-side (so not browser-specific). olybet.fr: flaps > the page reloads every 2-3 seconds with protection on, also identical across both browsers. Confirmed this only happens with the filter enabled (tested toggling protection off/on against the same page). unibet.fr auto-redirects into the native Unibet app via a Universal Link before the page loads, unlike betclic.fr which stays in the browser > different code path, possibly relevant. To rule out any issue on our end, I wrote a standalone test that queries our deployed PIR database shards directly - bypassing OHTTP, the app, and the device entirely - for all of the domains above plus their www. variants. All of them correctly return the blocked value, no exceptions, including unibet.fr and betclic.fr which never block on the actual device. So the database, the PIR protocol implementation, and the server are confirmed correct for every domain I've tested. This points at something in how NEURLFilterManager/ciphermld applies a correctly-received PIR verdict on-device - possibly related to query batching, an evaluation-key edge case, or Universal Link handling bypassing the filter before a web request is even made. Is there anything you can share about how the client applies results once decrypted, or known issues around any of this?
5
0
126
1d
Driver approval pending
Hi team, It has been nearly a month since we submitted our driver approval request (3DRN3G5AMB), and it is currently still pending. This prolonged delay is severely impacting our operations, and as there is no self-service option for us to expedite this on our end, we urgently need your assistance to move this forward. Could you please check the status of this request with the relevant team and let us know what is causing the hold-up, or how we can escalate it? Thank you for your prompt help with this
0
0
37
1d
First iOS App Stuck in Waiting for Review for Over 30 Days –– No Support Response
Hello Apple App Review Team, My first iOS app, Loopa – Video & Audio Editor (version 1.0.0), has been stuck in "Waiting for Review" for approximately 30 days. I have already contacted Apple Developer Support through the official contact form but have not received a response. Could an Apple representative please investigate whether my submission is progressing normally or whether additional information is required? I would appreciate any assistance. Thank you.
0
0
24
2d
Notification filtering entitlement for an on-call pager heartbeat — none of the form's use cases fit
We build an internal on-call pager app for our engineers, distributed through TestFlight only. Our server sends a heartbeat push to each device every 4 hours. The Notification Service Extension uses it to re-arm a dead-man's-switch alarm on the device: if heartbeats stop arriving, the alarm goes off and the engineer knows the paging pipeline is down. The heartbeat has to be an alert push with mutable-content, because that is the only push type that reliably launches the extension, including when the user has swiped the app away. Background pushes don't work here: they are throttled and are not delivered to an app the user has force-quit, so the dead-man alarm would fire falsely. The problem is that every heartbeat leaves an entry in Notification Center. It carries nothing actionable, and it teaches on-call engineers to ignore notifications from a pager app. Real alerts are always shown, and the extension still shows a visible notification when a heartbeat detects a problem (missed alerts, failure to re-arm). We already send heartbeats with interruption-level passive and an apns-collapse-id, so it is a single quiet entry, but it is still there. com.apple.developer.usernotifications.filtering would solve this exactly. However, the request form requires picking one of four use cases (end-to-end encrypted messaging, earthquake warnings, education alerts, healthcare alerts), and ours is none of them. An earlier reply on this forum said other use cases are welcome to apply (https://developer.apple.com/forums/thread/676672), but the form no longer offers a way to describe one. Questions: Can an app whose use case is outside the four listed apply for the entitlement? If so, how should we fill in the required use-case field? If not, is there a supported way to have an alert push launch the extension without leaving an entry in Notification Center? For example, is it supported for the extension to remove its own delivered notification with removeDeliveredNotifications(withIdentifiers:) after calling the content handler? Thanks!
2
0
158
2d
Family Controls: what may leave the device, and does school distribution count as an organizational setting?
Hello, My colleague and I are building a digital wellbeing app for high school students aged 14–17. Students install it on their own iPhones and choose to use it. It is not a covert monitoring or parental control tool. Students set a daily social media goal and earn points for meeting it, which they can redeem for rewards offered by their school. We plan to use FamilyControls with individual authorization, and DeviceActivity. We have read the Family Controls Framework section of the Developer Program License Agreement (section 3.3.3). It says device or usage data may not be shared beyond the individual and their device, and we want to design within it. On-device storage: A DTS reply in another thread (https://developer.apple.com/forums/thread/825822) says device activity data may be used within the device activity target, as long as this doesn't involve storing or manipulating the data. May our DeviceActivityMonitor extension record in an App Group that a threshold was reached, so our main app can show the student their own progress? Derived results: With the student's explicit consent, may the app send our server only a coarse result computed on the device? For example: a. "Goal met" or "goal not met" for the day b. A daily tier, such as "under 1 hour" Does Apple consider either of these "device or usage data"? Redeeming rewards: If neither is allowed, what is the recommended way to let a student redeem a reward based on a result that stays on their device? School distribution: Schools would distribute the app. Staff would see only class-level aggregates, computed on our server from the results in question 2, such as "70% of consenting students met their goal". No individual result is visible to anyone but the student. Would this count as an "organizational setting" under the agreement? If so, which part of the design causes that? Would love some help on these questions, Barak
0
0
37
2d
IOS Can't assign requested address, errno = 49
userlog.txt We've run into some HTTP request errors, details as follows: We're currently at a loss because restarting the app doesn't help, only rebooting the phone restores things to normal. Based on tracking data, the occurrence rate for users is about 0.033%, and it's only happening on iOS, Android is fine. iOS operating system versions: 14-27 are all affected. The same issue appears in Rust, Flutter, and C/C++. Rust: 2026-07-11-19:39:22.252+0800|F4E26069-2D7E-4D5F-8B53-664E012B2CA7|UPLogDefaultLogger|DEBUG|测试模式|1023629905|[userdomain_rust/rust_userdomain/src/operator/device_ops/refresh_device_list_op.rs:61]query_device_list error: HttpRequstFaild(Reqwest(reqwest::Error { kind: Request, url: "https://zj.haier.net/api-gw/wisdomdevice/device/v11/family/devices?familyId=ALL&filterFlag=false", source: hyper_util::client::legacy::Error(Connect, ConnectError("tcp connect error", 36.156.179.34:443, Os { code: 49, kind: AddrNotAvailable, message: "Can't assign requested address" })) })) Flutter: 2026-07-11-15:29:02.718371+0800|b2257ae8-f7d8-41d0-8811-2ff1824f95d9|UpPlugins|ERROR|正常模式|1023629905|level:error tag:smart_home msg:getWholeHousePreferenceSetting err: DioException [unknown]: null Error: SocketException: Connection failed (OS Error: Can't assign requested address, errno = 49), address = zj.haier.net, port = 443 C/C++: 2026-07-11-19:39:15.247588+0800|a991af96-bf02-4b94-a437-d4f7efc249ff|uSDK|ERROR|正常模式|1023629905|[CAE][[cae_sock_no_ssl_last_err:869][connect fd 122 ret -1 err 49: Can't assign requested address] ] Native iOS HTTP interface requests work fine, for example when using AFNetworking. Looking for your help~
4
0
791
2d
[macOS 27] Cannot receive 4096-byte packets over USB CDC-ACM (works in macOS 26)
Hello, I’m facing an issue with a custom USB CDC-ACM device after updating to macOS 27. The device sends 4096-byte packets, which were correctly received under macOS 26. Since I need to transfer large amounts of data, 4096 bytes was a good compromise between performance and reliability. However, now any packet larger than 1019 bytes is not received at all. Wireshark confirms that the packets are present on the USB bus, but neither Serial Tool nor my own software can see them. The device uses the AppleUSBACMData driver (CDC-Data interface, Full Speed USB, with bMaxPacketSize0=64). Fragmenting the incoming data into chunks of 1019 bytes or less works as a temporary fix, but it significantly reduces performance and is not a sustainable solution. I have three specific questions: Is there a hardcoded 1019-byte buffer limit in AppleUSBACMData or IOSerialFamily in macOS 27? Is this a known issue in macOS 27 with CDC-ACM devices? Should I consider writing a custom driver for my device instead of relying on Apple’s default AppleUSBACMData? Any help or insights would be greatly appreciated. Thanks!
Replies
1
Boosts
0
Views
40
Activity
1d
Vendor ID Approval
We are building an iPadOS app that requires a DriverKit USB transport dext, and we have been waiting on the restricted entitlement for over three weeks with no movement on any of our requests. Team ID: AKFY9W27HB Entitlements requested: com.apple.developer.driverkit and com.apple.developer.driverkit.transport.usb ┌────────────┬───────────────┬───────────┐ │ Request ID │ Requested │ Status │ ├────────────┼───────────────┼───────────┤ │ 633LBK79JF │ 25 July 2026 │ Submitted │ ├────────────┼───────────────┼───────────┤ │ 6N8PP3G6BA │ 6 August 2026 │ Submitted │ ├────────────┼───────────────┼───────────┤ │ Y8T72G8YJS │ 6 August 2026 │ Submitted │ └────────────┴───────────────┴───────────┘ All three are still showing "Submitted" with no response, the oldest for over three weeks. What we actually need is one configuration, not three grants. The three requests cover three vendor IDs, but a single dext has to match all of them simultaneously: 0x1452 (5202) 0x1343 (4931) 0x0D16 (3350) I believe this is the same situation as thread 826658 (https://developer.apple.com/forums/thread/826658), where multiple vendor ID requests were consolidated into a single entitlement configuration. If our three can be merged the same way, that is exactly what we need. Any guidance on the status of these three requests, or on consolidating them, would be much appreciated.
Replies
3
Boosts
0
Views
617
Activity
1d
macOS 27/APFS: Supported ACL Absence Verification When acl_get_fd_np Returns ENOENT
Subject: Supported fail-closed ACL absence verification on macOS 27.0.1 / APFS Environment: macOS 27.0.1, build 26A434; APFS; installed macOS 27.0 SDK. We need a supported, documented way to determine whether an existing filesystem object has no effective ACL entries, while rejecting genuine retrieval failures and unsupported or unavailable ACL evidence. We are seeking clarification of the public interface contract, not alleging an Apple defect. For existing directory and regular-file fixtures, pathname metadata and descriptor metadata identify the same object. Errno is cleared immediately before each native call and captured immediately afterward. ACL retrieval uses ACL_TYPE_EXTENDED: acl_get_file(path, ACL_TYPE_EXTENDED) acl_get_fd_np(fd, ACL_TYPE_EXTENDED) On fresh objects, both return NULL with ENOENT. Explicit one-entry fixture ACLs are retrieved successfully. Explicit zero-entry fixture ACLs can also yield NULL/ENOENT, while attribute queries return a serialized zero-entry ACL. The attribute queries use getattrlist() and descriptor-bound fgetattrlist(), requesting ATTR_CMN_RETURNED_ATTRS | ATTR_CMN_EXTENDED_SECURITY, with FSOPT_NOFOLLOW | FSOPT_REPORT_FULLSIZE and WITHOUT FSOPT_PACK_INVAL_ATTRS. Buffer lengths, variable-reference bounds and returned-attribute validity are checked. For the existing directories of interest, both calls succeed but omit the ATTR_CMN_EXTENDED_SECURITY returned bit. Explicit populated and zero-entry fixture records do set the bit. APFS reports valid VOL_CAP_INT_EXTENDED_SECURITY support; we do not assume that volume capability proves per-object ACL availability. On macOS 27.0.1, build 26A434, using APFS, which supported interface and documented conditions allow software to distinguish an absent ACL from unavailable or unsupported ACL evidence when descriptor-bound attribute queries succeed but omit ATTR_CMN_EXTENDED_SECURITY and native ACL getters return ENOENT for an existing object? Please clarify: Whether ENOENT has a supported ACL-absence interpretation, and under exactly which checked conditions. Whether an omitted extended-security attribute can establish ACL absence, rather than unavailable or unsupported evidence. How explicit zero-entry ACLs differ from absent ACL records through supported interfaces. How KAUTH_FILESEC_NOACL should be interpreted through supported APIs. How genuine retrieval failures, including permission, I/O, allocation and unsupported-operation errors, must remain distinguishable. Whether a supported descriptor-bound verification method exists that preserves fail-closed security checks and object identity binding; please identify its guarantees and limitations regarding pathname/ancestor changes and later operations. Whether relevant behavior is specific to this macOS/APFS version. Please identify the applicable public documentation or supported verification sequence. We do not want to modify permissions, synthesize ACLs on target objects, treat invalid-attribute defaults as real evidence, or accept ambiguous omission/ENOENT as success. Existing ownership, mode and confinement checks must remain separate mandatory checks. If no public API can make this distinction reliably, please state that limitation.
Replies
10
Boosts
0
Views
383
Activity
1d
Can macOS enforce a 512 MiB combined address-space cap before child code runs?
On Apple silicon macOS, is there a supported public mechanism that can enforce a hard combined mapped virtual address-space ceiling of 512 MiB for a parent process and its new child from the first charged creation step through loading the child's executable image, before the child runs any application code? The current investigation targets macOS build 26B123 on arm64. We need to know how the supported limit accounts for inherited maps, shared-region reservations and image mappings during process creation. If the supported route is to partition the ceiling between per-process limits, please specify whether the child limit applies before its first charged map and how a limit failure is reported. Please identify the public API or documentation, supported OS versions and required setup. A control that only applies to resident memory or starts after application code begins would not cover this question.
Replies
1
Boosts
0
Views
86
Activity
1d
Hard aggregate process-tree memory enforcement on macOS
Is there a publicly supported macOS API, entitlement, or framework capable of enforcing a hard 64 MiB aggregate memory ceiling across a process tree, including its supervisor, observer, and descendants? Enforcement must be established before workload execution, survive fork/exec, and remain effective if the controlling process crashes. We have examined per-process resource limits and process-memory reporting, but these do not establish the required aggregate guarantee. If supported, which API and enforcement mechanism should we use? If not, is there a documented platform limitation?
Replies
1
Boosts
0
Views
33
Activity
1d
"Why doesn't the earbud button start Push to Talk?"
Apple's documentation says that once an app joins a Push to Talk channel, pressing "play" on a headset should start recording. On my iPhone it doesn't. Both the M015(our earbud) and AirPods send the press to Apple Music instead. The phone's own log says "No context for this command", then opens Music. So we ask Apple: What exactly has to be true for the earbud press to reach Push to Talk instead of Music? Does it work at all when nothing is playing? Can one press start and the next press stop, or is it press-and-hold only? Is a Bluetooth data signal from the earbud the only other way?
Replies
1
Boosts
0
Views
79
Activity
1d
Software I/O Support in SCSIControllerDriverKit
I'm pleased to announce that the initial beta of macOS 27.3 (26C5035r) includes our support for software I/O in SCSIControllerDriverKit. The class reference has not yet been updated to include this, but it is described in the release notes: "SCSIControllerDriverKit now supports software controllers. A software controller declares itself by setting kIOPropertySoftwareIOKey (an OSBoolean, from <IOKit/storage/IOStorageControllerCharacteristics.h>) through UserSetHBAProperties(). The system honors this setting only before controller initialization completes, so it stays fixed for the life of the controller. Such a controller doesn’t create any DMA mappings, and your dext can access the data buffer associated with a particular I/O through the UserCopyDataBuffer API. (182426393) (FB23797269)" Clearing up a few details on that process: The property kIOPropertySoftwareIOKey ("Software I/O") is created and set to "false" when IOSCSIParallelInterfaceController is initially created. That means a DEXT can check for software I/O support by using CopyProperties() to look for that key, instead of relying on a system version check or similar side channel check. The kIOPropertySoftwareIOKey must be set before the controller initialization sequence begins. Changes to the value after that point will fail. If kIOPropertySoftwareIOKey has been properly set to "true", then fBufferIOVMAddr will be set to NULL. This behavior can be used as additional confirmation that the kernel driver is properly configured. The deprecation and replacement of UserGetDataBuffer by UserCopyDataBuffer was primarily done to faciliate software I/O controllers. Functionally, the two APIs actually behave identically, however, the name change resolves the analyzer warnings that releasing the returned IOMemoryDescriptor previously caused. __Kevin ElliottDTS Engineer, CoreOS/Hardware
Replies
0
Boosts
0
Views
53
Activity
1d
BNNSNDArrayDescriptor rejects manually calculated strides?
Supporse, in a tight loop, I want to matrix MxP with PxN to get MxN (in rowNum x colNum convention). The call to BNNSNDArrayDescriptor.init(data:shape:) always fails if I (correctly) specify all the strides. /* The simplest and fastest matmul(A,B) is when both A and B are in inner- dimension-major order - with the size P dimension stored continuous. i.e. A*(B^T) when A,B are stored in C-like row-major order, or, first-dimension-major order, but first index is the row index, like BLAS */ import Accelerate // Different sizes, so incorrectly-ordered sizes/strides/indices generate error let M: Int = 16 let N: Int = 8 let P: Int = 32 let sizeA = BNNS.Shape.matrixFirstMajor(M, P, stride: (0, 0)) // OK: stride:(1, 0) // bad: stride:(0, 1) -- Matmul failed, because 1 is given to the wrong dimension: should be at least P // stride:(1, P) -- Failed to create BNNSNDArrayDescriptor??? let sizeB = BNNS.Shape.matrixFirstMajor(N, P, stride: (0, 0)) // OK: stride:(1, 0) bad: stride:(0, 1), stride:(1, P) let sizeC = BNNS.Shape.matrixFirstMajor(M, N, stride: (0, 0)) // OK: stride:(1, 0) bad: stride:(0, 1), stride:(1, N) let Mat1 = UnsafeMutableRawBufferPointer .allocate(byteCount: (M+N)*P*4, alignment: 128) .initializeMemory(as: Float.self, repeating: 1.234) let Mat2 = UnsafeMutableRawBufferPointer .allocate(byteCount: M*N*4, alignment: 128) .initializeMemory(as: Float.self, repeating: 0.0) guard let descA = BNNSNDArrayDescriptor( data: Mat1.extracting(0..<M*P), shape: sizeA), let descB = BNNSNDArrayDescriptor( data: Mat1.extracting(M*P..<(M+N)*P), shape: sizeB), let descC = BNNSNDArrayDescriptor( data: Mat2, shape: sizeC) else { print("Failed to create BNNSNDArrayDescriptor."); exit(1) } print(descA) // workspaceSize = BNNS.matrixMultiplicationWorkspaceSize(...) // withUnsafeTemporaryAllocation(byteCount: workspaceSize, alignment: ...) { wksp in var iter = 0 while iter < 1000{ do { try BNNS.applyMatrixMultiplication( inputA: descA, transposed: false, inputB: descB, transposed: true, output: descC, alpha: 1.0, workspace: /*wksp*/ nil) } catch { // Probably got the dimensions backwards, so two matrices are not multiplicable print("Matmul failed: \(error)") break } iter += 1 }I guess in the Swift overlay, the verifying initializer checked a wrong arrangement of stride[k] >= size[k-1] * stride[k-1]. These RowMajor FirstMajor, etc. with all different size and index orderings, are surely confusing. bnns_constants.h:1394 gives the right description. PS: Please don't educate me about deprecation of BNNS. context.executeFunction(arguments: [Aptr, Bptr, Cptr]) is nearly 5x slower for this one-matmul-in-a-tight-loop case, and there's no way to reuse the underlying graph in another thread yet, not withBNNSGraph.Builder. The (im)practical alternative is calling sgemm() that is even more verbose than this.
Replies
2
Boosts
0
Views
108
Activity
1d
FileManager.default.contentsOfDirectory fails with SMB
Hi, I am trying to list the contents of a directory selected by the user using the following code: let documentPicker = UIDocumentPickerViewController(forOpeningContentTypes: [.folder]) documentPicker.delegate = self self.present(documentPicker, animated: true) func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {         guard let folderUrl = urls.first else {return} let startAccessing&#9;= folderUrl.startAccessingSecurityScopedResource()         guard startAccessing else { print("ERROR")             return         }         defer {             if startAccessing {                 folderUrl.stopAccessingSecurityScopedResource()             }         }         var error : NSError? = nil         NSFileCoordinator().coordinate(readingItemAt: folderUrl, error: &error) { (url) in             let startAccessing = url.startAccessingSecurityScopedResource()             guard startAccessing else {                 print("ERROR 2")                 return             }             defer {                 if startAccessing { folderUrl.stopAccessingSecurityScopedResource()                 }             }                          do {                 let files = try FileManager.default.contentsOfDirectory(at: url, includingPropertiesForKeys: [.nameKey])                 print(files)             } catch let filesError {                 print(filesError)             }         }     } This works for iCloud and for local files. It also, curiously, works on empty folders on the SMB server (though, obviously, it returns an empty array). However, for SMB folders with contents I get the following cryptic error message. Error Domain=NSCocoaErrorDomain Code=256 "The file “downloads” couldn’t be opened." UserInfo={NSURL=file:///private/var/mobile/Library/LiveFiles/com.apple.filesystems.smbclientd/Gabgugfiles/downloads, NSFilePath=/private/var/mobile/Library/LiveFiles/com.apple.filesystems.smbclientd/Gabgugfiles/downloads, NSUnderlyingError=0x28010b0c0 {Error Domain=NSPOSIXErrorDomain Code=10006 "Unknown error: 10006"}} In addition, modifying the code slightly so the user picks an image instead works just fine too. I can load the image from the supplied URL. I have read the documentation here - https://developer.apple.com/documentation/uikit/view_controllers/providing_access_to_directories and watched the WWDC 2019 presentation, What's New in File Management and Quicklook, where this was introduced but this hasn't turned up any answers. My app is set up with Supports Document Browser. Is there something I'm doing wrong? The way this is described what I'm trying to do, get a list of files and act on each of them, is exactly what this is intended for yet it's not working.
Replies
12
Boosts
0
Views
3.5k
Activity
1d
UGreen NAS - Unable to enumerate contents of directory on iOS, works on macOS
I have a UGreen NAS. My app can read the contents of a folder on the NAS from macOS, but it cannot read the contents of a folder from iOS. I bring up a UIDocumentPickerViewController(forOpeningContentTypes: [UTType.folder], asCopy: false). I can pick a folder on the iPad’s internal storage, and successfully enumerate its contents. On the UGreen, I can pick a folder, but the content enumeration always returns zero items (no errors). Enumeration of the UGreen works from macOS. It also works on the iPad when connecting to a Mac mini, or a Synology NAS. . Files.app is able to view the UGreen folder and its contents. Oddly, my app cannot enumerate the contents, but it IS able to write a file to that UGreen folder. Since Files.app can enumerate and I can write to the UGreen folder (and I can enumerate contents on other servers) - how can I get the enumeration to work? Feedback is FB22955130
Replies
13
Boosts
0
Views
890
Activity
1d
iPhone Duo: NFCISO7816Tag reads fail with error 102 while connected to Wi-Fi
tl;dr: On iPhone Duo with connected WiFi it is not possible to fully verify/scan a NFC ePassport. On iPhone Duo (iPhone19,4, iOS 27.2), reading ePassports via NFCTagReaderSession / NFCISO7816Tag fails reproducibly while the device is connected to Wi-Fi. Access control (PACE) succeeds. During the following file reads (EF.SOD, DG2), one sendCommand call gets no response for about 2 seconds and then fails with NFCReaderError code 102 ("Tag response error / no response"). The failing command varies from run to run. After disconnecting from Wi-Fi in Control Center, the same passport reads immediately. Disconnecting is enough; Wi-Fi does not need to be turned off. The device lies still on the document in all attempts. ReadID Me, Regula Document Reader and our own app (KINEGRAM Digital Seal) all fail the same way. Filed as FB25502333 with sysdiagnose and video. This looks similar to the 2024 issue on iPhone 15 Pro / 16 Pro, where turning off Wi-Fi also helped: https://developer.apple.com/forums/thread/765855 If you see this on an iPhone Duo too, please file a Feedback and reference FB25502333.
Replies
1
Boosts
0
Views
65
Activity
1d
NFC (ISO7816)- Tag Connection Lost IPhone 15 & 16 variants
NFC reading starts but after BAC, during the reading of DG2 the NFC stops reading and returns with Tag connection Lost error . It almost fails everytime on iPhone 15 Pro max with the following error. What's the solution for this? This is really important because our app entirely relies on the NFC data to proceed forward. This always fails in iPhone 15 & 16. Same card works fine on older iPhone models. What change should we do or include for the newer models. Error Domain=NFCError Code=102 "Tag response error / no response" UserInfo={NSLocalizedDescription=Tag response error / no response, NSUnderlyingError=0x303bd6af0 {Error Domain=nfcd Code=29 "Tag Error" UserInfo={NSLocalizedDescription=Tag Error, NSUnderlyingError=0x303bd6910 {Error Domain=com.apple.nfstack Code=20 "No response from tag" UserInfo={NSLocalizedDescription=No response from tag}}}}}
Replies
3
Boosts
1
Views
1.6k
Activity
1d
StoreKit 2 returns USD product metadata in TestFlight while the storefront is FRA/EUR
Hello, We would appreciate some guidance regarding an unexpected StoreKit currency result in a TestFlight build. Our iPhone language and region are both set to France. The Sandbox tester is also configured for France, and our subscription products have French availability and pricing configured in App Store Connect. In the TestFlight build we diagnosed, StoreKit reports the current storefront as France with EUR: storefront=FRA/143442/EUR However, all 10 subscription products are returned with USD product metadata: products=10/10 formatCurrencies=USD localeCurrencies=USD error=NONE Example: formatCurrency=USD locale=fr_US_currency_USD localeCurrency=USD display=1,99 $US price=1.99 We first observed this through Flutter's in_app_purchase integration. To determine whether the Flutter plugin was involved, we added a native StoreKit 2 diagnostic to the same TestFlight build. The native result was identical: receipt=sandboxReceipt storefront before=FRA/143442/EUR storefront after=FRA/143442/EUR products=10/10 formatCurrencies=USD localeCurrencies=USD error=NONE The issue appears specific to the TestFlight distribution. When the application is installed directly from the development computer, prices are returned in euros on the same device. We also tested with the regular Media & Purchases account signed out and a French Sandbox tester connected. Once the products loaded successfully, StoreKit still returned USD metadata. In another configuration, the application displayed the USD price while Apple's purchase sheet displayed the price in euros. We are using the price and formatting information returned directly by StoreKit. We do not want to infer the currency from the device region or perform a client-side currency conversion, because StoreKit should remain the authoritative source. Could you please help us understand: Is it expected for Storefront.current to report FRA/EUR while Product.priceFormatStyle.currencyCode, its locale currency, and Product.displayPrice use USD? Could a TestFlight or App Store Connect configuration cause product metadata to use a different currency from the current storefront? Is there another account, availability, pricing or distribution setting that we should verify? Is there a recommended way to refresh or invalidate the product metadata used by a TestFlight installation? We have already filed Feedback Assistant report FB24723329, which is currently under investigation. Thank you very much for any clarification or additional diagnostic steps you can suggest.
Replies
10
Boosts
1
Views
1.5k
Activity
1d
StoreKit returns USD prices instead of EUR in TestFlight, blocking app release (iOS 27.0.1)
We are experiencing the same issue with two independent native iOS apps on an iPhone running iOS 27.0.1, using TestFlight in France. Our annual subscription displays US$34.90 instead of €39.90, and our non-consumable purchase displays US$5.99 instead of €6.99. Both apps displayed the correct EUR prices during local Xcode testing. In TestFlight, Apple's native purchase sheets still show the correct EUR prices, and both purchases work successfully. We have contacted Apple Developer Support (case 103017935062). As this issue is delaying the time-sensitive release of our educational app, could Apple confirm whether a workaround is available or whether a fix is planned? https://developer.apple.com/forums/thread/845478 Thank you.
Replies
0
Boosts
0
Views
33
Activity
1d
NEURLFilterManager: inconsistent per-domain blocking (some sites never block, one flaps) - confirmed PIR database is correct
Hello, Some context: DropBet is an app that helps people with gambling addiction stay off gambling sites and apps, using NEURLFilterManager/PIR to block a large list of known gambling domains system-wide. For a lot of our users this filter is a core part of their recovery > reliability really matters here. Since fixing an unrelated HPKE encryption bug (separate thread, now closed), the filter works end-to-end for the first time, but blocking is inconsistent per domain in a way I can't explain from my side: winamax.fr and the Winamax app: blocked reliably, every single time > clean "connection failed" style block, confirmed to load fine with protection off. unibet.fr and betclic.fr: never blocked, consistently > confirmed even after a full device reboot (rules out stale caching), and confirmed identical across both Safari and Chrome on iOS tested side-by-side (so not browser-specific). olybet.fr: flaps > the page reloads every 2-3 seconds with protection on, also identical across both browsers. Confirmed this only happens with the filter enabled (tested toggling protection off/on against the same page). unibet.fr auto-redirects into the native Unibet app via a Universal Link before the page loads, unlike betclic.fr which stays in the browser > different code path, possibly relevant. To rule out any issue on our end, I wrote a standalone test that queries our deployed PIR database shards directly - bypassing OHTTP, the app, and the device entirely - for all of the domains above plus their www. variants. All of them correctly return the blocked value, no exceptions, including unibet.fr and betclic.fr which never block on the actual device. So the database, the PIR protocol implementation, and the server are confirmed correct for every domain I've tested. This points at something in how NEURLFilterManager/ciphermld applies a correctly-received PIR verdict on-device - possibly related to query batching, an evaluation-key edge case, or Universal Link handling bypassing the filter before a web request is even made. Is there anything you can share about how the client applies results once decrypted, or known issues around any of this?
Replies
5
Boosts
0
Views
126
Activity
1d
Driver approval pending
Hi team, It has been nearly a month since we submitted our driver approval request (3DRN3G5AMB), and it is currently still pending. This prolonged delay is severely impacting our operations, and as there is no self-service option for us to expedite this on our end, we urgently need your assistance to move this forward. Could you please check the status of this request with the relevant team and let us know what is causing the hold-up, or how we can escalate it? Thank you for your prompt help with this
Replies
0
Boosts
0
Views
37
Activity
1d
First iOS App Stuck in Waiting for Review for Over 30 Days –– No Support Response
Hello Apple App Review Team, My first iOS app, Loopa – Video & Audio Editor (version 1.0.0), has been stuck in "Waiting for Review" for approximately 30 days. I have already contacted Apple Developer Support through the official contact form but have not received a response. Could an Apple representative please investigate whether my submission is progressing normally or whether additional information is required? I would appreciate any assistance. Thank you.
Replies
0
Boosts
0
Views
24
Activity
2d
Notification filtering entitlement for an on-call pager heartbeat — none of the form's use cases fit
We build an internal on-call pager app for our engineers, distributed through TestFlight only. Our server sends a heartbeat push to each device every 4 hours. The Notification Service Extension uses it to re-arm a dead-man's-switch alarm on the device: if heartbeats stop arriving, the alarm goes off and the engineer knows the paging pipeline is down. The heartbeat has to be an alert push with mutable-content, because that is the only push type that reliably launches the extension, including when the user has swiped the app away. Background pushes don't work here: they are throttled and are not delivered to an app the user has force-quit, so the dead-man alarm would fire falsely. The problem is that every heartbeat leaves an entry in Notification Center. It carries nothing actionable, and it teaches on-call engineers to ignore notifications from a pager app. Real alerts are always shown, and the extension still shows a visible notification when a heartbeat detects a problem (missed alerts, failure to re-arm). We already send heartbeats with interruption-level passive and an apns-collapse-id, so it is a single quiet entry, but it is still there. com.apple.developer.usernotifications.filtering would solve this exactly. However, the request form requires picking one of four use cases (end-to-end encrypted messaging, earthquake warnings, education alerts, healthcare alerts), and ours is none of them. An earlier reply on this forum said other use cases are welcome to apply (https://developer.apple.com/forums/thread/676672), but the form no longer offers a way to describe one. Questions: Can an app whose use case is outside the four listed apply for the entitlement? If so, how should we fill in the required use-case field? If not, is there a supported way to have an alert push launch the extension without leaving an entry in Notification Center? For example, is it supported for the extension to remove its own delivered notification with removeDeliveredNotifications(withIdentifiers:) after calling the content handler? Thanks!
Replies
2
Boosts
0
Views
158
Activity
2d
Family Controls: what may leave the device, and does school distribution count as an organizational setting?
Hello, My colleague and I are building a digital wellbeing app for high school students aged 14–17. Students install it on their own iPhones and choose to use it. It is not a covert monitoring or parental control tool. Students set a daily social media goal and earn points for meeting it, which they can redeem for rewards offered by their school. We plan to use FamilyControls with individual authorization, and DeviceActivity. We have read the Family Controls Framework section of the Developer Program License Agreement (section 3.3.3). It says device or usage data may not be shared beyond the individual and their device, and we want to design within it. On-device storage: A DTS reply in another thread (https://developer.apple.com/forums/thread/825822) says device activity data may be used within the device activity target, as long as this doesn't involve storing or manipulating the data. May our DeviceActivityMonitor extension record in an App Group that a threshold was reached, so our main app can show the student their own progress? Derived results: With the student's explicit consent, may the app send our server only a coarse result computed on the device? For example: a. "Goal met" or "goal not met" for the day b. A daily tier, such as "under 1 hour" Does Apple consider either of these "device or usage data"? Redeeming rewards: If neither is allowed, what is the recommended way to let a student redeem a reward based on a result that stays on their device? School distribution: Schools would distribute the app. Staff would see only class-level aggregates, computed on our server from the results in question 2, such as "70% of consenting students met their goal". No individual result is visible to anyone but the student. Would this count as an "organizational setting" under the agreement? If so, which part of the design causes that? Would love some help on these questions, Barak
Replies
0
Boosts
0
Views
37
Activity
2d
IOS Can't assign requested address, errno = 49
userlog.txt We've run into some HTTP request errors, details as follows: We're currently at a loss because restarting the app doesn't help, only rebooting the phone restores things to normal. Based on tracking data, the occurrence rate for users is about 0.033%, and it's only happening on iOS, Android is fine. iOS operating system versions: 14-27 are all affected. The same issue appears in Rust, Flutter, and C/C++. Rust: 2026-07-11-19:39:22.252+0800|F4E26069-2D7E-4D5F-8B53-664E012B2CA7|UPLogDefaultLogger|DEBUG|测试模式|1023629905|[userdomain_rust/rust_userdomain/src/operator/device_ops/refresh_device_list_op.rs:61]query_device_list error: HttpRequstFaild(Reqwest(reqwest::Error { kind: Request, url: "https://zj.haier.net/api-gw/wisdomdevice/device/v11/family/devices?familyId=ALL&filterFlag=false", source: hyper_util::client::legacy::Error(Connect, ConnectError("tcp connect error", 36.156.179.34:443, Os { code: 49, kind: AddrNotAvailable, message: "Can't assign requested address" })) })) Flutter: 2026-07-11-15:29:02.718371+0800|b2257ae8-f7d8-41d0-8811-2ff1824f95d9|UpPlugins|ERROR|正常模式|1023629905|level:error tag:smart_home msg:getWholeHousePreferenceSetting err: DioException [unknown]: null Error: SocketException: Connection failed (OS Error: Can't assign requested address, errno = 49), address = zj.haier.net, port = 443 C/C++: 2026-07-11-19:39:15.247588+0800|a991af96-bf02-4b94-a437-d4f7efc249ff|uSDK|ERROR|正常模式|1023629905|[CAE][[cae_sock_no_ssl_last_err:869][connect fd 122 ret -1 err 49: Can't assign requested address] ] Native iOS HTTP interface requests work fine, for example when using AFNetworking. Looking for your help~
Replies
4
Boosts
0
Views
791
Activity
2d