Has anyone encountered a situation like mine below? I’ve submitted feedback, but it seems like I’ll have to wait for a while.
ContactProviderManager Fails with Custom domainIdentifier, Works Only with "defaultDomain"
Category: Developer Tools / Frameworks
Subcategory: ContactProvider Framework
Reproducibility: Always
iOS Version: iOS 18.0 (and later)
Xcode Version: Xcode 16.0 (or later)
Description:
When initializing a ContactProviderManager with a custom ContactProviderDomain using any identifier other than "defaultDomain", the initializer throws a ContactProviderError.domainNotRegistered error. The documentation for ContactProviderDomain (https://developer.apple.com/documentation/contactprovider/contactproviderdomain) does not provide any method to register custom identifiers, making it impossible to use ContactProviderManager with a desired custom identifier. The only successful case is when the identifier is "defaultDomain". print("Error: (error)") // No error, initialization succeeds
Steps to Reproduce:
Create a Contact Provider Extension in an iOS app targeting iOS 18.0.
In host app, Attempt to initialize a ContactProviderManager with a custom ContactProviderDomain identifier:
import ContactProvider
func enableExtensionExample() async {
do {
// The app creates a contact provider manager with custom domain.
let manager = try ContactProviderManager(domainIdentifier: "com.mycompany.customdomain")
// May prompt the person to enable the custom domain.
try await manager.enable()
} catch {
print("Error: \(error)") // Prints ContactProviderError.domainNotRegistered
}
}
Try the same with the default identifier:
import ContactProvider
func enableExtensionExample() async {
do {
// The app creates a contact provider manager with a default domain.
let manager = try ContactProviderManager(domainIdentifier: "defaultDomain")
// May prompt the person to enable the default domain.
try await manager.enable()
} catch {
print("Error: \(error)") // No error, initialization succeeds
}
}
Build and run the app on a device or simulator running iOS 18.0 or later.
Observe that the initializer fails with domainNotRegistered for any identifier other than "defaultDomain".
Expected Behavior:
The ContactProviderManager should initialize successfully with any valid ContactProviderDomain identifier, provided the domain is properly configured or registered, allowing developers to use custom identifiers for organizing contacts (e.g., for different categories or sources).
Actual Behavior:
The ContactProviderManager initializer throws ContactProviderError.domainNotRegistered for any ContactProviderDomain identifier other than "defaultDomain". Only the "defaultDomain" identifier succeeds, limiting the ability to use custom domains.
Impact:
Developers cannot use custom identifiers to categorize or manage contacts in separate domains, restricting the ContactProvider framework’s flexibility. This forces reliance on the "defaultDomain" identifier, which may not suit use cases requiring distinct contact groups (e.g., personal vs. business contacts).
Suggested Fix:
Provide an API to register custom ContactProviderDomain identifiers, such as a ContactProviderManager.register(domain:) method. Update the ContactProviderDomain and ContactProviderManager documentation to clarify how to use custom identifiers or explicitly state if only "defaultDomain" is supported. If custom identifiers are not intended to be supported, document this limitation clearly to avoid developer confusion.
Feedback :
FB20104001 (ContactProviderManager Fails with Custom domainIdentifier, Works Only with "defaultDomain")
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
Observed few times that providerDidBegin(_:) delegate never called for the complete app session after app init(as part of this CXProvider registered) which was built with SDK 26 and running on iOS 26.
This issue observed multiple times with our testing. Since there is no providerDidBegin:, client is marking CallKit as not ready and never report any calls for VoIP APNS and ended up in app crash due to "[PKPushRegistry _terminateAppIfThereAreUnhandledVoIPPushes]"
Please refer for sysdiagnose logs : FB19778306
Hey!
I am developing a macOS application with the help of an external vendor, who is supplying me with a closed-source XCFramework.
In Xcode, when I import their XCFramework bundle, when running the app, or opening a SwiftUI preview, or interacting with the app in any form, I get the familiar dialog:
"[SDK name].framework" Not Opened - Apple could not verify "[SDK name].framework" is free from malware that may harm your Mac or compromise privacy.
(Regardless, the application can run on my machine.)
But indeed, their cross-platform iOS/macOS XCFramework is not notarized at all (using spctl -a -t install), plus the macOS binary embedded is not code signed correctly (using codesign -d). The XCFramework itself is production code signed with a Developer ID certificate, however I believed the above issues to be valid.
Now, I asked the vendor to provide a correctly distributed (so code signed and notarized) framework, however they pointed out that "when I embed and sign the product in my app, it will be re-signed anyways". I understand this is true, but I believe this to be an important security boundary. If I were to re-sign under my name a closed source binary - previously unchecked for malware by Apple Notary Service -, I would put myself up for embedding potentially malicious code in my app, which could only be traced back to me - which would in turn mean a security issue would hinder my reputation here.
Am I being over-protective here, or is this a valid concern? I have no way to see the source code, so I strongly believe this XCFramework should be notarized correctly. I understand that an in-house XCFramework is fine unnotarized, given that I know its origin, but this seems like a unique case where notarization should be enforced from my side on the vendor.
I'm trying to create a dialer app for iOS that will make verified cellular, not voip, calls by registering the calls on my server with an option for passphrase offline verification. This means that I want to build a dialer with a nice UX, so I'm trying to use the new default dialer capability.
I've read https://developer.apple.com/documentation/livecommunicationkit/preparing-your-app-to-be-the-default-dialer-app which links to
https://developer.apple.com/documentation/livecommunicationkit/startcellularconversationaction for starting a call, but when I try to actually use it in my app it says "Cannot find type 'TelephonyConversationManager' in scope" and similar, despite importing LiveCommunicationKit.
Is there a default dialer example app & xcode project I can look at for how this should be set up?
As I understood it I should be able to use these from iOS 18.2, and I'm targeting that version in my project. The page for StartCellularConversationAction says Beta 26.0 though, have I misunderstood something? does some flag need to be set in my xcode to be able to use this?
I read that all test devices need to be in the EU, that should not be the problem.
Hi all,
Pretty new here, so please remember when you were trying hard.
I am creating an IOS app that will generate a link where you have a room-id and a unique id.
This will be sent (normal sms. email, copy/paste values etc) to another user.
If the person receiving the link does not have the app installed, I would like it to go to the app store for download, however the app is currently not finished and therefore I can't provide a proper link.
How do you deal with that?
Thanks in advance
Hi!
Sms reporting is no longer available in iOS beta 26 builds. I can set my app as the SMS/Call Reporting Extensions but the report button is missing for sms messages in the messages app. Xcode 26 beta 7 build the app without errors. This is a breaking change.
Same extension was previously broken for calls but has been fixed in beta 7 build, as reported here. It is however still missing for sms messages in the messages app (beta 9 build).
Hi
Anyone had luck to make EnergyKit work yet?
Using Xcode 26 (latest beta), physical iPhone with the latest iOS26 beta.
I am working on enabling app clip experience for one of our products, where App X would use default appclip url of App Y to launch an experiences using UIApplication.shared.open(defaultAppclipUrl).
Im successfully able to build and submit to appstore by testing via local expereince, but later noticed a strange behaviour in production without local expereince setup, where tapping a button in App X (with default appclip url) fails to launch the appclip for the first time but loads fine from the second try.
I learned that in background Apple would make a API call to fetch details about app clip availability in store and then proceed to launch app clip locally, hence the delay->timeout->failure for first tap.
Once the invocation starts working it would be consistent. After couple of minutes of break say 20m, it again fails for 1st time. I'm assuming that iOS is invalidating the cache on device regarding availability of appclip in store and hence the API call is made again and there is a delay and failure.
can you please help us with this issue.
We've observed an issue where the video button on the CallKit UI is disabled during Video VoIP calls.
This issue appears to be specific to notch devices running SDK 26 and iOS 26 beta 7, specifically on iPhone 11. We have not seen this behavior on devices with Dynamic Island or on older iOS versions.
For further details, please refer to the attached video and sysdiagnose file. : FB19827793
Our experimentation suggests this issue is exclusively present on non-Dynamic Island devices with iOS 26 beta.
I am trying to send an anonymous XPC listener endpoint to my daemon from user context in order to be able to do some bidirectional XPC.
I was trying to use the new XPCListener and XPCSession objects and the easiest method I figured was using the Codable version of the send() methods, in which I wanted to send the XPCEndpoint object - alongside the name of the anonymous endpoint (because I want to have more XPCEndpoints sent over, so I want to be able to identify them.
However, trying to manually encode XPCEndpoint throws an exception:
ERROR: Missing CodingUserInfoKey CodingUserInfoKey(rawValue: "_XPCCodable")
Here is a simple command-line tool reproducing the issue:
import Foundation
import XPC
let listener = try XPCListener(service: "mach-service.xxx.yyy", incomingSessionHandler: {
$0.accept(incomingMessageHandler: { (msg: XPCReceivedMessage) in
return nil
})
})
var endpoint = listener.endpoint
do {
let endpointData = try JSONEncoder().encode(endpoint)
print("EndpointData object: \(endpointData.count) bytes")
} catch let error {
print("ERROR: \(error)")
}
Wrapping my object into an XPCDictionary, then adding multiple keys alongside an "endpoint" key with the XPCEndpoint as value works, but XPCDictionaries are less ideal - they don't even support vanilla Data objects, only ones converted to an xpc_object_t with xpc_data_* functions
Is this expected behavior? I shouldn't encode an XPCEndpoint myself? I am using the latest Xcode 26.0 beta, with deployment target of macOS 15.1, running on macOS 15.5.
(Btw it's also incorrect that this XPCEndpoint API is available from macOS 15.0 - it cannot be found in Xcode 15.4 under macOS 15.5. At the very best it's backDeployed but this isn't mentioned in its public declaration.)
When the app launches, it assigns the correct string stored in NSUserDefaults to the instance variable (serverAddress) of type NSString.
Afterwards, when the app transitions to a suspended state and receives a VoIP Push notification approximately 4 hours later, causing the app to enter the background state, referencing the value of serverAddress may result in it showing as <NSMallocBlock: 0x106452d60> even though it hasn't been deallocated. This does not occur every time.
The specific class definitions are as follows.
@implementation NewPAPEOPLEClient
{
NSString* serverAddress;
NSString* apiKey;
dispatch_semaphore_t lock;
NSMutableArray* errCallID;
}
#define PREF_STR(key) [[NSUserDefaults standardUserDefaults] stringForKey:(key)
The global instance variable (serverAddress) is set with the following value when the application starts:
serverAddress = PREF_STR(@"APP_CONTACT_SERVICE_SERVER_ADDRESS")
Based on the above, please answer the following questions.
(1) If the instance variable's value becomes <NSMallocBlock: 0x106452d60>, does that mean the memory area has been released?
(2) Can the memory area of an instance variable be automatically released without being explicitly released?
Can an instance variable of type NSString that is not autoreleased be automatically released?
(3) Please tell me how to prevent the memory area from being automatically released. Will using retain prevent automatic release?
Weatherkit stopped again providing next hour rain data for United kingdom and ireland
Does WeatherKit have Hourly Agriculture Forecast endpoint? we are specifically looking for the following weather variables:
soil moisture,
soil temperature,
evapotranspiration,
temperatureInversion
Hello,
I am developing a messaging filtering app (F-Secre) that includes a Message Filter Extension. The extension correctly identifies and filters spam SMS/iMessage.
In iOS 18, when a message was filtered into the Junk folder, the Messages app would correctly display a label beneath it indicating it was filtered by our product, e.g., “Junk filtered by F-Secre”.
After updating to the iOS 26 beta (26.0 (23A5330a)), the filtering functionality itself still works—messages are correctly moved to the Junk folder. However, the branding attribution ("filtered by F-Secre") is now missing. The message appears in the Junk folder with no indication of which extension filtered it.
This is a regression in user experience, as it removes visibility and credit for our app's work and might confuse users about whether the filtering system is active.
The home AppIcon appears as it should but in settings I get the generic icon. I tried:
giving the extension its own assets and AppIcon asset.
giving the main app assets 2 targets, itself AND the extension
setting AppIcon appearances to "none" and iOS "all sizes" and providing 29pt and the other sizes.
Adding to info.plist and specifying "CFBundleIconFiles"
Yes, nuked derived data, switched off phone, everything.
Starting with just the standard 1024×1024 AppIcon (expecting Xcode to auto-generate all slices, including 29pt for Settings). It didn’t — Settings still shows the generic gear.
Question: What should I do to make the extension’s icon show up in Settings?
Environment
• Xcode: 16.4 (16F6)
• iOS: 18.5 (device)
• Targets: iOS app + Call Directory extension
• App icon pipeline: asset catalog (single-size initially, now legacy grid)
See crash details here:- https://pastebin.com/i9u5PE4X
There's a comprehensive thread here, folks!
https://discussions.apple.com/thread/255651156?sortBy=oldest_first
Thanks for any thoughts.
I want to add different badge indicators on the dock bar based on the different states of the application. How can I do this?
Topic:
App & System Services
SubTopic:
General
Hi everyone, on iOS, when a VoIP call arrives and the user accepts it from the lock screen (after unlocking with Face ID/Touch ID), is there any way to automatically bring my app to the foreground and show the in-app call screen, instead of staying in the system CallKit UI?
I put a test.mp3 (30 sec) file into the App Bundle.
I scheduled an AlarmKit alarm with the file name test.mp3.
The custom sound plays ✅
I copied the file from the App Bundle to Library/Sounds/test2.mp3.
I scheduled an AlarmKit alarm with the file name test2.mp3.
Instead of playing the custom sound, it falls back to the default sound ❌
According to the documentation, sounds placed in Library/Sounds should be playable:
I filed report FB19779004 on August 20, but haven’t received any response yet.
This functionality is critical for our use case, so could you please let me know whether this is expected to be fixed soon, or if I’m misunderstanding the intended behavior?
Topic:
App & System Services
SubTopic:
General
Hello.
I've implemented the Live Caller ID Lookup feature in my app, but sometimes I get a weird error. When I call LiveCallerIDLookupManager.shared.refreshPIRParameters(...) from my app, it sometimes throws an error:
Error Domain=com.apple.CipherML Code=1100 "Unable to query status due to errors: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." UserInfo={NSLocalizedDescription=Unable to query status due to errors: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection., NSUnderlyingError=0x118f65740 {Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." UserInfo={NSLocalizedDescription=The resource could not be loaded because the App Transport Security policy requires the use of a secure connection., NSErrorFailingURLKey=http://www.example.com/config}}}
What does this error mean? And where did the example.com part come from? What should I do to get rid of this error? My Service URL is hardcoded in the Live Caller ID Lookup Extension of my app and it is definitely not example.com.