Explore the core architecture of the operating system, including the kernel, memory management, and process scheduling.

Post

Replies

Boosts

Views

Activity

iOS 18 Different Behavior in CallKit with Dynamic Island Phones
We’ve encountered significant differences in our VoIP app’s workflow between iOS 17 and iOS 18, particularly on devices with Dynamic Island. Our app functioned as expected in iOS 17 and even iOS 18 on devices without Dynamic Island, but with the public release of iOS 18 on Dynamic Island-supported iPhones, we’re receiving a lot of feedback from users reporting confusing behavior during both incoming and outgoing calls. Here’s a breakdown of the issue: In iOS 17 and iOS 18 (on non-Dynamic Island models), when our app initiates a second call, the app remains in the foreground, allowing the user to see both calls within our UI. Users can manage their calls, swap between them, and even merge them, all without leaving the app. If the user switches to the CallKit controller via the app switcher, it reflects the state of the calls in our app, which has worked well for our users. However, on iOS 18 devices with Dynamic Island, adding a second call now backgrounds our app and brings the CallKit controller UI to the foreground. This causes confusion, as users lose context of managing multiple calls within our app. Though users can switch back to our app manually, this extra step disrupts their workflow, especially when handling multiple active calls. This change doesn't occur on iOS 18 devices without Dynamic Island. Additionally, during an active call, if an incoming call arrives, the Dynamic Island notification takes over, and the app UI is again backgrounded in favor of the CallKit controller screen. Even when declining the incoming call from the notification, the user remains in the CallKit controller UI, requiring another step to return to our app using the app switcher or the "app" button in CallKit. This inconsistent behavior makes call management unnecessarily complex for our users, who need a streamlined experience, especially since our app is used in healthcare communications that is often critical in nature. Is there any documentation on changes to CallKit behavior specific to Dynamic Island devices in iOS 18? We’d appreciate any guidance on designing a VoIP experience that doesn’t involve these disruptive view switches, particularly for Dynamic Island-supported iPhones. Thank you for your help!
2
0
413
Sep ’24
FinderSync extensions gone in macOS settings
On macOS Sequoia, the settings to enable FIFinderSync seem to have gone. I have already figured out that Extensions are no longer in the Privacy & Security section, but they are now at General › Login Items & Extensions. Here there is a Finder section, but that is just for the Finder-Extensions, not the Finder-Sync-Extensions. Those previously did not have their own section and were hidden away in the Added Extensions section that apparently no longer exists. I expect that it has been forgotten when migrating. Where are the settings for this – have they been forgotten?
36
21
2.6k
Jun ’24
Install eSIM from an Universal Link
I am working on an app on which I want to develop a feature to install eSIMs. I am trying to follow the approach of installing the eSIM with the Universal Link solution by appending the activation code to the link https://esimsetup.apple.com/eSIM_QRCode_Provisioning?carddata=. I was able to successfully call the link and install the eSIM. But after installation, the user stays on the settings app. Is it possible to bring my app back to foreground after installation? Furthermore, is there a way I can listen to the installation result from my app?
1
0
111
2w
macOS API for hardware model name?
If I go to "System Settings" -> "General" -> "About", it says "MacBook Air" and below that "M2, 2022" How can I get these strings programatically? The following C code gets me #include <stdio.h> #include <sys/sysctl.h> int main() { static const unsigned namelen = 2; int name[namelen] = {CTL_HW, HW_PRODUCT}; char buffer[256]; size_t bufferSize = sizeof(buffer); if (0 != sysctl(name, namelen, buffer, &bufferSize, NULL, 0)) { perror("sysctl"); return 1; } printf("%s\n", buffer); } the string "Mac14,2", which is the hardware model identifier. But I want to get the user-friendly model name, e.g. "MacBook Air (13-inch, M2, 2022)". How can I do this?
12
1
248
2w
FIFinderSyncController for ALL folders/files?
Hi all: I am experimenting with Finder extensions. I’d like to be able to add a context menu to all folder locations. I believe the code below should work, but it doesn’t. If I hard code a path, it does work. Any tips on what I am missing? Thanks! // Doesn’t work FIFinderSyncController.default().directoryURLs = nil // Works for user folder var myFolderURL = URL(fileURLWithPath: "/users/exampleuser") FIFinderSyncController.default().directoryURLs = [self.myFolderURL]
5
0
224
Oct ’24
MacOS 15 lost the volume label of the USB storage media
Hi. I am having trouble with the issue where the media name and storage information name, which matched in MacOS 14 and earlier, are now inconsistent with the volume label and "NO NAME" in MacOS 15. The problem is that while changing the name on macos 15 will temporarily unify the names, if you overwrite them on Windows they revert to "NO NAME". At first I thought it was reflecting BS_VolLab in the boot sector, but that doesn't seem to be the case. Do you have any ideas for writing a program for Windows to solve this problem?
1
0
91
2w
How to mock CBPeripheral data when develop with Core Bluetooth
I'm developing an app which supports for connect with an BLE device. There are some views for showing data from bluetooth. The code below for an example: @EnvironmentObject var bleManager: BLEManager // a class implemented CBCentralManagerDelegate var body: some View { // bleConnected is a CBPeripheral if let bleConnected = bleManager.bleConnected { if let services = bleConnected.services { ForEach(services, id:\.self) { service in // UI for print uuid, descriptions ... showServiceDescriptionView(services) if let characteristics = service.characteristics { ForEach(characteristics, id:\.self) { characteristic in // UI for print uuid, data for each characteristic showCharacteristicsDetailView(characteristic) } } } } } } } But it seems that Xcode Preview do not support connect to a real bluetooth device. So the preview window in Xcode will always be a empty view. I only can see the data on the real device. But it's important for me to design UI on the preview. So are there any method to mock a fake CBPeripheral in the Previewer? Or are there any other way to achieve this?
1
0
99
2w
Journaling Suggestions is not available on iOS Simulator
Hey, when I try to run my project on an iOS Simulator, I get the following message: JournalingSuggestions is not available when building for iOS Simulator. and Linker command failed with exit code 1 (use -v to see invocation) Steps to reproduce this behavior: Create a new Xcode project Add the Journaling Suggestions Capability Add the Journaling Suggestions Framework Under "Target > Build Phases > Link Binary with Libraries", select “optional“ for JournalingSuggestions.framework Under "Target > Build Settings > Other Linker Flags > Debug" select „Plus“ and add „iOS or iOS Simulator“ and paste this -Xlinker -weak_framework -Xlinker JournalingSuggestions into the editable field. Do the same for "Target > Build Settings > Other Linker Flags > Release" This tread is about the same problem, but is already checked as answered. That's why I'm creating this new tread. The last two bullet points are results from advice from the other thread. MacBook Air, M1, 2020, macOS: 14.6.1, Xcode: 16.0 Thanks for your help!
3
0
187
3w
Subsequent expansion of same archive fails due to name collision
Extracting an archive into the same directory on my custom filesystem more than once fails with the following message: Unable to finish expanding 'misc.tar.xz' into 'extractme'. Could not move 'misc' into destination directory. I.e. initial extraction succeeds with archive contents extracted into extractme/misc. Subsequent extraction fails to rename extractme.sb-db71cd27-lFjN1f/misc to extractme/misc 2. This behaviour is observed on macOS Monterey and Ventura. It does work as expected on macOS Sonoma though. Dtrace(1)-ing the archive being extracted over smbfs results in the following sequence of calls being made: 2 -> smbfs_vnop_lookup AUHelperService-2163 -> extractme/misc 2 nameiop:0 2 <- smbfs_vnop_lookup AUHelperService-2163 -> extractme/misc 2 -> 2 ;ENOENT 2 -> smbfs_vnop_lookup AUHelperService-2163 -> extractme.sb-db71cd27-lFjN1f/misc nameiop:0x2 ;DELETE 2 <- smbfs_vnop_lookup AUHelperService-2163 -> extractme.sb-db71cd27-lFjN1f/misc -> 0 2 -> smbfs_vnop_lookup AUHelperService-2163 -> extractme/misc 2 nameiop:0x3 ;RENAME 2 <- smbfs_vnop_lookup AUHelperService-2163 -> extractme/misc 2 -> EJUSTRETURN 1 -> smbfs_vnop_rename AUHelperService-2163 -> extractme.sb-db71cd27-lFjN1f/misc -> extractme/nil 2 <- smbfs_vnop_rename AUHelperService-2163 -> extractme.sb-db71cd27-lFjN1f/misc -> extractme/nil -> 0 2 -> smbfs_vnop_lookup AUHelperService-2163 -> TheRooT/extractme/misc 2 nameiop:0 3 <- smbfs_vnop_lookup AUHelperService-2163 -> TheRooT/extractme/misc 2 -> 0 ;Successful lookup What I don't understand is what causes vnop_lookup to be called for misc to be removed from the temporary directory and renamed into 'misc 2' and placed in the destination directory, 'extractme' via vnop_rename? I had a look at smbfs_vnop_lookup and rename and didn't see anything that would cause 'misc 2' to come into being. Based on the output of the dtrace(1) script running on my custom filesystem, there are no vnop_lookup and vnop_rename calls being made to remove the 'misc' directory from the temporary directory and to rename it to 'misc 2' and place it in the destination directory at extractme. Archive extraction proceeds no further after extracting the archive contents into the temporary directory. What am I missing?
1
0
175
2w
IOS18 function centraliManager: didDiscoverPeripheral: advertising Data: RSSI The advertisement data does not have kCBAdDataLocalName.
iOS 17 advertisementData: { kCBAdvDataIsConnectable = 1; kCBAdvDataLocalName = CZL2; kCBAdvDataRxPrimaryPHY = 1; kCBAdvDataRxSecondaryPHY = 0; kCBAdvDataServiceUUIDs = ( FFE0 ); kCBAdvDataTimestamp = "750419647.067132"; } iOS 18 advertisementData: { kCBAdvDataIsConnectable = 0; kCBAdvDataRxPrimaryPHY = 0; kCBAdvDataRxSecondaryPHY = 0; kCBAdvDataServiceUUIDs = ( FFE0 ); kCBAdvDataTimestamp = "750420105.457082"; } What should I do if the key value pair of kCBAdvDataLocalName disappears?
1
0
222
Oct ’24
Bluetooth feature "extendedScanAndConnect" on iOS not supported at app start
I have an application built with .NET MAUI that uses the CoreBluetooth API to scan for our devices. As we need extanded advertisings we want to check if the device supports it. Our problem is that the query by using the "supports" method of CBCentralManger with argument "extendedScanAndConnect" gives us not always the same result. When called at the app start we get false (=> not supported) When called when the state of CBCentralManager changes to "poweredOn" we get false (=> not supported) When called later when a button to scan is pressed we get true (=> supported) How can we get the information if extended scan is supported at startup of our app? Hardware: iPhone 14 OS: iOS 18.0.1
1
0
161
Oct ’24
Support for custom Matter endpoints, clusters and attributes
I am working on an app for a home automation device. If I were using HomeKit exclusively I could add custom services or custom characteristics on standard services and these things would all be reported to my app via HomeKit. There is sample code from Apple that demonstrates how to do this. When a Matter device is commissioned using HomeKit you might expect custom clusters and/or custom attributes in a standard cluster would be translated to appropriate HomeKit services and characteristics, but this doesn't appear to be the case. Is there a way to have HomeKit do this? If not it seems I would need to use Matter directly rather than via HomeKit to access custom features. But if I commission the device using Matter in my app then I understand a new fabric is created and the device would not show in the Home app. Maybe the user needs to commission the device twice, once with my custom app and once with the Home app? That seems like a poor user experience to me. Perhaps that is the price paid for using a cross-platform standard? Is there a better way to get the same level of customization using Matter that I am able to get using HomeKit?
10
0
952
Jun ’24
showallkexts fails with AttributeError 'MemMachO' has no attribute 'allow_unknown_load_commands'
I am running on Sequoia 15.1 24B83 with the appropriate KDK on both my host and target systems. I am trying to examine the target when it has crashed either due to triggering an NMI or causing a crash in my company's kext. I am not getting very far! I can attach from the host to the target. But I can't run any useful commands, starting with showallkexts. It shows up in the list of 'Current user-defined commands' but fails with the above attribute error when I try to run it. I get that same error trying to use other user-defined commands. I followed the host setup instructions in the KDK readme, but this traceback leads me to think I have overlooked something. If this is something folks have seen before, I would appreciate any guidance!
2
0
101
3w
iPad attempting to import Journaling Suggestions
I am using #canImport(JournalingSuggestions), but something is going wrong and my app is attempting to import the framework on iPad, and crashing on launch. How can I ensure that it's properly filtered out from everything except iPhone? import SwiftUI #if canImport(JournalingSuggestions) import JournalingSuggestions #endif struct JournalingSuggestionsView: View { var body: some View { #if canImport(JournalingSuggestions) JournalingSuggestionsPicker { Text("Open Journaling Suggestions") } onCompletion: { suggestion in print(suggestion) } #else Text("Journaling suggestions not available on this platform.") #endif } } Error: dyld[8689]: Library not loaded: /System/Library/Frameworks/JournalingSuggestions.framework/JournalingSuggestions Referenced from: <A656E6BC-4883-3245-BE71-3F84C2F41119> /private/var/containers/Bundle/Application/C6C11F57-AFAA-442A-B726-7AADDDB50D79/Catalog.app/Catalog Reason: tried: '/System/Library/Frameworks/JournalingSuggestions.framework/JournalingSuggestions' (no such file), '/private/preboot/Cryptexes/OS/System/Library/Frameworks/JournalingSuggestions.framework/JournalingSuggestions' (no such file), '/System/Library/Frameworks/JournalingSuggestions.framework/JournalingSuggestions' (no such file, not in dyld cache) System info: Xcode 15.2 iPadOS 17.3.1
15
1
1.7k
Feb ’24
IOS Crash When Launch the App
Problem: One of my QA Device crash while launch the iOS 15.5. Background: Previously, I update my os to macOS Sequoia & update my Xcode to 16 Release Candidate. Previously when the app was build in Xcode 15.4, it run/launch perfectly, but it seems the app is crash below iOS 15.5 ---- HERE THE CRASH LOG ------ Incident Identifier: 6E80706A-C8FA-4E6F-8F14-5746E6CA5129 Hardware Model: iPhone13,3 Process: Runner [79635] Path: /private/var/containers/Bundle/Application/ED368AA9-3A69-45CE-89CA-438440BB8781/Runner.app/Runner Identifier: - Version: 1.0.7 (3273) AppStoreTools: 16B39 AppVariant: 1:iPhone13,3:15 Beta: YES Code Type: ARM-64 (Native) Role: Foreground Parent Process: launchd [1] Coalition: - [872] Date/Time: 2024-10-29 08:56:13.5458 +0700 Launch Time: 2024-10-29 08:56:13.4479 +0700 OS Version: iPhone OS 15.5 (19F77) Release Type: User Baseband Version: 2.54.02 Report Version: 104 Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Termination Reason: DYLD 4 Symbol missing Symbol not found: _objc_claimAutoreleasedReturnValue Referenced from: /Volumes/VOLUME/*/Runner.app/Frameworks/KSCrashCore.framework/KSCrashCore Expected in: /usr/lib/libobjc.A.dylib (terminated at launch; ignore backtrace) Triggered by Thread: 0 Thread 0 Crashed: 0 dyld 0x00000001025007a0 __abort_with_payload + 8 (:-1) 1 dyld 0x0000000102506388 abort_with_payload_wrapper_internal + 104 (terminate_with_reason.c:102) 2 dyld 0x00000001025063bc abort_with_payload + 16 (terminate_with_reason.c:124) 3 dyld 0x00000001024d6828 dyld4::halt(char const*) + 328 (DyldProcessConfig.cpp:2067) 4 dyld 0x00000001024d3960 dyld4::prepare(dyld4::APIs&, dyld3::MachOAnalyzer const*) + 3560 (dyldMain.cpp:0) 5 dyld 0x00000001024d1cc4 start + 488 (dyldMain.cpp:864) Thread 0 crashed with ARM Thread State (64-bit): x0: 0x0000000000000006 x1: 0x0000000000000004 x2: 0x000000016eee1690 x3: 0x00000000000000d8 x4: 0x000000016eee1290 x5: 0x0000000000000000 x6: 0x0000000000000000 x7: 0x000000016eee0cd0 x8: 0x0000000000000020 x9: 0x0000000000000009 x10: 0x0000000000000001 x11: 0x000000000000000a x12: 0x0000000000000000 x13: 0x0000000000000037 x14: 0x00000002301c9625 x15: 0x0000000000000002 x16: 0x0000000000000209 x17: 0x00000001024fae54 x18: 0x0000000000000000 x19: 0x0000000000000000 x20: 0x000000016eee1290 x21: 0x00000000000000d8 x22: 0x000000016eee1690 x23: 0x0000000000000004 x24: 0x0000000000000006 x25: 0x000000016eee3728 x26: 0x0000000000000001 x27: 0x000000016eee3590 x28: 0x0000000000000000 fp: 0x000000016eee1260 lr: 0x0000000102506388 sp: 0x000000016eee1220 pc: 0x00000001025007a0 cpsr: 0x1000 esr: 0x56000080 Address size fault Binary Images: 0x1024b8000 - 0x10250ffff dyld arm64e <7c9c7851823738a7b1eb9cd2deb4b746> /usr/lib/dyld EOF
1
0
165
3w
Unable to open settings app from custom app
I am able to open software update section of settings app from my custom app. But when settings app is already opened with other section other than software update. Settings app opens with previous section & not opens with software update section. Issue is in iOS 16.4.1 Below is my code: if let url = URL(string: "App-prefs:root=Settings&path=General/SOFTWARE_UPDATE_LINK") { UIApplication.shared.open(url) } I also have did some modification in info section of project & below is screen shot attached.
2
1
302
May ’23