Delve into the world of built-in app and system services available to developers. Discuss leveraging these services to enhance your app's functionality and user experience.

Posts under General subtopic

Post

Replies

Boosts

Views

Activity

Live Lookup flow stuck at /issue/token-key-for-user-token endpoint
Hi Apple engineering team, I’m trying to integrate the new Live Caller ID Lookup (PIR) on iOS using your pir-service-example code as well as a custom mock server in Vapor, but the extension never advances past the /issue/token-key-for-user-token step. I’ve tried both: 1. Official Example Cloned https://github.com/apple/pir-service-example Ran PIRService locally Confirmed that GET /.well-known/private-token-issuer-directory → 200 GET /issue/token-key-for-user-token → 200 (DER bytes, correct SPKI) No POST /issue ever fires 2. Mock Server (Vapor) Implemented all five endpoints (/config, /.well-known/private-token-issuer-directory, /issue/token-key-for-user-token, /issue, /queries) Verified with curl and openssl asn1parse that: GET /.well-known/private-token-issuer-directory Content-Type: application/private-token-issuer-directory { "issuer-request-uri":"https://…/issue", "token-keys":[…] } GET /issue/token-key-for-user-token Content-Type: application/octet-stream <DER bytes> Added Cache-Control: public, max-age=3600 on directory and SPKI Stubbed POST /issue to always return { "token": "" } Still no POST /issue request from the extension Reproduction Steps Install and enable a Live Lookup extension pointing to my server. Trigger an incoming call on device. Watch server logs—only see the two GETs, never /issue or /queries. Expected Behavior After fetching the SPKI DER, the framework should issue a POST /issue call (Privacy Pass flow) and then POST /queries. Observed Behavior Stuck in an infinite loop of: GET /.well-known/private-token-issuer-directory GET /issue/token-key-for-user-token (repeat…) No progression to the /issue or /queries endpoints. What I’ve Tried Verified JSON kebab-case and headers exactly match examples Confirmed SPKI DER is valid via openssl asn1parse Added Cache-Control headers Tested on real device, localhost url, and ngrok public URL Mocked a valid-looking token response Could you advise what additional requirement or format detail I’m missing that prevents from advancing past /issue/token-key-for-user-token? These are the main files: LiveLookupExtension.swift routes.swift service-config.json Thanks in advance!
0
0
134
May ’25
Recorded video looks blurry, color-washed, low bitrate, compressed using ScreenCaptureKit
Hello everyone, I am trying to implement ScreenCaptureKit into my project, I am using MacOs 26 for the target version and followed this official project from apple regarding the screencapture kit. https://developer.apple.com/documentation/ScreenCaptureKit/capturing-screen-content-in-macos I used the official exact code and implemented in my app, but the results are not good. The video look blurry, unclear, lost colors and its like 720p honestly. The 1st video frame t is result when I integrate it in my app. After that, I used another app ( which was built in electron, they were using screencapturekit as well ) and there results were a lot better. The 2nd video frame is when I recorded using their application. It appears as close to as system display I tried multiple things, but no impressive results. For my purpose, I want to the final recorded video to be as good as the display quality of the system. I also applied .hdr local display and coronolicial, but no help with that as well. Changed codecs to .mov, .hevc, but still no help Why is not the recoded video as high quality as the display
3
0
420
Oct ’25
Weatherkit - visibility units and height
reposting this in case it got missed the first time around here https://developer.apple.com/forums/thread/775900 We had a question that came up when we comparing data from WeatherKit to other sources - WeatherKit visibility was well beyond the boundaries we had historically, even from Darksky. That raises two questions: is visibility actually in meters like the docs say? is this visibility at ground level, 500ft, or some other height? We were seeing visibility numbers of up to 40 miles (after converting the number the API sent to miles), where all of our other sources are usually within 10 miles
0
0
66
Apr ’25
Presenter Overlay Not Showing When Recording a Single Window or Region with ScreenCaptureKit
Hi, I'm using ScreenCaptureKit on macOS 14+ to record a single window. I've noticed that the Presenter Overlay only appears when capturing the entire screen, but it does not appear when recording a specific window or a region. Is there a way to enable the Presenter Overlay while recording a single window or a defined region, similar to how it works with full-screen capture? Any guidance or clarification would be greatly appreciated. Thanks in advance!
0
0
141
May ’25
DeviceActivityReport failing to load "Code = 2"
Hi! For some reason my DeviceActivityReport sometimes fails to load. I've tried setting up a very simple mock views and displaying a report with a simple "Hello world" but even that won't work. It prints the following error message in the terminal but doesn't show anything else or any context as to what has gone wrong. Failed to update the client's configuration: Error Domain=DeviceActivityReportService.ReportViewController.ClientError Code=2 "(null)" It seems like the "makeConfiguration" method for the report isn't even being invoked. That may though just be an issue with printing messages in the extension. Any help on what could be the issue, or even just a message that you're being the same thing would be greatly appreciated!
0
0
164
Oct ’25
Live Caller ID Lookup Implementation
Hello I'm working on Live Caller ID Lookup implementation on my own pet-project, as I understood I need to create app and extension for this app. I also created test PIR-service. I did configure serviceURL, tokenIssuerURL and userTierToken. In My app I implemented following code Task { if LiveCallerIDLookupManager.shared.status(forExtensionWithIdentifier: "some-extension") == .disabled { `//` Show an alert. print("LiveCallerIDLookupManager is disabled") } do { // Open Settings. try await LiveCallerIDLookupManager.shared.openSettings() } catch { } It does open Call settings, but I don't understand what should I do next.
0
0
123
Jun ’25
CarKeyErrorCode in the CarKey framework
I have a question regarding CarKeyErrorCode in the CarKey framework. I plan to use the following methods in the CarKey framework: CarKeyRemoteControl.start(delegate: ) RemoteKeylessEntryAction) Each of the above methods throws an Error. Are these different from CarKeyErrorCode? Is CarKeyErrorCode only used in CarKeyRemoteControlSessionDelegate.remoteControlSession(_:didInvalidateWithError:)? If methods 1-4 do not return CarKeyErrorCode, what kind of Error do they return? Thank you in advance.
1
0
210
Oct ’25
Strange behavior of Speakerbox (or CallKit) with headset operation
I've run Speakerbox(https://docs-assets.developer.apple.com/published/8e99045a90e2/MakingAndReceivingVoIPCallsWithCallKit.zip) to check the behavior of CallKit. When there was one active call and one on hold and another call was received, the behavior was defferent depending on whether I operated it from a headset or not. No headset or operated from CallKit screen When "End & Accept" tapped: the active call is hung up, and the received call is answered. When "End Held & Accept" tapped: the held call is hung up, the active call is held, and the received call is answered. Operated from headset Answer opeation cannot be performed for unknown reasons Disconnect operation caused that all calls other than the one on hold are hung up and the held call is unheld. Hold operation caused that the active call is held and the received call is answered. (Strangely, there are two held calls.) And when I toggle calls at this time, one of the two on hold is hung up for unknown reasons. I tried changing the settings of CXProviderConfiguration and CXCallUpdate, and changing the options in the Audio Session category, but it did not improve. I checked CXActions occurring, and it was as follows. (Call A = held call, Call B = active call, Call C = received call) Disconnect (or Answer?) operation (lacking CXEndCallAction for Call A) CXEndCallAction for Call B CXAnswerCallAction for Call C CXEndCallAction for Call C <- weird CXSetHeldCallAction for Call A onHold=false Hold operation (lacking lacking CXEndCallAction for Call A) CXSetHeldCallAction for Call B CXAnswerCallAction for Call C Toggle calls CXSetHeldCallAction for Call C onHold=true CXSetHeldCallAction for Call A onHold=false CXSetHeldCallAction for Call B onHold=false <- weird CXEndCallAction for Call B
1
0
110
Jul ’25
Question about Shield customization limits in ManagedSettingsUI (videos, text length, personalization)
Hi everyone, I’m currently developing a parental control app that uses the Screen Time API (FamilyControls, ManagedSettings, DeviceActivity). I have a question regarding the customization limits of the Shield UI in ManagedSettingsUI. From the documentation, I understand that we can customize the ShieldConfiguration (background color, blur style, icon, title, subtitle, button labels, etc.). However, I’d like to clarify a few points before finalizing the design: 1. Is it allowed (or technically possible) to display custom media content, such as videos, animations, or interactive elements, inside a custom Shield? 2. Are there limitations on the text length for the title and subtitle fields (e.g. maximum number of characters, multiline support, truncation behavior)? 3. Can the Shield be personalized per user (for example, showing a different title or color scheme based on user preferences or device state)? 4. Are there App Store Review restrictions or UI guidelines that define what a Shield should or should not contain (for instance, whether the Shield can resemble a mini-app experience)? I want to ensure that the implementation fully complies with Apple’s technical and design expectations before submission. Thanks in advance for any official clarification or best practices on how far we can go with Shield customization! Best regards, Ferdinand
0
0
79
Oct ’25
FamilyActivityPicker: manage own device AND children device
Hello, I am unable to figure out how I tell the FamilyActivityPicker whether it should show apps installed on my personal device (to be used with AuthorizationCenter.shared.requestAuthorization(for: .individual)) or apps installed on my child’s device (authenticated their phone via AuthorizationCenter.shared.requestAuthorization(for: .child)). Is there any parameter or SwiftUI modifier I need to apply? Otherwise, how does the user or the app know which token belongs to them and which token belongs to their child’s device? Radar: FB17020977 Thanks a lot for your help!
0
0
122
Mar ’25
ASAM supported App on MacOS
I'd like to write a MacOS App that makes use of the ASAM functonality as described here: https://developer.apple.com/documentation/devicemanagement/autonomoussingleappmode I have tried to use the example with Safari, and have enrolled a Mac with MDM and installed the profile. But when opening Safari it does not appear in Single App Mode. I've only tried it with Safari so far but eventually I want to be able to use my own App. Is there an API that has to be used to enter single app mode programmatically? I've found the whole Assessment API but as I do not have the required entitlements to use that API I'm looking for another solution. The documentation on ASAM does not mention the Assessment API at all, is it the only way to enter "a" single app mode on MacOS? How is the Assessment API linked to ASAM? As far as I have understood there's the com.apple.developer.automatic-assessment-configuration entitlement but apps having this do not need to be configured via MDM? I'm really confused as to what's actually required to be able to get into single app mode on MacOS. The app I'm trying to write isn't really related to an an assessment task, but I am doing this for an academic institution so maybe requesting the entitlement would be feasable. The documentation on ASAM also mentions that the App is granted access to the "Accessibility" API and I've found the whole UIAccessibility/requestGuidedAccessSession but this does not seem to be available on MacOS proper? Any help on this would be greatly appreciated.
0
0
89
Nov ’25
Long running data BLE data syncing in the background
I am working on a Flutter application which is use solely to collect data from a bluetooth low energy (BLE) peripheral and then upload the data to our cloud. The application runs in the background 99% of the time after the initial login and BLE pairing which is causing us some issues. After the Application is backgrounded it would work for a day to 2 days and then stop working. (What I mean with working is to download data from the BLE peripheral and then upload the data to our cloud). Once the data syncing has stopped it would take up to 12 hours until data starts flowing again. I have read in a couple of places that iOS implements some sort of "budget/heuristics" when the application is running in the background to keep track of the application and when this "budget" is used up iOS will stop servicing the application until iOS decides that the application can run in the background again. My question, is it possible via a enablement or some other mechanism to prevent iOS from blocking our application from running in the background to enable 24/7 periodic data uploads every 30 minutes. We have implemented the following so far; The data sync process is triggered from the BLE peripheral using a notification. This notification is sent every 30 minutes. Each sync duration is currently 24 seconds on average, we are working on reducing this to below 10 seconds. We implemented State Restoration to assist iOS in starting the application more efficiently. We are considering using Silent Push Notifications from the Cloud to wake up the application when data hasn't synced in 6 hours. Any assistance would be high appreciated.
3
0
154
Jun ’25
Weatherkit API Historical 404 Errors Starting 3/5/25
We've been using the WeatherKit API for a few years now. Everything has been pretty stable. We'll periodically get 404 errors, but they usually disappear within a couple days. Starting March 5th we've again been getting 404 errors that slowly ramped up to March 20th and continued. We have had no code changes on our end, so something seems to have changed / broken on the server side of things. Here are some example API calls that are giving us a 404 error now https://weatherkit.apple.com/api/v1/weather/en/35.9981205/-78.8920444?dataSets=forecastDaily&dailyStart=2025-03-21T05:00:00Z&timezone=America/New_York&countryCode=US https://weatherkit.apple.com/api/v1/weather/en/41.4789363/-81.7404134?dataSets=forecastDaily&dailyStart=2025-03-21T04:56:00Z&timezone=America/New_York&countryCode=US Does anyone have any insights or information on this? Also if Apple is listening, an error more meaningful than 404 would be much much appreciated.
0
0
104
Apr ’25
Testing Live Caller ID Lookup Feature before App Store Release
Hi, We are working to integrate the Live Caller ID Lookup feature into our app. After submitting the request form via the link: https://developer.apple.com/contact/request/live-caller-id-lookup/, we received this reply from Apple: Apple’s OHTTP relay has been configured to talk to your OHTTP gateway. Now Live Caller ID Lookup should work for your application extension when distributed through App Store. However, before officially releasing our app on the App Store, we’d like to make sure the Live Caller ID Lookup feature is working as expected. To test this, we uploaded the app to TestFlight, and it successfully passed App Review. However, the test failed — we observed that the system tries to fetch the config from http://www.example.com/config instead of our actual configuration URL. Questions: Is this expected behavior when using TestFlight? Does the Live Caller ID Lookup feature only become active after full public release on the App Store? Is there any recommended way to test this feature before public release? Thank you!
0
0
202
Oct ’25
Call log not updated by CallKit in TestFlight/iOS 26
We encountered an issue with iOS 26 and release version. We developed a voipout application and we created an entry in native call log on dev/prod version with our app that run under iOS 18.6 and earlier. On iOS 26 TestFlight version didn't create entry in call log but debug version did it. I don't find any clue in CallKit documentation for iOS 26 and we use action.fulfill(withDateStarted: .now) for call and end transaction and we develop under Xcode 26 Do you have any suggestion to solve our problems ?
0
0
158
Sep ’25
Critical Technical Issue: App Update Rendering iPhones Inoperative on iOS 16 Versions
We appreciate your suggestion to use the Apple Developer Forums. However, we must respectfully request further escalation of this issue beyond the forums for several critical reasons: Severity and Scope: This is not a general development discussion topic. We are facing a massive, reproducible performance issue on iOS 16 that renders devices unresponsive, requiring factory resets or DFU restores. This goes far beyond typical app bugs and points to a potential systemic issue in the OS's image handling. Insufficiency of Forum Support: While the forums are a valuable resource for community advice, they cannot provide the official, in-depth technical diagnosis from Apple engineers that this situation demands. Our users' devices are being bricked by an app update that passed App Review, and we require clarity on the root cause to prevent further damage and restore user trust. Code-Level Support Eligibility: As members of the Apple Developer Program, we believe our issue falls under the purview of Code-Level Support, as described on the Apple Developer website 9. Our problem involves "building or running software" and requires expertise in Apple's frameworks and hardware-level image rendering APIs. We request that our case be forwarded to that specialized team. To reiterate the core problem: Our update introduced 1024x1026 JPEG assets into the Asset Catalog. On iOS 16, this causes severe overheating, freezing, and device unresponsiveness. Replacing them with PNGs completely resolves the issue. This suggests a potentially serious regression in iOS 16's JPEG decoding or memory management pipeline. We prepared to provide a sample project that demonstrates the issue if required. Our case number is 102678393572. We urgently need to understand why this happens at the OS level to ensure our app is safe and to contribute to the stability of the iOS platform. Please escalate this case to the appropriate technical team for a detailed investigation. Sincerely,
5
0
148
Oct ’25
Alarms scheduled using AlarmKit is not reliable
The alarms that I am scheduling using alarmKit is not reliable at all, especially in beta 8 (Used to have this issue in previous betas, But they were inconsistent). The alarm fires anywhere after 5 mins to 45 mins from the actual scheduled time. I'll share the relevant code block here in case if it is me who is doing something wrong. This code block doesn't throw any errors and I am also able to see the scheduled alarms when I query them. The issue is with alarms not firing on the specified time let alert = AlarmPresentation.Alert( title: "Wakey Wakey!", stopButton: .init(text: "stop", textColor: .red, systemImageName: "stop.fill") ) let presentation = AlarmPresentation(alert: alert) let attributes = AlarmAttributes<CountDownAttribute>( presentation: presentation, metadata: .init(), tintColor: .orange ) let schedule = Alarm.Schedule.fixed(alarmTime) let config = AlarmManager.AlarmConfiguration( schedule: schedule, attributes: attributes ) let id = UUID() do { let alarm = try await AlarmManager.shared.schedule(id: id, configuration: config) print("Alarm set successfully for \(alarmTime) - \(alarm)") } catch { print("Failed to schedule alarm: \(error)") }
3
0
219
Sep ’25
Tricky behavior of attribute names in CSSearchQuery, can't find documentation
I am wanting to not only surface my content in the system-level Spotlight search results but also to utilize the same index for my in-app search screen. The very few examples or tutorials I could find all craft a CSSearchQuery string using just the "title" attribute. I can't figure out where to look to understand how to search across other attributes. My most pressing need is to be able to perform a CSSearchQuery looking for a search term in the .htmlContentData attribute. If I search for this term in the system search field it returns results, so I know it's being indexed. However when I use a search query (in my app) like htmlContentData == "someSearchTerm" I get zero results. This frustration has led to some more general questions like: How do you know what attribute names are available to use in the search query? Is it just a string literal that's exactly the same as the CSSearchableItemAttributeSet property in Swift? e.g. property .htmlContentData is referred to as "htmlContentData" in the query string? Also, is there any way to just search across all attributes with CSSearchQuery? Obviously using the system Spotlight search (from Home Screen) you don't have to specify if you're searching the title or htmlContentData, it just finds it in either. Yet for CSSearchQuery I have to know up-front which fields I want to look in?
2
0
998
Oct ’25