Hello,
I’m developing an app to detect movement past a strong magnet, targeting both Android and iOS. On Android, I’m using the Sensor API, which provides calibrated readings with temperature compensation, factory (or online) soft-iron calibration, and online hard-iron calibration. The equivalent on iOS appears to be the CMCalibratedMagneticField data from the CoreMotion framework.
However, I’m encountering an issue with the iOS implementation. The magnetometer data on iOS behaves erratically compared to Android. While Android produces perfectly symmetric peaks, iOS shows visual peaks that report double the magnetic field strength. Additionally, there’s a "pendulum" effect: the field strength rises, drops rapidly, rises again to form a "double peak" structure, and takes a while to return to the local Earth magnetic field average. The peaks on iOS are also asymmetric.
I’m wondering if this could be due to sensor fusion algorithms applied by iOS, which might affect the CMCalibratedMagneticField data. Are there other potential reasons for this behavior? Any insights or suggestions would be greatly appreciated.
Thank you!
General
RSS for tagDelve 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.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
We’re seeing unexpected NFC behavior once our app has 50+ Advanced App Clips created.
Expected:
Scanning an NFC tag with a URL that is NOT an App Clip invocation should show the standard “Open in Safari” notification.
Actual:
After we create ~50+ Advanced App Clips, scanning NFC tags for URLs on the same domain that are not associated with App Clips consistently shows “CPSErrorDomain error 2” instead of the Safari prompt.
QR codes for the same non–App Clip URLs work as expected (shows Safari prompt).
Clearing the App Clips “Experience Cache” sometimes helps briefly, but the error returns on consequent scans.
Notes:
Domain has valid AASA. App Clip invocation URLs work as expected.
The issue appears tied to the number of Advanced App Clips configured. Below ~50, non–App Clip NFC scans behave correctly; above that, they fail.
Affected across multiple devices and iOS versions tested.
Repro steps:
Configure 50+ Advanced App Clips for paths on a single domain.
Encode a different URL on the same domain that is NOT listed as an App Clip invocation into an NFC tag.
Scan the NFC tag on iPhone.
Observe “CPSErrorDomain error 2” instead of the “Open in Safari” notification.
Impact: blocks our NFC use case for regular web links once we scale App Clip experiences.
Sysdiagnose #: FB20563121
We are planning to use our internal IdP (PingFederate) for authentication of end users in their iOS apps using ASWebAuthenticationSession. Initial tests are successful, but the user is prompted for every login (and logouts) with a consent dialogue box:
“AppName” wants to use “internal domain-name” to Sign In
This allows the app and website to share information about you.
Cancel Continue”
Let’s say that our top-level domain is “company.no”, where our IdP is placed at “idp.company.com”. I have seen examples where the Associated domains entitlement points to the idp as a webserver for serving the JSON output AASA file. In this case that would be:
authsrv: idp.company.com
Anyone with experience implementing this structure with the IdP as webserver for serving the JSON output?
Our problem is that trying to use the IdP as webserver for this purpose is that it is very complicated to modify the IdP’s webserver configuration. Also, this modification needs to be re-done every time we need to upgrade the IdP.
My question is therefore also related to the options of which webserver to install the AASA file on. Has anyone installed the file on a generic webserver on the toplevel domain like
“webserver.company.com” ?
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.
Topic:
App & System Services
SubTopic:
General
anyone has the same problem which is that your device activity extension ain't working even tho all the code work perfectly in the console, I setup it in the right way , tried to make schedule and it did the same exact thing when I tried to create usage threshold. anyone know the reason for this bug?
here is my extension code
import ManagedSettings
import FamilyControls
import Foundation
import OSLog
import UserNotifications
class MonitoringExtension: DeviceActivityMonitor {
private let defaults = UserDefaults(suiteName: "group.com.William.app")
private let logger = Logger(subsystem: "com.William.app", category: "MonitoringExtension")
override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) {
let activityRaw = activity.rawValue
logger.info("Limite atteinte: \(activityRaw)")
scheduleNotification(title: "Limite dépassée", body: "Tu as utilisé trop de temps sur \(activityRaw).")
guard let data = defaults?.data(forKey: "\(activityRaw)_selection"),
let selection = try? JSONDecoder().decode(FamilyActivitySelection.self, from: data) else {
logger.warning("Pas de sélection pour \(activityRaw)")
return
}
let store = ManagedSettingsStore() // ← LE SEUL QUI MARCHE
store.shield.applications = selection.applicationTokens
if !selection.categoryTokens.isEmpty {
store.shield.applicationCategories = .specific(selection.categoryTokens)
}
logger.info("BLOCAGE ACTIF via ManagedSettingsStore.default")
}
override func intervalDidEnd(for activity: DeviceActivityName) {
super.intervalDidEnd(for: activity)
let store = ManagedSettingsStore()
store.clearAllSettings() // ← Débloque à minuit
logger.info("Restrictions levées à la fin de l'intervalle")
}
private func scheduleNotification(title: String, body: String) {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) { granted, _ in
guard granted else { return }
let content = UNMutableNotificationContent()
content.title = title
content.body = body
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: nil)
UNUserNotificationCenter.current().add(request)
}
}
}
Hello! I am working on a screentime app and wondering if anyone has had success achieving reliable background shield application while using com.apple.ManagedSettingsUI.shield-configuration-service?
I recently switched from com.apple.deviceactivity.shield-configuration (which worked reliably but isn't accepted by TestFlight) and have not found any consistency getting shields to apply while the app is backgrounded.
I believe this is a known limitation of ManagedSettingsUI and want to know if there are successful workarounds or any specific patterns/timing that improve consistency?
Topic:
App & System Services
SubTopic:
General
Tags:
Extensions
Device Activity
Managed Settings
Screen Time
I'm using FamilyActivityPicker to get consent for app/category management, which returns a FamilyActivitySelection object.
I serialize this FamilyActivitySelection object (just applicationTokens and categoryTokens) and pass it to my DeviceActivityMonitor extension via App Group UserDefaults. I am using the JSON encoder/decoder over PropertyList (though both seem to exhibit the same behavior).
After inspecting the FamilyActivitySelection object immediately after it's returned by FamilyActivityPicker in the main app, the application.bundleIdentifier property is consistently nil for every Application object within selection.applications. Similarly, category.localizedDisplayName is nil for ActivityCategory objects. This happens whether "Select All Apps" is used or if apps/categories are selected individually.
I understand that this is the intended behavior due to Apple's user privacy policies. I read on another post that my app can be provided with bundle identifiers and app names within Shield Configuration extensions and Device Activity Report extensions - I'm not sure which ones or how exactly to do this.
I am aware that I can use Label(applicationToken) SwiftUI view to display the app name/icon, but this doesn't give programmatic access to the bundleIdentifier string.
My app will not log or export these bundleIdentifiers outside of its sandbox. My goal is to create mappings to the FamilyActivitySelection with the publicly accessible bundleIdentifiers.
Any guidance, examples, or clarification on the intended workflow for this scenario would be greatly appreciated!
Hello,
If I fire an alarm using AlarmKit, using a ringtone that lengths less than 30 seconds, in the last version of iOS (26.0) the sound doesn't repeat. (After about 30 seconds, the sounds stops).
BUT in the current version of iOS (26.1), the sound repeats until we slide Stop, thing that I doesn't want.
So, is there a way to restore the previous behavior? Or is there a property that can fill this lack?
Thank you very much.
Topic:
App & System Services
SubTopic:
General
Subject: Call Directory Extension Enable Failure for Individual User
Dear Apple Developer Support,
We are experiencing an issue with our Call Directory Extension where one specific user cannot enable it, while thousands of other users on the same iOS version can enable it successfully.
Issue Details:
App: 美信 (Midea Connect)
Problem: Extension fails to enable with error: "请求'美信'的数据时失败" (Failed to request data from app)
Affected: 1 user out of thousands
iOS Version: 26.0.1
What Works:
All other users can enable the extension normally
Same iOS version, no issues
App Group and Extension identifier are correctly configured
User Has Tried:
Reinstall app - No effect
Toggle extension off/on - Still fails
Restart device - No improvement
Its possible to add the Declared Age Range entitlement to extensions, in particular I'm looking at a Notification Service Extension.
However the DAR requestAgeRange() API takes a view controller as a parameter. Presumably therefore its not possible for a notification service extension to obtain the age range itself directly?
Yes the extension can read it from shared groups if the app reads it and set it into the group. However the scenario I'm thinking of is this:
App runs and gets the age range. Sets its functionality accordingly.
The server sends pushes which are intercepted by the notification service extension, the extension adjusts its functionality based upon what the app wrote to shared groups
The user changes the age range setting, but the app doesn't run.
The extension keeps receiving pushes but its functionality is now out of sync with the age range as its not able to obtain it directly
Topic:
App & System Services
SubTopic:
General
The name of our app is a portmanteau, and Siri is getting it slightly wrong. It’s putting the emphasis on the second and fourth syllables instead of the first and third. Kind of like if someone starting singing /tinˈeɪʒd muˌtent/. It’s just wrong enough to be funny. It still recognizes the correct name when someone says “hey Siri”.
We’ve already tried adding CFBundleSpokenName and INAlternativeAppNamePronunciationHint to info.plist, but neither is changing how Siri says it. We can’t put it in AppIntentVocabulary.plist because we don’t know the key path for the app name.
Hi There, hopefully someone can help me here, we weren’t aware but our universal links stopped working sometime last year, as they are not used often on the apps, it wasn’t noticed. We checked all the elements and this is the situation:
Our apple-app-site-association file is located at
https://ourdomain.com.au/.well-known/apple-app-site-association
And it is accessible and can be downloaded.
We have Associated Domain services enabled for our app Bundle Id: au.com.identifier.app
The Entitlements.plist in our app contains the list of associated domains - the second is the full url, the portal won't let me write it as such as it's not the real address.
But links for the first two, …ourdomain.com.au domains don’t work
Request https://ourdomain.com.au/.well-known/apple-app-site-association downloads the file and returns status code:403
While checking the availability with
https://app-site-association.cdn-apple.com/a/v1/ourdomain.com.au
we get the error:
ourdomain.com.au: Failed to load resource: the server responded with a status of 404 (Not Found)
Going directly to the hosted website:
https://app-site-association.cdn-apple.com/a/v1/ourdomain-prod-ourdomainwebsite.azurewebsites.net
Returns the json:
{
"activitycontinuation": {
"apps": [
"99ABCD88XXX.au.com.identifier.app",
"99ABCD88XXX.au.com.identifier.server.adhoc",
"99ABCD88XXX.au.com.identifier.server.dev"
]
},
"applinks": {
"apps": [],
"details": [
{
"appID": "99ABCD88XXX.au.com.identifier.app",
"paths": [ "/m/" ]
},
{
"appID": "99ABCD88XXX.au.com.identifier.server.adhoc",
"paths": [ "/mt/" ]
},
{
"appID": "99ABCD88XXX.au.com.identifier.server.dev",
"paths": [ "/md/*" ]
}
]
}
}
It appears to be something in the redirect from the url but debugging shows nothing obvious. Has anyone experienced this before?
Thanks
Topic:
App & System Services
SubTopic:
General
Hi Team,
We are encountering issues while implementing the live translation feature in our VoIP application using CallKit on iOS 26.0. Specifically, we are attempting to use the CXSetTranslatingCallAction transaction to enable translation programmatically during an active call.
However, executing this transaction results in the following error:
"Couldn't communicate with a helper application."
This occurs consistently when we attempt to trigger the translation setup without user interaction. We are seeking clarification on the following points:
Is it possible to enable CallKit's live translation feature using CXSetTranslatingCallAction purely programmatically, without requiring the user to interact with the system-provided Call UI?
What does the above error indicate in the context of CXSetTranslatingCallAction? Are there specific conditions, entitlements, or background service requirements that must be fulfilled to communicate with CallKit?
Code snippet:
let translationAction = CXSetTranslatingCallAction(call: callUUID, isTranslating: true, localLocale: Locale.init(identifier: "es-ES"), remoteLocale: Locale(identifier: "en-US"))
let transaction = CXTransaction(action: translationAction)
callController.request(transaction)
We would deeply appreciate any guidance you can provide regarding the feasibility of our approach and how to address this error.
Thank you for your support.
Hello, developers! I’m interested in adding my native language and flag to iOS, iPadOS and MacOS. Could you please recommend a solution or provide some valuable advice on how to achieve this? I’d greatly appreciate your assistance. Thanks!
Hi,
I am developing a Screen Time App and I am having issues with the ShieldConfigurationExtension (ShieldConfigurationDataSource). I know this extensions is sandboxed but I should be able to read data from the main app.
I am using SwiftData as my database, but I am unable to initialize it in the extensions with an error indicating insufficient file permissions. I have App Group set up and I am able to share data using UserDefaults but that is just inconvenient.
Is there any way I could just open the SwiftData in read only mode so that I could display the user some info on the shield?
SwiftData Init:
private func setupContainer() throws {
let schema = Schema([
DogEntity.self,
HouseEntity.self
])
// Use app group container if available
let config: ModelConfiguration
if let containerURL = FileManager.default.containerURL(
forSecurityApplicationGroupIdentifier: "group.\(Bundle.app.bundleIdentifier ?? "")"
) {
config = ModelConfiguration(schema: schema, url: containerURL.appendingPathComponent("default.sqlite"))
} else {
config = ModelConfiguration(schema: schema)
}
self.container = try ModelContainer(for: schema, configurations: [config])
}
Error in extension:
fault: Attempt to add read-only file at path file:///private/var/mobile/Containers/Shared/AppGroup/51431199-5919-4AE6-940C-6FE3C53EEB46/default.sqlite read/write. Adding it read-only instead. This will be a hard error in the future; you must specify the NSReadOnlyPersistentStoreOption.
error: (3) access permission denied
error: Encountered exception error during prepareSQL for SQL string 'SELECT TBL_NAME FROM SQLITE_MASTER WHERE TBL_NAME = 'Z_METADATA'' : access permission denied with userInfo {
NSFilePath = "/private/var/mobile/Containers/Shared/AppGroup/51431199-5919-4AE6-940C-6FE3C53EEB46/default.sqlite";
NSSQLiteErrorDomain = 3;
} while checking table name from store: <NSSQLiteConnection: 0x154100300>
error: Store failed to load. <NSPersistentStoreDescription: 0x15402d590> (type: SQLite, url: file:///private/var/mobile/Containers/Shared/AppGroup/51431199-5919-4AE6-940C-6FE3C53EEB46/default.sqlite) with error = Error Domain=NSCocoaErrorDomain Code=256 "The file “default.sqlite” couldn’t be opened." UserInfo={NSFilePath=/private/var/mobile/Containers/Shared/AppGroup/51431199-5919-4AE6-940C-6FE3C53EEB46/default.sqlite, NSSQLiteErrorDomain=3} with userInfo {
NSFilePath = "/private/var/mobile/Containers/Shared/AppGroup/51431199-5919-4AE6-940C-6FE3C53EEB46/default.sqlite";
NSSQLiteErrorDomain = 3;
}
Any help appreciated 🙂
Topic:
App & System Services
SubTopic:
General
Tags:
Family Controls
Managed Settings
Screen Time
SwiftData
Hi,
I developed an iOS app which will do SMS filtering by following this documentation. https://developer.apple.com/documentation/identitylookup/sms-and-mms-message-filtering)
I built the app and send Test Flights to different testers. All the Testers from Sri Lanka (an asian country) says filtering is working and they can see all the enabled categories on the Messages too (including iOS 26). But the testers from Mexico cannot see the categories and filtering is not working.
On official documentation there is nothing about supported countries. But I found true caller article https://support.truecaller.com/support/solutions/articles/81000406341-how-do-i-enable-sms-filtering-on-iphone mentioning it support only few countries for SMS filtering.
Currently available in the following countries: India, Nigeria, South Africa, Kenya, Bangladesh, Sri Lanka.
Our previous Categories filtering are still available for: Australia, Bahrain, Canada, Ghana, Tanzania, United Kingdom, United Arab Emirates, United States of America, Zambia
Following article https://clearstream.io/blog/ios-26-iphone-new-text-message-filtering is saying some categories are supported by only Brazil and India.
Still I could not find any official documentations saying different country supports.
Hello.
We have an app and a custom dylib hat seems to be crashing only when Rosetta is involved.
I believe it's the custom DYLIB that crashes.
Here are some observations.
The issue happens on the older 2022 built DYLIB (Intel only)
And the newer DYLIB built (Universal)
The universal DYLIB works fine natively on both Intel and M1 machines. It's only when we access it through an Intel only .app and it's running with Rosetta that we see the crash.
The older Intel only .DYLIB worked perfectly with the same testing .app in versions before Sonoma, now they crash with the same .app, same build.
Crash reports have been all over the place, they vary but repeat themselves. It has been a little confusing as to how to approach this issue and would appreciate any input that can help us understand what is going wrong and how to move forward.
Crash reports are attached
Crash Report 1
Crash Report 2
Crash Report 3
The crash occurs as SIGSEGV
Version: 2.0 (1)
Code Type: X86-64 (Translated)
Parent Process: launchd [1]
User ID: 501
Date/Time: 2025-04-14 19:55:06.0103 +0200
OS Version: macOS 14.6 (23G5075b)
Report Version: 12
Anonymous UUID: A08ECCFA-BF01-8636-7453-E4476586D3A8
Time Awake Since Boot: 3900 seconds
System Integrity Protection: enabled
Notes:
PC register does not match crashing frame (0x0 vs 0x102920144)
Crashed Thread: 10
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x000000011d052840
Exception Codes: 0x0000000000000001, 0x000000011d052840
Termination Reason: Namespace SIGNAL, Code 11 Segmentation fault: 11
Terminating Process: exc handler [3174]
VM Region Info: 0x11d052840 is not in any region.
Thank you so much for all the attention and effort.
Hi,
I’m trying to open a GPX file (route.gpx) from the Files app on my iPhone using my app (e.g., Aqua Map).
Since the latest iOS update (iOS 26), when I long-press the file and tap “Open with…”, my app does not appear in the list anymore.
I’ve checked that my app has the correct permissions for Files and Folders. I’m wondering:
Is this a user-side issue (Settings on iPhone)?
Or does it require developer-side changes in the app (Info.plist / UTI declarations) to make .gpx files appear in “Open with…” or “Share” menus?
What is the proper way to make my app appear as an option to open GPX files in Files.app on iOS 26?
Thanks in advance!
If I have, say a doctor appointment in the Calendar app, and I'm leaving to go to it, the address will appear in Apple Maps on CarPlay. Forgive if I'm getting the details wrong, but I believe if I bring up the Map, it will be available to tap on, so I can quickly go there. I think it may also show up on one on the car-play screens that shows a few different panels.
The point is, I really like this feature, and want to do it in my app.
In my iOS app, the user can order food from a restaurant, and pick it up. I'm not ready to make this app a "quick service" app, but I want to give the user an easy to get to her location. Since I just ordered food, this means that I'll need to leave fairly quickly to go to the location. The Calendar app is able to offer a location because of scheduling, I'd like to do the same.
find my在添加配件是,持续一直卡在“即将完成设置”这一步.这是由于什么原因呢?而且一直保持很长时间,也不会退出,也不会提示任何错误信息。