If I run an app with a message filter extension on < iOS 18 everything is as expected, if I run the same app, without any changes on iOS 18 then it doesn't work.
I've discovered that problems occur if the extension has the following code:
extension MessageFilterExtension: ILMessageFilterQueryHandling, ILMessageFilterCapabilitiesQueryHandling {
func handle(_ capabilitiesQueryRequest: ILMessageFilterCapabilitiesQueryRequest, context: ILMessageFilterExtensionContext, completion: @escaping (ILMessageFilterCapabilitiesQueryResponse) -> Void) {
let response = ILMessageFilterCapabilitiesQueryResponse()
response.transactionalSubActions = [.transactionalCarrier, .transactionalHealth, .transactionalPublicServices, .transactionalFinance, .transactionalWeather, .transactionalRewards, .transactionalOrders, .transactionalOthers, .transactionalReminders]
response.transactionalSubActions = [.transactionalFinance,
.transactionalOrders,
.transactionalHealth]
completion(response)
}
This code doesn't run on iOS 18, however the following code does run on iOS 18:
let response = ILMessageFilterCapabilitiesQueryResponse()
completion(response)
I downloaded several apps from the app store which provide message filtering, within the Message app they all had one thing in common, on < iOS 18 they all show 12 filtering categories, but within iOS 18 they only show 2. So it seems the issue is endemic and effects other apps, not just mine.
Core OS
RSS for tagExplore the core architecture of the operating system, including the kernel, memory management, and process scheduling.
Post
Replies
Boosts
Views
Activity
Bootstrapping failed for <FBApplicationProcess: 0x52ed3f180; app:> with error: <NSError: 0x3020c42a0; domain: RBSRequestErrorDomain; code: 5; "Launch failed."> {
NSUnderlyingError = <NSError: 0x3020c4630; domain: NSPOSIXErrorDomain; code: 85> {
NSLocalizedDescription = Launchd job spawn failed;
};
}
I have an app that is used to control features of a device with a driverkit driver. I am having trouble creating a connection a certain device.
The Sample code from "Communicating between a DriverKit extension and a client app.
The sample code shows:
ret = IOServiceGetMatchingServices(kIOMainPortDefault, IOServiceNameMatching(kDextIdentifier), &iterator);
I cannot use kDextIdentifier but need to find a service with a certain BSD Name. So in this case I try:
ret = IOServiceGetMatchingServices(kIOMainPortDefault, IOBSDNameMatching(kIOMasterPortDefault, NULL, interface), &iterator);
In each case the call completes correctly, and we get an iterator. I can also use IOServiceGetMatchingService with IOBSDNameMatching, and that completes correctly as well.
However when I attempt IOServiceOpen with the first case, the connection is created correctly. However, I have four of these in the machine, and I need to select the service and subsequently connection for a certain BSD name.
When I attempt the IOServiceOpen with the second/third calls, the IOServiceOpen call fails with error 0x2c7 which is unsupported.
Is there an entitlement I need to make this work?
Hi
I am looking for examples where a BLE Device (ESP32 or Arduino) can be a BLE Client and subscribe to iPhone ANCS Services. Unfortunately my code is UNABLE TO FIND my iPhone device even after scanning for nearby BLE Devices.
ANCS Documentation (Not helpful): https://developer.apple.com/library/archive/documentation/CoreBluetooth/Reference/AppleNotificationCenterServiceSpecification/Specification/Specification.html
I am able to create a BLE Device as a server but I am looking to subscribe to incoming call notifications. PLEASE HELP if you have done this before.
Thanks
To be able to paire a matter device on ios I need to installed on my iPhone the matter client developper profile as indicate on the apple documentation
Adding Matter support to your ecosystem | Apple Developer Documentation
(To test your app on the iOS or macOS device that initiates the pairing, download the developer profile now, then install it.)
When I do that it works perfectly.
Otherwise the documentation says that the profile is only needed for development but when I want to use my app from the apple store (validate by Apple) and when I remove the profile it doesn't work anymore.
What do I have to do to paire Matter device on iphone without the Matter client developer profile.
Hello, I would like to know why my FileProvider. apex application cannot run on a Mac OS 12.0 computer after I compiled it on Mac OS 4.5.
I have changed the macOS Deployment Target and Minimum Deployment in the XCode configuration file to 11.0, but it still cannot run
The error is as follows:
2024-09-23 10:10:24.264067+0800 0xab312 Error 0x0 83438 0 O+Connect: (libFileProviders Manager. dylib) [com. oplus. DeviceSpace: FileProviders Manager] Unable to add domain, error: Error Domain=NSFileProviders Error Domain Code=-2001 "The application is currently unavailable. UserInfo={NSLocalizedDescription=The application is currently unavailable.}
I want to know what this error means and how to solve it
Hi. I am developing an alarm app. My app plays white noise to help users get into sleep properly. To keep white noise playing in the background, my app uses audio background mode. The problem is that my app sometimes gets suspended few hours after getting into background. I cannot find the exact reason for it.
Doesn't audio background guarantee that app is not suspended by system? Then how can I handle this issue so that my app can keep white noise playing feature?
My Watch app is a workout app that has to be careful to minimize CPU load when backgrounded to get below the 15% avg/60 s in order to avoid being terminated by the system.
Accordingly I have logic to detect a transition to the background using a .onChange(of: scenePhase) { phase in… } handler which works well for cases where the app is backgrounded - it is able to reduce its CPU load to just 6-9% while backgrounded.
But a special case of the change to scenePhase presents a challenge - when an overlay such as the Control Center or a long-look notification presents, there is no transition to .background, only to .inactive. This is a problem because the system nevertheless imposes the background CPU limit on the app while it’s being covered by the overlay, even though the app didn’t get the .background transition on the scenePhase handler.
To further complicate matters, it now seems with watchOS 11 that whenever a transition is made in the screen cadence from .live to .seconds, the scenePhase handler is called with a transition to .inactive. Which is a problem because this transition has to be distinguished from the case of the overlay presentation - the cadence change has no CPU usage implications as long as the app remains foregrounded, but the overlay presentation does, and the system will terminate the app if it exceeds 15% avg/60s.
My question: how can I distinguish between the two causes of the transition to .inactive for the two cases: 1) when the overlay presents, and 2) when the display shifts to the slow cadence?
I have upgrade to Mac OS 14 and my smart card reader quit working. Works in safe mode and while booting up. Then stops functioning.
Allow Accessories to connect is not visible. However, I can search for the function but not select it.
MacBook Air M1, Sonoma Beta.
The Deligate 'didFetchResult' method of fetching data past 24 hours from SensorKit is not being called. It is confirmed that you have already granted full access to the SensorKit and that data on the Ambient value in the device's personal information -> research sensor & usage data are recorded.
It is possible to export to an lz4 file. I want to have the data after 24 hours called to the app, but other Deligate methods are called, but only Deligate that gets the illumination value is not called. Is it understood that only data past 24 hours can be imported after startRecoding() is called?
If so, in order to receive data past 24 hours, do I have to continue to receive the illumination data value in the background for more than 24 hours to receive the Ambient value afterwards?
import Foundation
import SensorKit
import UIKit
final class SensorKitManager: NSObject, ObservableObject, SRSensorReaderDelegate {
static let shared = SensorKitManager()
private let ambientReader = SRSensorReader(sensor: .ambientLightSensor)
var availableDevices: [SRDevice] = []
@Published var ambientLightData: [AmbientLightDataPoint] = []
var isFetching = false
var isRecordingAmbientLight = false
private override init() {
super.init()
setupReaders()
checkAndRequestAuthorization()
}
private func setupReaders() {
ambientReader.delegate = self
}
// MARK: - Permission Request
func requestAuthorization() {
SRSensorReader.requestAuthorization(sensors: [.ambientLightSensor]) { [weak self] error in
DispatchQueue.main.async {
guard let self = self else {
print("Permission request aborted")
return
}
if let error = error {
print("Permission request failed: \(error.localizedDescription)")
} else {
print("Permission request succeeded")
self.startRecordingAmbientLightData()
}
}
}
}
func checkAndRequestAuthorization() {
let status = ambientReader.authorizationStatus
switch status {
case .authorized:
print("Ambient light sensor access granted")
startRecordingAmbientLightData()
case .notDetermined:
print("Ambient light sensor access undetermined, requesting permission")
requestAuthorization()
case .denied:
print("Ambient light sensor access denied or restricted")
@unknown default:
print("Unknown authorization status")
}
}
// MARK: - Ambient Light Data Logic
func startRecordingAmbientLightData() {
guard !isRecordingAmbientLight else {
print("Already recording ambient light data.")
return
}
print("Starting ambient light data recording")
isRecordingAmbientLight = true
ambientReader.startRecording()
fetchAmbientLightData()
fetchAmbientDeviceData()
}
func fetchAmbientLightData() {
print("Fetching ambient light data")
let request = SRFetchRequest()
let now = Date()
let fromTime = now.addingTimeInterval(-72 * 60 * 60)
let toTime = now.addingTimeInterval(-25 * 60 * 60)
request.from = SRAbsoluteTime(fromTime.timeIntervalSinceReferenceDate)
request.to = SRAbsoluteTime(toTime.timeIntervalSinceReferenceDate)
print("Fetch request: \(fromTime) ~ \(toTime)")
ambientReader.fetch(request)
}
private func displayAmbientLightData(sample: SRAmbientLightSample) {
print("Ambient light: \(sample.lux.value) lux")
print("Current ambientLightData content:")
for data in ambientLightData {
print("Timestamp: \(data.timestamp), Lux: \(data.lux)")
}
}
// MARK: - Device Data Logic
private func fetchAmbientDeviceData() {
print("Fetching device information")
let request = SRFetchRequest()
let now = Date()
let fromDate = now.addingTimeInterval(-72 * 60 * 60)
let toDate = now.addingTimeInterval(-24 * 60 * 60)
request.from = SRAbsoluteTime(fromDate.timeIntervalSinceReferenceDate)
request.to = SRAbsoluteTime(toDate.timeIntervalSinceReferenceDate)
if availableDevices.isEmpty {
print("No devices available")
ambientReader.fetchDevices()
} else {
for device in availableDevices {
print("Starting data fetch (Device: \(device))")
request.device = device
ambientReader.fetch(request)
print("Fetch request sent (Device: \(device))")
}
}
}
// MARK: - SRSensorReaderDelegate Methods
func sensorReader(_ reader: SRSensorReader, didFetch devices: [SRDevice]) {
availableDevices = devices
for device in devices {
print("Fetched device: \(device)")
}
if !devices.isEmpty {
fetchAmbientDeviceData()
}
}
func sensorReader(_ reader: SRSensorReader, fetching fetchRequest: SRFetchRequest, didFetchResult result: SRFetchResult<AnyObject>) -> Bool {
print("sensorReader(_:fetching:didFetchResult:) method called")
if let ambientSample = result.sample as? SRAmbientLightSample {
let luxValue = ambientSample.lux.value
let timestamp = Date(timeIntervalSinceReferenceDate: result.timestamp.rawValue)
// Check for duplicate data and add it
if !ambientLightData.contains(where: { $0.timestamp == timestamp }) {
let dataPoint = AmbientLightDataPoint(timestamp: timestamp, lux: Float(luxValue))
ambientLightData.append(dataPoint)
print("Added ambient light data: \(luxValue) lux, Timestamp: \(timestamp)")
} else {
print("Duplicate data, not adding: Timestamp: \(timestamp)")
}
// Output data
self.displayAmbientLightData(sample: ambientSample)
}
return true
}
func sensorReader(_ reader: SRSensorReader, didCompleteFetch fetchRequest: SRFetchRequest) {
print("Data fetch complete")
if ambientLightData.isEmpty {
print("No ambient light data within 24 hours.")
} else {
print("ambientLightData updated")
for dataPoint in ambientLightData {
print("Added ambient light data: \(dataPoint.lux) lux, Timestamp: \(dataPoint.timestamp)")
}
}
}
}
Hello,
we are currently working on a plan to migrate our app suite from Developer ID binaries inside a simple pkg installer to macOS app store distribution.
The reason we are using an installer is that there are multiple binaries inside that communicate via XPC and we need to install the respective launchd plist in /Library/LaunchDaemons and /Library/LaunchAgents:
1 root daemon
1 agent that has minimal UI and lives in the system menu bar
1 embedded command line utility in user agent
1 embedded FileProvider extension in user agent
1 embedded Action Extension in user agent
1 agent that only does OAuth stuff
Looking through Updating helper executables from earlier versions of macOS I can install the root daemon with SMAppService.daemon(plistName:) and the OAuth helper with SMAppService.agent(plistName:). For the main application I only found SMAppService.mainApp which does not accept a property list configuration. Therefore, I have no place to put my MachServices array and so the File Provider extension, the Action Extension, and the embedded command line utility have no way to talk to the user agent.
Currently, XPC is used in between these processes:
user agent -> root daemon
command line utility -> user agent
action extension -> user agent
file provider extension -> user agent
user agent -> file provider extension: that already works through NSFileProviderServicing
I know app-to-app communication only works through launchd for security reasons, but these applications are all part of the same app group (except the root daemon obviously).
My question is what is the proper way of starting the user agent so XPC from other binaries just work ™️?
Any input is much appreciated!
Hi everyone,
I'm currently developing an app that installs eSIM profiles directly within the app and checks if the device supports eSIM. For this functionality, I understand that I need the eSIM entitlement for the Core Telephony API.
I submitted a request for the eSIM entitlement to Apple about three weeks ago, but I haven't received a response yet. Has anyone experienced a similar situation? What would be the best course of action to follow up on this?
Any guidance or suggestions would be greatly appreciated.
Thank you!
Requirement:- Crash my MacOs laptop such that my crashes get collected in the /Library/Logs/DiagnosticReports folders. But the crash shouldn't hamper my laptop's performace.
I read that we had an approach to cause a kernel panic, but I'm really concerned about the state that this would put my device in. Any advice would be helpful, thanks.
We are developing an app where we want iPhone to iPhone communication via bluetooth. We are using the core bluetooth API. One iPhone acts as the peripheral and the other as the central. When both apps are on screen they successfully find each other and can connect. However when the peripheral is in background the central can't find it. To be clear the central is still in foreground. I have consulted this page: https://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html
and other resources. From my understanding the service UUID should be moved to the manufacturer data. This makes it difficult for non-iOS devices to detect the service but the documentation says that my central should be able to find the peripheral. I have added the required keys to the pList and am explicitly searching for the mentioned service UUID. When using a third party BLE Tool I'm able to find and communicate with the peripheral even when it is in background mode. I know that some option-keys will be ignored but from my understanding they should still find each other at least once. This was tested with two iOS 18 iPhones. Here is the code im using:
import UIKit
import CoreBluetooth
class ViewController: UIViewController {
private var centralManager: CBCentralManager!
private var peripheralManager: CBPeripheralManager!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnPeripheral(_ sender: Any) {
peripheralManager = CBPeripheralManager(delegate: self, queue: nil, options: nil)
}
@IBAction func btnCentral(_ sender: Any) {
print("central go")
centralManager = CBCentralManager(delegate: self, queue: nil)
}
}
extension ViewController: CBCentralManagerDelegate {
func centralManagerDidUpdateState(_ central: CBCentralManager) {
print("central state: \(central.state)")
switch central.state {
case .poweredOn:
print("central powered on")
centralManager.scanForPeripherals(withServices: [CBUUID(string:"db9acb1e-1ac4-4f70-b58c-3b3dcea84703")], options: [CBCentralManagerScanOptionAllowDuplicatesKey: true])
default:
print("central not powered on")
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
print("Dicovered \(peripheral)")
}
}
extension ViewController: CBPeripheralManagerDelegate {
func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) {
print("peripheral state: \(peripheral.state)")
if peripheral.state == .poweredOn {
print("powered on")
let uuid = CBUUID(string: "db9acb1e-1ac4-4f70-b58c-3b3dcea84703")
let service = CBMutableService(type: uuid, primary: true)
peripheralManager.add(service)
peripheralManager.startAdvertising([CBAdvertisementDataServiceUUIDsKey: [uuid], CBAdvertisementDataLocalNameKey: "MyService"])
}
}
}
Prior to Sequoia, Mac Catalyst Apps worked fine when using group folders that started with group. They now get an alert that the Mac Catalyst app is trying to access data from other applications. This may also impact some SwiftUI developers.
According to this the documentation for the App Group Entitlements entitlement, on macOS we should begin use the Team Identifier instead of group.
Should Mac Catalyst follow the macOS or iOS rules for com.apple.security.application-groups? If they should need to follow the macOS rules now, that creates several issues for developers. We would now need separate build targets to pick up the different Entitlements files. More distressing is that we would need to do some kind of migration process to get our files to the new location. There wouldn't be a transparent way to do so where the user wasn't warned about the application accessing files that don't belong to it.
Any clarification on what Mac Catalyst developers should be doing to prepare for Sequoia would be greatly appreciated.
Hi,
I developed a utility app that allows monitoring system activity and usage. It is a sandboxed app distributed via the Mac App Store. Because in the sandbox I cannot fetch enough data about system activity (like processor temperature, fans, etc.), I developed a little Helper app (non-sandboxed), which currently is distributed via my website, and to enable extra features it provides, the user is asked to download and install it manually (it installs itself as a daemon).
I'm looking for ways to improve the user experience. Ideally, it would be a button inside the main app, which would download and install the helper app, without asking the user to do more than pressing a button.
As far as I understand, in the previous versions of macOS, it would be possible with privileged helpers and SMJobBless, but those are deprecated APIs now.
Another way I tried, is simply downloading the installer app from the website, but opening it programmatically from the main app is tricky since it cannot remove it from the quarantine, in other words, it fails with "operation not permitted".
Any advice is appreciated!
I have a solution where my application should scan the Bluetooth enabled Beacon devices in the foreground, background, locked mode for the iphone.
Currently we have built the project, which is working fine in foreground mode. We have tried exploring multiple options to enable the feature in background and locked mode.
As of now, we have come up with the solution which implements Picture in Picture mode in the application and once the application is minimized. The PIP window opens which solves our problem. But the problem stays with locked mode. The scanning is not working in locked mode.
So can we know how the bluetooth scanning will work in background and locked mode. Please also mention the alternative solutions to the problem statement if background and locked mode scanning is not possible.
I have attached the project source code for reference.
This project is being built for Google, so it is bit urgent.
Can I expect a quick response to this query?
I'm working on a macOS and iOS app using SwiftUI. And received bug from very few user that they are being logged out, even tho they didn't.
So i'm assuming issue is relevant to this forum post, and that the keychain data and user defaults aren't available very early on in an app's lifecycle (presumably from cold start).
There is fix available for iOS but didn't find anything relevant to isProtectedDataAvailable for macOS.
I'm accessing UserDefaults in my @main view's sub view. It seems that UserDefaults is accessed too early, before applicationDidFinishLaunching.
And therefore, not getting user data on launch sometimes.
This issue is very rare, i'm not able to reproduce this, but assuming this can be cause based on some form post, also because view's onAppear calls before applicationDidFinishLaunching.
Crashed: com.apple.main-thread
0 Foundation 0x2bd25c specialized static NSDecimal._integerDivide(dividend:divisor:maxResultLength:) + 1996
1 Foundation 0x2c1c0c specialized NSDecimal._divide(by:roundingMode:) + 2432
2 Foundation 0x372710 static NSDecimal./ infix(_:_:) + 64
Crashed: com.um.positions.fiber.queue
0 Foundation 0x2bdc94 <redacted> + 1996
1 Foundation 0x2c2644 <redacted> + 2432
2 Foundation 0x372804 $sSo9NSDecimala10FoundationE1doiyA2B_ABtFZ + 64
After iOS18, some new crashes appeared, but they never appeared before iOS18.
How to avoid such crashes?
I checked the API documentation and there is no relevant modification, https://developer.apple.com/documentation/foundation/1409398-nsdecimaldivide
However, I parsed iOS_22A5326g/../Foundation.framework/Foundation, and found that this EXC_BREAKPOINT is newly added
You can reproduce it with the following code:
let a: Decimal = .greatestFiniteMagnitude
let b: Decimal = .greatestFiniteMagnitude
let c = a / b // if < iOS18, c = 1. if = iOS18, will crashed ;<
print(c)
I found a lot of crashes on iOS 16,the detail infomation:
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000020f3d108c
Termination Reason: SIGNAL 5 Trace/BPT trap: 5
Terminating Process: exc handler [18104]
Triggered by Thread: 0
Thread 0 name:
Thread 0 Crashed:
0 libsystem_platform.dylib 0x000000020f3d108c _os_unfair_lock_recursive_abort + 36 (lock.c:508)
1 libsystem_platform.dylib 0x000000020f3cb898 _os_unfair_lock_lock_slow + 280 (lock.c:567)
2 libobjc.A.dylib 0x00000001ba6939b4 lookUpImpOrForward + 156 (lock_private.h:716)
3 libobjc.A.dylib 0x00000001ba68e0c4 _objc_msgSend_uncached + 68 (:-1)
4 myApp 0x00000001005e8d04 post_crash_callback + 64 (XBPLCrashManager.m:122)
5 myApp 0x0000000101453744 signal_handler_callback + 184 (PLCrashReporter.m:237)
6 myApp 0x000000010144fc6c internal_callback_iterator(int, __siginfo*, __darwin_ucontext*, void*) + 140 (PLCrashSignalHandler.mm:0)
7 myApp 0x000000010144fbc0 plcrash_signal_handler + 24 (PLCrashSignalHandler.mm:201)
8 libsystem_platform.dylib 0x000000020f3cca90 _sigtramp + 56 (sigtramp.c:116)
9 libsystem_kernel.dylib 0x00000001fed74bf0 abort_with_payload_wrapper_internal + 104 (terminate_with_reason.c:102)
10 libsystem_kernel.dylib 0x00000001fed74b88 abort_with_reason + 32 (terminate_with_reason.c:116)
11 libobjc.A.dylib 0x00000001ba6bfa5c _objc_fatalv(unsigned long long, unsigned long long, char const*, char*) + 116 (objc-errors.mm:199)
12 libobjc.A.dylib 0x00000001ba6bf9e8 _objc_fatal(char const*, ...) + 32 (objc-errors.mm:215)
13 libobjc.A.dylib 0x00000001ba6bf978 cache_t::bad_cache(objc_object*, objc_selector*) + 228 (objc-cache.mm:829)
14 libobjc.A.dylib 0x00000001ba6944f0 cache_t::insert(objc_selector*, void (*)(), objc_object*) + 296 (objc-cache.mm:901)
15 libobjc.A.dylib 0x00000001ba693ba8 lookUpImpOrForward + 656 (objc-runtime-new.mm:6739)
16 libobjc.A.dylib 0x00000001ba68e0c4 _objc_msgSend_uncached + 68 (:-1)
17 UIKitCore 0x00000001c36f9ad8 -[UIViewController initWithNibName:bundle:] + 216 (UIViewController.m:2671)
18 myApp 0x0000000100d78088 -[myUIBaseViewController init] + 44 (myUIBaseViewController.m:60)
19 myApp 0x000000010031f744 -[XBSCLaunchManager makeTabBarViewController] + 2600 (XBSCLaunchManager.m:432)
20 myApp 0x000000010032022c -[XBSCLaunchManager showTabbarViewController] + 292 (XBSCLaunchManager.m:569)
21 libdispatch.dylib 0x00000001c89ecfdc _dispatch_client_callout + 20 (object.m:560)
22 libdispatch.dylib 0x00000001c89f046c _dispatch_continuation_pop + 504 (inline_internal.h:2632)
23 libdispatch.dylib 0x00000001c8a03a58 _dispatch_source_invoke + 1588 (source.c:596)
24 libdispatch.dylib 0x00000001c89fb748 _dispatch_main_queue_drain + 756 (inline_internal.h:0)
25 libdispatch.dylib 0x00000001c89fb444 _dispatch_main_queue_callback_4CF + 44 (queue.c:7887)
26 CoreFoundation 0x00000001c146a6d8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16 (CFRunLoop.c:1780)
27 CoreFoundation 0x00000001c144c03c __CFRunLoopRun + 2036 (CFRunLoop.c:3147)
28 CoreFoundation 0x00000001c1450ec0 CFRunLoopRunSpecific + 612 (CFRunLoop.c:3418)
29 GraphicsServices 0x00000001fb4a7368 GSEventRunModal + 164 (GSEvent.c:2196)
30 UIKitCore 0x00000001c394686c -[UIApplication _run] + 888 (UIApplication.m:3754)
31 UIKitCore 0x00000001c39464d0 UIApplicationMain + 340 (UIApplication.m:5344)
32 myApp 0x0000000100330b5c main + 88 (main.m:14)
33 dyld 0x00000001dfc72960 start + 2528 (dyldMain.cpp:1170)
Request for help on advice prevention and fix for this. Thanks