I am developing a VoIP phone application(Our Phoneapp) using APNs VoIP push.
I have a question regarding a behavior I discovered during testing of this application.
When performing the following operations using an iPhoneSE3 with an sXGP-NW SIM inserted,
0xBAADCA11 occurs upon receiving an APNs VoIP PUSH.
Do you have any information regarding this issue?
0xBAADCA11 occurs in operation 8. However, since there were no problems in operation 4 (the app works when Wi-Fi is off), I think there is no issue with the Our Phoneapp.
[Configuration of system components]
[VoIP Telephone] --Call to iPhone(Phoneapp)--> [Our VoIP PBX Server] -- VoIP PUSH request --> [Apple APNs Server] -- VoIP PUSH --> [Our Phoneapp (iPhoneSE3(with sXGP SIM)]
[Operations]
(The issue is reproducible 100% by following oparation)
iPhoneSE3: Power on (iPhoneSE3 with sXGP SIM)
iPhoneSE3: Wi-Fi off, connect to the internet via SIM.
VoIP Telephone: Call to Our Phoneapp
iPhoneSE3: Receives VoIP PUSH and Phoneapp launches. Successfully answers the call and communication is possible. (Receives VoIP push notification from APNs via sXGP SIM)
iPhoneSE3: Wi-Fi is turned ON, connect to the internet via Wi-Fi.
iPhoneSE3: Task kill Our Phoneapp.
VoIP Telephone: Call to Our Phoneapp
iPhoneSE3: iOS does not call the push notification delegate (didReceiveIncomingPushWithPayload).
As a result our Phoneapp is unable to detect the incoming call, However, an ips log with 0xBAADCA11 is output.
in other words, iOS received the VoIP PUSH, but Our Phoneapp dose not call CallKit, so Our Phoneapp was terminated by iOS.
Posts under iOS tag
200 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Project structure is:
App target + widget extension + widget intent extension
All share a common appgroup group.com.x.y and all file handling is done using
FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.x.y")
so that only the shared container is used.
Using the Main app target, a font "Chewy-Regular.ttf" is downloaded and saved to the shared AppGroup container.
Font can now be loaded via
CTFontManagerRegisterFontsForURL
and displayed in a Main App Text view
Text("Testing...").font(Font.custom("Chewy-Regular", size: 20))
Now add a Widgetkit widget instance that uses this font.
In 'getTimeLine() and getSnapShot() of IntentTimelineProvider we load the font again via CTFontManagerRegisterFontsForURL (this needs to happen again probably because widget runs in a separate process from the main app?).
On simulator, the widget will show the correct font.
BUT
On iPhone7 real device, the widget will show the 'redacted placeholder view'. It seems that something is crashing.
I see in the device console :
error 14:39:07.567120-0800 chronod No configuration found for configured widget identifier: D9BF75EE-4A04-441A-8C85-1507F7ECE379
fault 14:39:07.625600-0800 widgetxExtension -[EXSwiftUI_Subsystem beginUsing:withBundle:] unexpectedly called multiple times.
error 14:39:07.672733-0800 chronod Encountered an error reading the view archive for <private>; error: <private>
error 14:39:07.672799-0800 chronod [co.appevolve.onewidget.widgetx:widgetx:small:1536744920620481560@148.0/148.0/20.2] reload: could not decode view
error 14:39:07.674984-0800 kernel Sandbox: chronod(2128) deny(1) file-read-metadata /private/var/mobile/Containers/Shared/AppGroup/9B524570-1765-4C24-9E0C-15BC3982F0DC/downloadedFonts/Chewy/Chewy-Regular.ttf
error 14:39:07.675762-0800 kernel Sandbox: chronod(2128) deny(1) file-read-data /private/var/mobile/Containers/Shared/AppGroup/9B524570-1765-4C24-9E0C-15BC3982F0DC/downloadedFonts/Chewy/Chewy-Regular.ttf
error 14:39:07.708914-0800 chronod [u 8D2C83B3-A6CB-432E-A9D4-9BC8F7056B10:m (null)] [<private>(<private>)] Connection to plugin invalidated while in use.
fault 14:39:07.710284-0800 widgetxExtension -[EXSwiftUI_Subsystem beginUsing:withBundle:] unexpectedly called multiple times.
error 14:39:07.803468-0800 chronod Encountered an error reading the view archive for <private>; error: <private>
It seems that it's a permission issue, and the textview can't access the font file it needs when the widget is rendering.
Notes:
1) Font is definitely registered because I can see them in
for fontFamily in UIFont.familyNames {
for fontName in UIFont.fontNames(forFamilyName: fontFamily) {
print(fontName)
								...
in both the Main App target and the Widget Extension target
2) If I make make the font part of the app bundle and add to 'Fonts provided by application' , the are loaded absolutely fine in the Main App and the Widget on simulator and iPhone 7 real device.
3) I do see this error sometimes in the Widget extension target log, don't know if it's related.
widgetxExtension[1385:254599] [User Defaults] Couldn't read values in CFPrefsPlistSource<0x28375b880> (Domain: group.co.appevolve.onewidget, User: kCFPreferencesAnyUser, ByHost: Yes, Container: (null), Contents Need Refresh: Yes): Using kCFPreferencesAnyUser with a container is only allowed for System Containers, detaching from cfprefsd
4) I suspected something to do with app groups, so I tried to copy the font into the Widget Extension container and load from there, but had the same result.
Please help! Thank you.
Topic:
App & System Services
SubTopic:
Widgets & Live Activities
Tags:
iOS
WidgetKit
Typography
SwiftUI
I am currently developing an AR experience using ARKit with SceneKit and am looking to implement functionality that enables:
Zooming into the AR camera feed, ideally leveraging the ultra-wide or telephoto lenses available on supported devices.
Macro-style focus capabilities, allowing users to view and interact with virtual content closely aligned with small or nearby real-world objects (within a few centimeters).
My objective is to ensure that ARKit continues to render the scene accurately while enabling a zoomed-in view or macro-level focus for better detail visibility and alignment.
Could you please advise on:
Whether ARKit currently supports camera zoom or allows access to macro or ultra-wide cameras within an ARSession.
Limitations or considerations when using multi-camera setups in conjunction with ARKit.
Any guidance or references to documentation or sample code would be greatly appreciated.
I have an iPad 1 running iOS 5.1.1, I want to downgrade it to iPhone OS 3.2
Does anybody have a way to downgrade unsigned .ipsw's or do I have to sign it myself?
Is there any possibility to update constraints for elements inside CollectionViewCell with button tap?
And where to put the code inside CellForItem or Inside CollectionViewCell Class File?
I have written an App which extracts data, over WiFi, from an instrument that creates its own WiFi Hotspot.
The instrument provides no internet connection. The iPad version of this App is connects fine and is assigned an IP address by DHCP server running on a MicroChip RN171 wifi module.
iOS assigns an obscure IP address on a completely different subnet. I understand this is iOS' way of "Complaining" that is wasn't assigned an IP address.
Consequently in the case of the iPhone I am forced to manually assign an IP address for the iPhone, the mask and the gateway. Only then is the connection successful.
Anyone know why the iPhone won't talk DHCP to a WiFi module not connected to the internet? Are there perhaps some parameters that I need to adjust on either the iPhone or WiFi module?
Hello,
I have been running into issues with setting nowPlayingInfo information, specifically updating information for CarPlay and the CPNowPlayingTemplate.
When I start playback for an item, I see lock screen information update as expected, along with the CarPlay now playing information.
However, the playing items are books with collections of tracks. When I select a new track(chapter) within the book, I set the MPMediaItemPropertyTitle to the new chapter name. This change is reflected correctly on the lock screen, but almost never appears correctly on the CarPlay CPNowPlayingTemplate. The previous chapter title remains set and never updates.
I see "Application exceeded audio metadata throttle limit." in the debug console fairly frequently.
From that a I figured that I need to minimize updates to the nowPlayingInfo dictionary. What I did:
I store the metadata dictionary in a local dictionary and only set values in the main nowPlayingInfo dictionary when they are different from the current value.
I kick off the nowPlayingInfo update via a task that initially sleeps for around 2 seconds (not a final value, just for my current testing). If a previous Task is active, it gets cancelled, so that only one update can happen within that time window.
Neither of these things have been sufficient. I can switch between different titles entirely and the information updates (including cover art).
But when I switch chapters within a title, the MPMediaItemPropertyTitle continues to get dropped. I know the value is getting set, because it updates on the lock screen correctly.
In total, I have 12 keys I update for info, though with the above changes, usually 2-4 of them actually get updated with high frequency.
I am running out of ideas to satisfy the throttling thresholds to accurately display metadata. I could use some advice.
Thanks.
Start from clean iOS 18.4 simulator. Application tried to request authorisation from user for microphone access. Clicking allow caused the application crashed.
Used Swift 6. Report Identifier FB17686864.
When a new application runs on iOS 18.4 simulator and tries to access the Speech Framework, prompting a request for authorisation to use Speech Recognition, the application will crash if the user clicks allow. Same issue in the visionOS 2.4 simulator.
Using Swift 6. Report Identifier: FB17686186
/// Checks speech recognition availability and requests necessary permissions.
@MainActor
func checkAvailabilityAndPermissions() async {
logger.debug("Checking speech recognition availability and permissions...")
// 1. Verify that the speechRecognizer instance exists
guard let recognizer = speechRecognizer else {
logger.error("Speech recognizer is nil - speech recognition won't be available.")
reportError(.configurationError(description: "Speech recognizer could not be created."), context: "checkAvailabilityAndPermissions")
self.isAvailable = false
return
}
// 2. Check recognizer availability (might change at runtime)
if !recognizer.isAvailable {
logger.error("Speech recognizer is not available for the current locale.")
reportError(.configurationError(description: "Speech recognizer not available."), context: "checkAvailabilityAndPermissions")
self.isAvailable = false
return
}
logger.trace("Speech recognizer exists and is available.")
// 3. Request Speech Recognition Authorization
// IMPORTANT: Add `NSSpeechRecognitionUsageDescription` to Info.plist
let speechAuthStatus = SFSpeechRecognizer.authorizationStatus()
logger.debug("Current Speech Recognition authorization status: \(speechAuthStatus.rawValue)")
if speechAuthStatus == .notDetermined {
logger.info("Requesting speech recognition authorization...")
// Use structured concurrency to wait for permission result
let authStatus = await withCheckedContinuation { continuation in
SFSpeechRecognizer.requestAuthorization { status in
continuation.resume(returning: status)
}
}
logger.debug("Received authorization status: \(authStatus.rawValue)")
// Now handle the authorization result
let speechAuthorized = (authStatus == .authorized)
handleAuthorizationStatus(status: authStatus, type: "Speech Recognition")
// If speech is granted, now check microphone
if speechAuthorized {
await checkMicrophonePermission()
}
} else {
// Already determined, just handle it
let speechAuthorized = (speechAuthStatus == .authorized)
handleAuthorizationStatus(status: speechAuthStatus, type: "Speech Recognition")
// If speech is already authorized, check microphone
if speechAuthorized {
await checkMicrophonePermission()
}
}
}
I am reaching out to seek clarification on the usage of exit(0) within an iOS application under specific circumstances, as I have not been able to find concrete guidance on this in the App Store Review Guidelines
Context of Our Application:
We are developing a mobile game using Cocos2d-JS (Cocos2d-x JavaScript bindings). The game is built in C++ with JavaScript used for game logic, and it runs on both Android and iOS.
Occasionally, due to an unrecoverable fatal JavaScript error (e.g., corrupted state or unexpected runtime crash), the game’s screen goes completely black. When this occurs, the rendering engine halts, user interaction becomes impossible, and the app enters a non-functional state. From this point, the only way to return to a working state is to manually terminate and relaunch the app.
We are exploring a user-friendly solution where, upon detecting such a critical failure, we present a native UIAlertController to the user explaining the issue and informing them that the app needs to restart. Upon confirmation (i.e., tapping “OK”), we call exit(0) to gracefully close the app, so the user can relaunch it in a working state.
Our Question:
Is it acceptable to use exit(0) in this very limited and clearly explained context? The intention is to improve the user experience during unrecoverable fatal states that cannot be handled through standard UI or engine resets.
I understand that the use of exit(0) is generally discouraged, but in our case:
The user explicitly initiates the exit via a native prompt.
The app is not quitting on its own or in response to a policy violation.
We are not using exit(0) to bypass App Review or circumvent system behavior.
There is no mention in the App Review Guidelines explicitly stating whether or not exit(0) is disallowed in such edge cases.
Please confirm whether this approach aligns with Apple's policies, or suggest an alternative method for cleanly handling such irrecoverable errors on iOS?
Looking forward to your guidance.
What happens if Safari is uninstalled or disabled on iOS?
Will SFafariviewcontroller still work?
Kind regards
Hi all
I'm reworking our app in SwiftUI. My ultimate goal is to access the NavigationPath from a child view which is used throughout different NavgationStacks. While searching for I came across different ways of achieving this. As I'm relatively new to SwiftUI it is hard to understand what the actual best practice seems to be.
So for the use case. My app has a TabView and each Tab has its own NavigationStack which looks something like this
struct TabNavigation: View {
@State private var selectedProductType: StaticProductType = .all
@StateObject private var appRouter = AppRouter()
var body: some View {
TabView(selection: $appRouter.selectedTab) {
Overview(activeType: $selectedProductType)
.tabItem {
Label("Home", systemImage: "house")
}
.tag(Tab.home)
AssortmentView(router: $appRouter.assortmentRouter,
activeType: $selectedProductType)
.tabItem {
Label(String(localized: "assortment"), systemImage:
"list.bullet")
}
.tag(Tab.assortment)
}
}
The AssortmenView holds the NavigationStack and defines the routes.
struct AssortmentView: View {
@Binding var router: AssortmentRouter
@Binding var activeType: StaticProductType
var body: some View {
NavigationStack(path: $router.navigationPath) {
VStack {
ProductTypeNavigation(activeType: $activeType)
.padding(.top, 10)
.padding(.horizontal, 10)
Spacer()
TabView(selection: $activeType) {
ListNavigation(type: .all)
.tag(StaticProductType.all)
ListNavigation(type: .games)
.tag(StaticProductType.games)
ListNavigation(type: .digital)
.tag(StaticProductType.digital)
ListNavigation(type: .toys)
.tag(StaticProductType.toys)
ListNavigation(type: .movies)
.tag(StaticProductType.movies)
ListNavigation(type: .books)
.tag(StaticProductType.books)
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
}
.addToolbar()
.navigationDestination(for: AssortmentRouter.Route.self) { route in
switch route {
case .overview(let type):
OverviewTypeView(type: type)
case .productDetail(let productId):
ProductDetailView(productId: productId)
.environmentObject(router)
case .productList:
ProductList()
}
}
}
}
}
Through my app I often use a view to displaying products. This view is reused over different NavigationStacks.
struct ProductDetailView: View {
var productId: Int
@StateObject private var viewModel: ProductDetailViewModel = ProductDetailViewModel()
@State private var showErrorAlert = false
@EnvironmentObject var router: AssortmentRouter
var body: some View {
VStack {
if !viewModel.isRefreshing {
let product = viewModel.product
VStack {
Text("Product: \(product.title)")
NavigationLink(destination: ProductDetailView(productId: Product.preview.productId)) {
Text("Test")
}
}
.navigationTitle(product.title)
} else {
ProgressView()
}
}.task {
await loadProduct()
}
.alert("Error", isPresented: $showErrorAlert, presenting: viewModel.localizedError) { _ in
Button("Try again") {
Task {
await loadProduct()
}
}
Button("Go Back", role: .cancel) {
// access navigationPath
}
} message: { errorMessage in
Text(errorMessage)
}
}
@MainActor
private func loadProduct() async {
await viewModel.loadProduct(productId: productId)
showErrorAlert = viewModel.localizedError != nil
}
}
In this example I created an AppRouter which holds all information for the routes and some functions to accessing the NavigationPath.
class AppRouter: ObservableObject {
var assortmentRouter = AssortmentRouter()
var selectedTab: Tab = .home
func navigateTo(tab: Tab) {
selectedTab = tab
}
}
class AssortmentRouter: ObservableObject {
var navigationPath = NavigationPath()
enum Route: Hashable {
case overview(type: StaticProductType)
case productList
case productDetail(productId: Int)
}
func navigateTo(route: Route) {
navigationPath.append(route)
}
}
This works fine as it is. The pro of this solution is that I don't have to pass the NavigationPath down each subview to use it as I can define it as EnvrionmentObject. The problem with this though, I like to reuse ProductDetailView also in my other NavigationStack which won't have a router binding of type AssortmentRouter as you can imagine.
To come back to my initial question, what would be the best way to design this?
Passing down a NavigationPath Binding and using different typing for navigationDestinaion values
Define a callback which is passed as function parameter to the detail view
Using dismiss, but I read that this is can lead to weird behaviour and bugs
Any other option? Maybe changing the app architecture to handle this a better way
Apolgize the long post, but I would be really glad to get some feedback on this, so I can do it the right way.
Thank you very much
Hi all,
We're working on an iOS application and would like to improve our ability to diagnose failures - especially in scenarios where the app crashes before it can present any UI to the user.
A few specific questions:
In case of an exception or crash, is there a way to log the issue so the user (or our support team) can understand the cause of the failure?
If the app crashes abruptly (e.g., due to a runtime exception or crash during launch), is there a recommended way to persist error information before the process terminates?
Are there Apple-supported mechanisms (like crash reporting tools or APIs) we can integrate that would help us capture such issues?
What’s the best practice for enabling support teams to assist users based on crash reports - especially for crashes that happen before any user interaction?
Our goal is to make sure users aren't left in the dark if the app fails to start, and to allow us to deliver timely updates or support based on the cause of the crash.
Thanks in advance for your guidance!
Hi, can someone explain me why there is so huge difference between download and install size? I get it that download is compressed but there difference is really huge.
Hi,
I'm adding tabs to the iOS version of my multiplatform app using TabView. I want the individual tabs to have names and icons. In iOS 17 and below, I have to do this using:
tabContent().tabItem {
Label(titleKey, systemImage: systemImage)
}
but this is deprecated, so in iOS 18 I would like to use the new version:
Tab(titleKey, image: systemImage) {
content()
}
It would be annoying to have to have the two cases for each individual tab, so I'm trying to abstract it into a custom SwiftUI view like this:
var body: some View {
if #available(iOS 18.0, *) {
Tab(titleKey, image: systemImage) {
content()
}
} else {
content().tabItem {
Label(titleKey, systemImage: systemImage)
}
}
}
There's a bit more to the custom view because I also have cases for iPad and macOS where I just have the views next to each other without tabs, but that's not really relevant to the question other than providing further motivation for abstracting this.
However, with this code, I get the error:
'buildExpression' is unavailable: this expression does not conform to 'View'
on the Tab line, because Tab isn't a view, and it can only be used directly inside a TabView.
For now at least, I can just use tabItem on all iOS versions and it works, but I'd prefer not to in case it is removed some time soon. I do want to support iOS 17 because that's what my iPad runs. Is there any clean way to do this?
I tested it on the app I work with and others I use and the notification message is not appearing when using sleep mode
Iphone: 13 mini
IOS: 18.4.1
I tested it on the app I work with and others I use and the notification message is not appearing when using sleep mode.
Someone knows something about this, and if it is mapped for correction?
Iphone: 13 mini IOS: 18.4.1
PDFKit PDFPage.characterBounds(at: Int) is returning incorrect coordinates with iOS 18 beta 4 and later / Xcode 16 beta 4.
It worked fine in iOS 17 and earlier (after showing the same issue during the early iOS 17 beta cycle)
It breaks critical functionality that my app relies on.
I have filed feedback (FB14843671).
So far no changes in the latest betas. iOS release date is approaching fast!
Anybody having the same issue? Any workaround available?
Hello,
I'm running into an issue while developing an iOS app that requires local network access. I’m using the latest MacBook Air M4 with macOS sequoia 15.5 and Xcode 16.1. In the iOS Simulator, my app fails to discover devices connected to the same local network.
I’ve already added the necessary key to the Info.plist:
NSLocalNetworkUsageDescription
This app needs access to local network devices.
When I run the app on a real device and M2 Chip Macbook's simulators, it works fine for local network permission as expected. However, in the M4 Chip Macbook's Simulator:
The app can’t find any devices on the local network
Bonjour/mDNS seems not to be working as well
I’ve tried the following without success:
Restarting Simulator and Mac
Resetting network settings in Simulator
Confirming app permissions under System Settings > Privacy & Security
Has anyone else encountered this issue with the new Xcode/macOS combo? Is local network access just broken in the Simulator for now, or is there a workaround?
Thanks in advance!
Hi there.
How can I do for the title?
URLRequest seems not to have property for protocols.
NSURLSessionWebSocketTask seems to have either URLRequest or protocols, but have neither of them.
What I want to do is setting both protocols and headers when using WebSocket.
Should I use Network.framework instead?