Hi Team,
We’re encountering a device-specific issue with our SMS Message Filter extension. The extension works as expected on an iPhone 11 running iOS 16.6, but it does not trigger on an iPhone 12 Pro running iOS 16.7.
Key Observations:
The extension is implemented using ILMessageFilterExtension and calls messageFilterOffline(appGroupIdentifier:for:) from our shared library.
The App Group is properly configured and accessible across the app and extension.
The extension is enabled under Settings > Messages > Unknown & Spam.
There are no crashes or error logs reported on the affected device.
The issue is consistently reproducible — it works on one device but not the other.
We’re wondering if this could be a regression or a device-specific behavior change introduced in iOS 16.7.
Has anyone encountered similar inconsistencies in Message Filter extensions across different iOS versions or device models?
Any guidance or suggestions would be greatly appreciated.
Thanks in advance!
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
I want decoded my base64 string and want to create image from it.
NSData *data = [NSData dataWithBytes:bpData.rt_wav.data length:sizeof(bpData.rt_wav.data)];
NSMutableString *baseString = [data base64Encoding];
UIImage *image = [UIImage imageWithData:data];
We have identified an issue when using NumberFormatter with the locale set to it_IT. Specifically, when formatting numbers with exactly four integer digits, the grouping separator is not applied: for example, the number is displayed as 4000,00 instead of the expected 4.000,00. This behavior occurs only with four-digit integers; for instance, 40.000,00 is formatted correctly. The issue appears to affect only iOS 18.4 and later versions.
Hi there,
we are implementing the new ContactProviderExtension introduced in iOS 18 and we are able to activate the extension, add data and everything.
But we want to add domains to seperate contacts and currently we are getting an error "ContactProvider.ContactProviderError.domainNotRegistered".
That makes sense because in the API docu we are not finding a way to register our domains. We are using ContactProviderDomain to create domains but we are not able to find any function to register.
Could you please give a hint?
Thank you
In iOS 18 (beta 1-4) when you set openAppWhenRun = false in your AppIntent of your live activity the perform function never gets called.
In iOS 16 and 17 my live activities work. I have downloaded other apps and in their live activities any button tab which doesn´t open the app is also doing nothing in iOS 18.
Has anyone got this working? Any comments from an Apple engineer on this?
All
After about 20 hours straight of working on this and having scrapped it twice I am realizing I should have asked everyone here for help.
I am just trying to get device activity report extension to work inside an existing app.
I have been heavily using family controls, managedsettings and deviceactivity and decided it would be nice to output some of the app usage so the User (parent) can see their children's app usage.
I installed the target via xcode, confirmed group names match, and think I have it embedded correctly but when I run the app and call the view within the extension to show minutes used by any apps it just shows no time has been used. In addition, when I put print statements into the extension they do not show up in console.
I have confirmed the main app target->Build phases->Link binary with Libraries has:
ManagedSettings.framework
FamilyControls.Framework
DeviceActivity.framework
I have confirmed in xcode that the main app target->Build phases -> Embed Foundation Extensions has:
ShieldConfiguration.appex
ShieldActionExtension.appex
DeviceActivityMonitor.appex
I have confirmed in xcode that the main app target->Build phases-> Embed ExtensionKit Extensions has:
UsageReportExtension.appex
I have used the apps I am trying to show data for extensively in the last 36 hours.
Here is my UsageReportExtension info.plist
EXAppExtensionAttributes
EXExtensionPointIdentifier
com.apple.deviceactivityui.report-extension
.entitlement
com.apple.developer.family-controls
com.apple.security.application-groups
group.com.jrp.EarnYourTurnMVP2.data
Here is the file in the app (timebankview.swift) calling the extension/showing the extension view(AppUsageReportView.swift)
import DeviceActivity
import ManagedSettings
struct TimeBankView: View {
@EnvironmentObject private var appState: AppState
@State private var reportInterval: DateInterval = {
let calendar = Calendar.current
let now = Date()
let yesterdayDate = calendar.date(byAdding: .day, value: -1, to: now) ?? now
return DateInterval(start: yesterdayDate, end: now)
}()
private var reportFilter: DeviceActivityFilter {
let selection = appState.screenTimeController.currentSelection
return DeviceActivityFilter(
segment: .daily(during: reportInterval),
users: .children,
devices: .all,
applications: selection.applicationTokens,
categories: selection.categoryTokens
// webDomains: selection.webDomains // Add if needed
)
}
var body: some View {
ZStack {
Color.appTheme.background(for: appState.isParentMode)
.edgesIgnoringSafeArea(.all)
ScrollView {
VStack(spacing: 20) {
Text("Time Bank")
DeviceActivityReport(.childUsageSummary, filter: reportFilter)
Here is AppUsageReportView.swift
import SwiftUI
struct AppUsageReportView: View {
let config: DetailedAppUsageConfiguration // Use the detailed config
var body: some View {
VStack {
Text("App Usage Details")
Text("Total Screen Time: \(config.totalDurationFormatted)")
if config.applicationsUsed.isEmpty {
Text("No specific app usage data available for the selected period/filter.")
} else {
Text("Apps Used:")
List {
ForEach(config.applicationsUsed) { appInfo in
HStack {
Image(systemName: "app.dashed")
Text(appInfo.appName)
.lineLimit(1)
Text(appInfo.durationFormatted)
Here is AppUsageReportScene.swift:
import SwiftUI
import ManagedSettings
struct AppInfo: Identifiable, Hashable {
let id = UUID()
let appName: String
let durationFormatted: String
}
struct DetailedAppUsageConfiguration {
var totalDurationFormatted: String = "Calculating..."
var applicationsUsed: [AppInfo] = []
}
struct AppUsageReportScene: DeviceActivityReportScene {
let context: DeviceActivityReport.Context = .childUsageSummary
let content: (DetailedAppUsageConfiguration) -> AppUsageReportView
func makeConfiguration(representing data: DeviceActivityResults<DeviceActivityData>) async -> DetailedAppUsageConfiguration {
var config = DetailedAppUsageConfiguration()
var appDurations: [String: TimeInterval] = [:]
var totalAggregatedDuration: TimeInterval = 0
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute, .second]
formatter.unitsStyle = .abbreviated
formatter.zeroFormattingBehavior = .pad
var segmentCount = 0
var categoryCount = 0
var appCount = 0
for await activityData in data {
// Check segments
var tempSegmentCount = 0
for await segment in activityData.activitySegments {
segmentCount += 1
tempSegmentCount += 1
totalAggregatedDuration += segment.totalActivityDuration
var tempCategoryCount = 0
for await categoryActivity in segment.categories {
categoryCount += 1
tempCategoryCount += 1
var tempAppCount = 0
for await appActivity in categoryActivity.applications {
appCount += 1
tempAppCount += 1
let appName = appActivity.application.localizedDisplayName ?? "Unknown App"
let duration = appActivity.totalActivityDuration
appDurations[appName, default: 0] += duration
}}} }
config.totalDurationFormatted = formatter.string(from: totalAggregatedDuration) ?? "N/A"
config.applicationsUsed = appDurations
.filter { $0.value >= 1
.map { AppInfo(appName: $0.key, durationFormatted: formatter.string(from: $0.value) ?? "-") }
.sorted { lhs, rhs in
let durationLHS = appDurations[lhs.appName] ?? 0
let durationRHS = appDurations[rhs.appName] ?? 0
return durationLHS > durationRHS
}
if !config.applicationsUsed.isEmpty {
for (index, app) in config.applicationsUsed.enumerated() {
}
} else {
}
return config
}}
UsageReportExtension.swift
struct UsageReportExtension: DeviceActivityReportExtension {
init() {
print("🚀 [UsageReportExtension] Extension initialized at \(Date())")
print("🔍 [UsageReportExtension] Process info: \(ProcessInfo.processInfo.processName) PID: \(ProcessInfo.processInfo.processIdentifier)")
}
var body: some DeviceActivityReportScene {
let _ = print("📊 [UsageReportExtension] Building report scenes at \(Date())")
TotalActivityReport { totalActivity in
print("🕰️ [TotalActivityReport] Creating view with data: \(totalActivity)")
return TotalActivityView(totalActivity: totalActivity)
}}}
Topic:
App & System Services
SubTopic:
General
Tags:
Device Activity
Family Controls
Managed Settings
Screen Time
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” ?
Hello everyone,
Our team is currently developing an iOS application requiring real-time audio communication and evaluating the most suitable frameworks. Options include CallKit, custom solutions using AVAudioEngine/Audio Units, and the PushToTalk framework.
Regarding the PushToTalk framework, we have some questions about its core design and capabilities that we'd appreciate clarification on from the community or Apple engineers.
Based on the PushToTalk framework documentation, its API design (e.g., methods like requestBeginTransmission, endTransmission which imply explicitly requesting transmission rights), and its system UI integration, it strongly appears oriented towards half-duplex communication scenarios, similar to traditional walkie-talkies where only one participant transmits audio at a time.
Is this understanding accurate? Is the PushToTalk framework's design strictly limited to managing half-duplex audio interactions? Or, does the framework itself also provide built-in mechanisms or APIs to manage simultaneous, bi-directional (full-duplex) audio streaming between participants?
To be clear, we are asking about the inherent capabilities of the PushToTalk framework itself. We understand it's possible to use PushToTalk for signaling and UI management, and separately implement the actual full-duplex audio stream using AVAudioEngine or other audio APIs. However, we want to confirm if the framework itself is designed to support or simplify full-duplex audio communication.
Have other developers investigated the specific limitations or capabilities of the PushToTalk framework regarding audio transmission modes (half-duplex vs. full-duplex)?
Are there any official documentation references or WWDC sessions that explicitly clarify the framework's support (or lack thereof) for full-duplex operation?
If PushToTalk is indeed limited to half-duplex, what are the generally accepted best practices for apps requiring full-duplex calls – transitioning directly to CallKit (where applicable) or building custom audio processing pipelines?
Clarifying this point is crucial for us to select the correct technology stack for our application. Any relevant insights, documentation pointers, or shared development experiences would be greatly appreciated.
Thank you for your help!
I am working with a watchOS app in SwiftUI, and I am using the following code to dial a phone number from the watch:
var number = "123456789"
if let telURL = URL(string: "tel:\(number)") {
let wkExtension = WKExtension.shared()
wkExtension.openSystemURL(telURL)
}
The issue is that when I try to dial a number starting with a * (asterisk) or # (hash), it doesn't work. When dialing a regular number, it works fine.
Is there any way to get this to work?
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
Hi All
my app randomly crash on very rare case. when bring app into foreground
I checked the code:
{
NSError *error = nil;
if (![sender authenticateWithPassword:MyManager.sharedManager.service.authToken.accessToken error:&error]) {
...
...
...
}
}
accessToken is NSString type, was that because accessToken is deallocated?
Manager and service could not be nil at all.
Last Exception Backtrace:
0 CoreFoundation 0x18b04d2ec __exceptionPreprocess + 164
1 libobjc.A.dylib 0x1884d1a7c objc_exception_throw + 88
2 CoreFoundation 0x18b0b767c +[NSObject(NSObject) _copyDescription] + 0
3 CoreFoundation 0x18af64b84 ___forwarding___ + 1492
4 CoreFoundation 0x18af644f0 _CF_forwarding_prep_0 + 96
5 PTComms 0x102adafac __45-[XMPPStream authenticateWithPassword:error:]_block_invoke + 1884
6 libdispatch.dylib 0x192ecb584 _dispatch_client_callout + 16
7 libdispatch.dylib 0x192ec1b4c _dispatch_sync_invoke_and_complete_recurse + 64
8 libdispatch.dylib 0x192ec15dc _dispatch_sync_f_slow + 176
9 PTComms 0x102ada760 -[XMPPStream authenticateWithPassword:error:] + 516
10 PTComms 0x102a7b6f0 -[CommsService xmppStreamDidConnect:] + 160
11 CoreFoundation 0x18af64434 __invoking___ + 148
12 CoreFoundation 0x18af65044 -[NSInvocation invoke] + 424
13 CoreFoundation 0x18afbb6b8 -[NSInvocation invokeWithTarget:] + 64
14 PTComms 0x102b391c8 __42-[GCDMulticastDelegate forwardInvocation:]_block_invoke + 68
15 libdispatch.dylib 0x192eb1aac _dispatch_call_block_and_release + 32
16 libdispatch.dylib 0x192ecb584 _dispatch_client_callout + 16
17 libdispatch.dylib 0x192ee8574 _dispatch_main_queue_drain.cold.5 + 812
18 libdispatch.dylib 0x192ec0d30 _dispatch_main_queue_drain + 180
19 libdispatch.dylib 0x192ec0c6c _dispatch_main_queue_callback_4CF + 44
20 CoreFoundation 0x18afa62b4 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16
21 CoreFoundation 0x18afa40b0 __CFRunLoopRun + 1980
22 CoreFoundation 0x18afc8700 CFRunLoopRunSpecific + 572
23 GraphicsServices 0x1d7b09190 GSEventRunModal + 168
24 UIKitCore 0x18dbe6240 -[UIApplication _run] + 816
25 UIKitCore 0x18dbe4470 UIApplicationMain + 336
26 VoceraEdgeComms 0x102542318 0x10253c000 + 25368
27 dyld 0x1b19cbad8 start + 5964
Thread 0 name: Dispatch queue: xmpp
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x1dbb3a1dc __pthread_kill + 8
1 libsystem_pthread.dylib 0x2154b8b40 pthread_kill + 268
2 libsystem_c.dylib 0x192f6d360 __abort + 132
3 libsystem_c.dylib 0x192f6d2dc abort + 136
4 libc++abi.dylib 0x2153e25a0 abort_message + 132
5 libc++abi.dylib 0x2153d0f10 demangling_terminate_handler() + 344
6 libobjc.A.dylib 0x1884d3bb8 _objc_terminate() + 156
7 PTCore 0x1061f0d98 FIRCLSTerminateHandler() (.cold.3) + 56
8 PTCore 0x1060ef7e8 FIRCLSTerminateHandler() + 276
9 libc++abi.dylib 0x2153e18b4 std::__terminate(void (*)()) + 16
10 libc++abi.dylib 0x2153e4e1c __cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*) + 88
11 libc++abi.dylib 0x2153e4dc4 __cxa_throw + 92
12 libobjc.A.dylib 0x1884d1be4 objc_exception_throw + 448
13 CoreFoundation 0x18b0b767c -[NSObject(NSObject) doesNotRecognizeSelector:] + 364
14 CoreFoundation 0x18af64b84 ___forwarding___ + 1492
15 CoreFoundation 0x18af644f0 _CF_forwarding_prep_0 + 96
16 PTComms 0x102adafac __45-[XMPPStream authenticateWithPassword:error:]_block_invoke +
Thanks,
CrashReporter.txt
My CoreSpotlight extension seems to exceed the 6 MB memory limit. What’s the best way to debug this?
I've tried to attach the debugger on the Simulator but the extension seems to be never launched when I trigger the reindex from Developer settings. Is this supposed to work?
On device, I am able to attach the debugger. However, I can neither transfer the debug session to Instruments, nor display the memory graph. So I've no idea how the memory is used.
Any recommendations how to move forward? Is there a way to temporarily disable the memory limit since even with LLDB attached, the extension is killed.
Is there any way to find the reason for a CRASHING_DUE_TO_PRIVACY_VIOLATION from a crash report?
It does not happen on my old iPad Air 2 and it does not happen on the simulators with the latest iOS.
But it crashes always on newer real devices to which I have no access. The last app review for the AppStore also did not find it. I added some privacy strings by guessing and sent it via TestFlight but it doesn't change anything.
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.
We developed a "Default Translation App" following the guide: https://developer.apple.com/documentation/translationuiprovider/preparing-your-app-to-be-the-default-translation-app.
I have already configured everything that needs to be configured according to the document, but there is still this problem
Topic:
App & System Services
SubTopic:
General
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.
I have an app I want to get on the App Store but when I was putting in the build version slot, I accidentally deleted it by clicking backspace and tried everything to get it working again but I can't. Is there anyway for me to retrieve the slot so it works?
Topic:
App & System Services
SubTopic:
General
Hi Apple Developer,
I’m working on a message-filtering application and reviewing Apple's documentation on message filtering. The documentation clearly states that MMS messages can be filtered. (https://developer.apple.com/documentation/identitylookup/sms-and-mms-message-filtering)
When we refer to MMS, it includes images, short videos, and other supported multimedia formats. However, the ILMessageFilterQueryRequest only provides the message body as a String, meaning we can access text and links but not images or other media files.
Could you please confirm whether Apple allows third-party applications to access multimedia content sent from unknown numbers?
Looking forward to your quick response.
Thanks,
Rijul Singhal
As far as I know, Apple doesn’t allow apps to directly navigate users to the Call Blocking & Identification settings screen. That’s why many apps just show instructions like:
"Go to Settings > Phone > Call Blocking & Identification" to enable the app.
Apple only officially provides UIApplicationOpenSettingsURLString, which takes users to the app's own settings page.
But here’s where I’m confused: some Korean apps like Whowho and Adot Phone seem to be able to direct users to the Call Blocking & Identification screen.
Whowho: https://apps.apple.com/kr/app/whowho-spam-block-callerid/id1033450260?l=en-GB
Adot Phone:
I'm wondering how these apps are doing that. Are they using some kind of private API or workaround?
Those app are developed from Internet Serivce Provider Company.
Topic:
App & System Services
SubTopic:
General
Is there any resource which describes this type of errors?
I was integrating SKADNetwork view through Ad attribution and everything from the source app side is done and this error
appears after the target app is installed and opened.
Here is the full error
Error setting install attribution pingback registered for app: <APP ID>, error: Error Domain=ASDErrorDomain Code=1209 "SKAdNetwork: Could not set registered for pingback that does not exist." UserInfo={NSLocalizedDescription=SKAdNetwork: Could not set registered for pingback that does not exist.}, result: 0
I cannot find any resource on the internet which gives any info about this ASDErrors.
If anyone can help, you would be doing me a solid, Thanks in advance.