Overview

Post

Replies

Boosts

Views

Activity

Notification Permission Issue in Device Activity Report Extension (iOS 26)
I'm facing a problem where notification permissions are working fine in the main app, but failing in the Device Activity Report Extension on iOS 26. This issue wasn’t present in earlier iOS versions. Despite having notification permissions granted in the main app, the extension fails to get authorization. iOS 26: " Before iOS 26:
1
0
77
3w
moving project to new account
Hello fellow developers...first time posting. I wrote a small app that I'm currently testing. However, I inadvertently built the Swift code using my "free" account and did not use my "paid" account. Aside from the restrictions of a free account, I want to migrate the project to the paid developer account. Is there an easy way to do this short of rebuilding from scratch??? Thanks in advance. s
1
0
46
3w
RFID read
Hi! Following this ticket: https://developer.apple.com/forums/thread/808764?page=1#868010022 Is there any way to use the hardware RFID reading capabilities of an iPhone to read ISO15693 RF tags silently, and without a UI pop-up? Perhaps using other native iOS libraries than the NFC library? If not, is there a way for a business to request this feature be allowed in internally used apps only?
2
0
100
3w
Screen Time can be bypassed by manually changing the date and time
My son uses an iPhone XS running iOS 18.7.2. He is able to bypass all Screen Time app limits by manually changing the date under Settings → General → Date & Time. When he sets the date/time forward or backward, the configured Screen Time restrictions no longer apply. Please make it possible on iOS 18.7.2 (and future versions) to prevent manual date and time changes when Screen Time is enabled, so that children cannot use this method to circumvent app limits.
1
0
42
3w
App Store doesn't display WatchOS version requirement under compatibility
Hi DF I'm working on a watchOS app with an iOS companion app and have been updating the minimum deployments for both. After making the updates, when I upload the apps to TestFlight or App Store, the compatibility field for the watchOS has been removed. Instead of saying: Compatibility: Requires iOS 15.6 or later... Requries watchOS 10.6 or later... It says: Requires macOS... Requires iOS 15.6 or later... It is not a macOS app, so I don't know why that is displayed. How do I remove macOS and get it to display watchOS min requirement?
0
0
83
4w
App review rejected by spam
Hi! i have a problem with my app being rejected by spam, i believe this rejection may be a misunderstanding due to our account history This application provides unique and critical functionalities exclusively for our company's registered business partners. I suspect the "Spam" flag was triggered because we previously attempted to submit this app using an individual developer account During that review, your team correctly informed us that this app required an "Organization" account, not an "Individual" one. I try to delete the app from the old account and i have an error too "This app cant be deleted" That initial submission was never approved and never published on the App Store. Following your instructions, we spent the last three months securing our verified Organization account. This new submission is from the correct, official Organization account as you required. I try to appeal and i dont have an answer, recently i update another app with two new functionalitys and still rejected by spam. How can i fix that? The reviewers only says something "We still found the issue" and no help. We are a medical health company reconigzed in Uruguay and we need to make this app available for our clients. I cant request a call too explain because no option appear when i request support in the web. Please, tell me what can i do?
2
0
174
3w
Testing TelephonyMessagingKit Outside of The EU
Is it possible to develop for TelephonyMessagingKit on iOS 26 outside of the EU? If so, how is this accomplished? I have added the 'Default Carrier Messaging App' entitlement to my project, but I do not see an option to set my app as a default option in settings on my device. I am not located inside of the EU, but would like to test this functionality.
0
0
102
3w
403 request for get playlists
I am developing a SWIFITUI app that transfers playlists between Apple Music and Spotify but I am not directly create my requests to those companies APIs. I have my own backend. But when fetching users playlists due to "https://api.music.apple.com/v1/me/library/playlists" the response is 403 all the time. I tried many ways including creating new DevToken and UserToken when user login and sending those tokens in headers with Authorization and Music-User-Token. What else can be the problem? Note: My team ids in Xcode and apple developer portal seems different. Maybe this is the problem.
0
0
216
3w
iOS Metal system delayed one Vsync period to really display the frame on the screen
View Layout Add the following views in a view controller: Label View A, with a subview of the same size: MTKView A View B, with a subview of the same size: MTKView B Refresh Rates of Each View The label view refreshes at 60fps (driven by CADisplayLink). MTKView A and B refresh at 15fps. MTKView Implementation Details The corresponding CAMetalLayer's maximumDrawableCount is set to 2, changed to double buffering. The scheduling mechanism is modified; drawing is not driven by the internal loop but is done manually. The draw call is triggered immediately upon receiving a frame. self.metalView.enableSetNeedsDisplay = NO; self.metalView.paused = YES; A new high-priority queue is created for drawing, instead of handling it on the main queue. MTKView Latency Tracking The GPU completion time T1 is observed through the addCompletedHandler callback of the CommandBuffer. The presentation time T2 of the frame is observed through the addPresentedHandler callback of the currentDrawable in MTKView. Testing shows that T2 - T1 > 16.6ms (the Vsync period at 60Hz). This means that after the GPU rendering in MTLView is finished, the frame is not actually displayed at the next Vsync instruction but only at the Vsync instruction after that. I believe there is an extra 16.6ms of latency here, which I want to eliminate by adjusting the rendering mechanism. Observation from Instruments From Instruments, the Surface presentation aligns with the above test results. After the Metal encoder finishes, the Surface in Display switches only after the next-next Vsync instruction. See the image in the link for details. Questions According to a beginner's understanding, after MTKView's GPU rendering is finished, the next Vsync instruction should officially display (make it visible). However, this is not what is observed. Does the subview MTKView need to wait for another Vsync cycle to be drawn to the actual display buffer? The label updates its text at 60fps, so the entire interface should be displayed at 60fps. Is the content of MTKView not synchronized when the display happens? Explanation of the Reasoning Behind Some MTKView Code Details Changing from the default triple buffering to double buffering helps reduce the latency introduced by rendering. Not using MTKView's own scheduling mechanism but using manual triggering of the draw method is because MTKView's own scheduling mechanism is driven by CADisplayLink. Therefore, if a frame falls within a Vsync window, it needs to wait for the next Vsync window to trigger the draw operation, which introduces waiting latency.
3
0
519
3w
Installer JS warning when try to read the version from /var/db/receipts folder
Hi, I am using Installer JS in Distrtibution file which is created using productbuild command. I am trying to read the installed version of app from the plist file present in the /var/db/receipts folder. It gives the following warning. If I enable the flag , notarization will fail. FJS: Package Authoring Error: access to path "/var/db/receipts/com.xxx.xxx.plist" requires Following is the function I have used to read the installed version. system.files.plistAtPath() I have also tried the following function to read the version from .app file. system.files.bundleAtPath Both the functions give the warning. Is there are a way to avoid this warning or a better way to read the installed version? Regards Prema Kumar
1
0
93
4w
How to Reserve an App Name in App Store Connect Before app's Release?
Hello Apple Dev Support, Our company is preparing to submit an iOS and iPadOS application. When development commenced nine months ago, the application name was available. However, during the submission process for internal and external testing via TestFlight, we discovered that the name is already in use. We are seeking a solution to secure our application name, ensuring its exclusive use for our purposes. We anticipate approximately four to five months of development before the application's release. If we submit our application for Apple review and receive approval but refrain from releasing it, would this action reserve or register the name for our exclusive use, preventing others from utilizing it? Thank you
1
0
134
3w
UITabBar ignores font in iOS 26.2
Our app has a UITabBar and the compactInlineLayoutAppearance has a custom font set. This worked fine on iOS 26.0 and 26.1. [self.bottomTabBar.standardAppearance.compactInlineLayoutAppearance.normal setTitleTextAttributes: @{ NSFontAttributeName:[UIFont fontWithName:@"AvenirNext-DemiBold" size:18.0] }]; But on iOS 26.2, the system ignores this custom font. How can I apply a custom font to a UITabBar on iOS 26.2?
Topic: UI Frameworks SubTopic: UIKit Tags:
3
0
182
3w
App Store Connect Showing Old Metadata After Updates (Account Termination Appeal APL255848)
Hello everyone, I’m an iOS developer from Türkiye, and I’m currently facing a serious issue regarding my Apple Developer account termination (Appeal Ticket: APL255848). Problem: I have removed all references, icons, descriptions, and metadata related to my previous app name (“Nano Banana”) both inside the app and on the App Store listing. I submitted updated assets, screenshots, and a new metadata package. However, the App Review Board seems to still be seeing old cached metadata, old icons, or previous descriptions that no longer exist in my build. Because of this, every response from App Store Connect repeats the same text, even though I have already made and proven all required changes. Current Situation: My account is terminated, and my appeal has been pending for over 3 weeks with identical non-actionable responses. I am not receiving my revenue for the past 2 months. I want to comply fully with the Apple Developer Program Agreement and provide any documents required (invoices, trademarks, API invoices, technical details, etc.). I believe there may be a metadata caching issue or the review team seeing an older version of my app. My question to the community: Has anyone experienced a case where App Store Connect or the App Review Board continues to see outdated metadata even after everything is updated? Is there a recommended way to ensure Apple sees the latest changes (e.g., waiting for metadata propagation, submitting a blank metadata update, reuploading the build, or another technical step)? Any guidance or similar experiences would be extremely helpful. Thank you in advance. Kind regards, Yunus Emre Özdiyar
1
0
161
3w
XPC Connection with Network Extension fails after upgrade
Hi Team, I have a Network Extension application and UI frontend for it. The UI frontend talks to the Network Extension using XPC, as provided by NEMachServiceName. On M2 machine, The application and XPC connection works fine on clean installation. But, when the application is upgraded, the XPC connection keeps failing. Upgrade steps: PreInstall script kills the running processes, both UI and Network Extension Let installation continue PostInstall script to launch the application after installation complete. Following code is successful to the point of resume from UI application NSXPCInterface *exportedInterface = [NSXPCInterface interfaceWithProtocol:@protocol(IPCUIObject)]; newConnection.exportedInterface = exportedInterface; newConnection.exportedObject = delegate; NSXPCInterface *remoteObjectInterface = [NSXPCInterface interfaceWithProtocol:@protocol(IPCExtObject)]; newConnection.remoteObjectInterface = remoteObjectInterface; self.currentConnection = newConnection; [newConnection resume]; But it fails to get the object id<IPCExtObject> providerProxy = [self.currentConnection remoteObjectProxyWithErrorHandler:^(NSError *registerError) { }]; Please note, this only fails for M2. For M1, this exact code is running fine. Additionally, if I uninstall the application by dropping it in Trash and then installing the newer version, then too, the application works fine.
4
0
897
3w
Regarding "Overview of app transfer"
My iPhone VoIP app, which I'm developing, uses Apple Push Notification service (APNs). I have a question regarding the following statement found in "[Overview of app transfer > Apps using push notifications]" Overview of app transfer You must manually reestablish push notification services if transferring an app that uses the Apple Push Notifications service (APNs). The recipient must create a new client SSL certificate using their developer account, as associated client SSL certificates, TLS certificates, and authentication tokens aren’t transferred. Question Let's say the recipient of the app transfer creates a "new SSL certificates, TLS certificates, and authentication tokens." Afterward, we need to verify that the Apple Push Notification service (APNs) works correctly when combining the transferred app with this "new SSL certificates, TLS certificates, and authentication tokens." However, until the recipient finishes verifying that it works correctly, the transferor want to keep the app available for download as before and be able to use the Apple Push Notification service. Is this possible? More specifically, can the recipient test the app to be transferred on TestFlight "before the transfer is completed"? I want to combine it with the "new SSL certificates, TLS certificates, and authentication tokens." and test it on TestFlight. Reading "[Initiate an app transfer]," it mentions the existence of a "Pending App Transfer" status. During this "Pending App Transfer" status, can the recipient test the app on TestFlight? Initiate an app transfer After you initiate the transfer, the app stays in its previous status, with the Pending App Transfer status added, until the recipient accepts it or the transfer expires after 60 days. Also, if there are any documents describing these procedures, I would appreciate it if you could share them. Thank you very much.
4
0
251
4w
Flutter iOS - EXC_BAD_ACCESS crash on cold start after app was killed, affects ~1-2% of users
Question: How to prevent Flutter app crash on iOS 18 during cold start when iOS traverses view hierarchy before Flutter engine is fully initialized? Help needed: Looking for a way to either delay iOS view hierarchy traversal or ensure Flutter is fully initialized before iOS lifecycle callbacks fire. Problem Summary Our Flutter app crashes on cold start for approximately 1-2% of iOS users. The crash occurs specifically on iOS and only under these exact conditions: When crash happens: User opens app and uses it normally ✅ User minimizes app (goes to background) ✅ User returns to app from background ✅ (works fine) User kills app from app switcher (swipe up to close) User taps app icon to launch again → CRASH ❌ Key observations: Crash is intermittent - app may open on 2nd, 3rd, or 5th attempt 100% reproducible on affected devices by repeating kill→launch cycle ~98% of users have no issues Environment Flutter: 3.38.3 Crash Logs (from Sentry) Crash Type 1: Stack Overflow (most common) OS Version: iOS 18.7.2 (22H124) Exception Type: EXC_BAD_ACCESS (SIGBUS) Exception Codes: BUS_NOOP at 0x000000016ad5be90 Application Specific Information: compare:options:range:locale: > Stack overflow in (null) Thread 0 Crashed: 0 CoreFoundation CFStringGetLength 1 CoreFoundation CFStringCompareWithOptionsAndLocale 2 CoreFoundation 3 libsystem_c bsearch 4 CoreFoundation 5 UIKitCore ... 15-99: UIKitCore 0x30e177148 [inlined] // 85+ recursive calls Crash Type 2: Use-After-Free Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: SEGV_NOOP at 0x0500007f14000000 KERN_INVALID_ADDRESS at 0x500007f14000000 Thread 0 Crashed: 0 libobjc.A.dylib objc_retainAutoreleaseReturnValue 1 UIKitCore ... 6 libobjc.A.dylib objcrootDealloc 7 QuartzCore // CALayer operations What We Tried (nothing solved cold start crash) Attempt Result Increased stack size to 64MB (-Wl,-stack_size,0x4000000) ❌ No effect Disabled iOS State Restoration ❌ No effect Added isViewLoaded checks in AppDelegate ❌ No effect Added try-catch around GetStorage/SecureStorage init ❌ No effect Added isAppActive flag to track app state ❌ No effect Snapshot overlay in applicationWillResignActive ✅ Fixed background→foreground crash, ❌ but NOT cold start Current AppDelegate.swift import UIKit import Flutter @main @objc class AppDelegate: FlutterAppDelegate { private var snapshotView: UIView? private var isAppActive = false override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GeneratedPluginRegistrant.register(with: self) window?.overrideUserInterfaceStyle = .light isAppActive = true return super.application(application, didFinishLaunchingWithOptions: launchOptions) } override func application(_ application: UIApplication, shouldSaveSecureApplicationState coder: NSCoder) -> Bool { return false } override func application(_ application: UIApplication, shouldRestoreSecureApplicationState coder: NSCoder) -> Bool { return false } override func applicationWillResignActive(_ application: UIApplication) { guard isAppActive, let window = self.window, let rootVC = window.rootViewController, rootVC.isViewLoaded, snapshotView == nil else { return } let snapshot = UIView(frame: window.bounds) snapshot.backgroundColor = .white snapshot.tag = 999 window.addSubview(snapshot) snapshotView = snapshot } override func applicationDidBecomeActive(_ application: UIApplication) { guard snapshotView != nil else { isAppActive = true return } snapshotView?.removeFromSuperview() snapshotView = nil } }
Topic: UI Frameworks SubTopic: UIKit
1
0
113
3w
Questions about using the "UserNotification framework"
In macOS, how can I use UnmutableNotificationContent notifications to prevent the main window from activating when clicking the notification? code: import Cocoa import UserNotifications // Mandatory import for notification functionality class ViewController: NSViewController { override func viewDidLoad() { super.viewDidLoad() // Automatically request permissions and send a test notification when the view loads sendLocalNotification() } /// Core method to send a local notification func sendLocalNotification() { let notificationCenter = UNUserNotificationCenter.current() // 1. Request notification permissions (Mandatory step; user approval required) notificationCenter.requestAuthorization(options: [.alert, .sound, .badge]) { [weak self] isGranted, error in guard let self = self else { return } // Handle permission request errors if let error = error { print("Permission request failed: \(error.localizedDescription)") return } // Exit if user denies permission if !isGranted { print("User denied notification permissions; cannot send notifications") return } // 2. Construct notification content using UNMutableNotificationContent let notificationContent = UNMutableNotificationContent() notificationContent.title = "Swift Notification Test" // Notification title notificationContent.subtitle = "macOS Local Notification" // Optional subtitle notificationContent.body = "This is a notification created with UNMutableNotificationContent" // Main content notificationContent.sound = .default // Optional notification sound (set to nil for no sound) notificationContent.badge = 1 // Optional app icon badge (set to nil for no badge) // 3. Set trigger condition (here: "trigger after 3 seconds"; can also use time/calendar triggers) let notificationTrigger = UNTimeIntervalNotificationTrigger( timeInterval: 3, // Delay in seconds repeats: false // Whether to repeat (false = one-time only) ) // 4. Create a notification request (requires a unique ID for later cancellation if needed) let notificationRequest = UNNotificationRequest( identifier: "SwiftMacNotification_001", // Unique identifier content: notificationContent, trigger: notificationTrigger ) // 5. Add the request to the notification center and wait for triggering notificationCenter.add(notificationRequest) { error in if let error = error { print("Notification delivery failed: \(error.localizedDescription)") } else { print("Notification added to queue; will trigger in 3 seconds") } } } } }
0
0
75
3w
Buttons on tvOS with text are blurred
When adding buttons to a sheet, on tvOS the text is blurred in the buttons, making it illegible. Feedback: FB21228496 (used GPT to extract an example from my project for a test project to attach here) // ButtonBlurTestView.swift // Icarus // // Test view to reproduce blurred button issue on tvOS // import SwiftUI struct ButtonBlurTestView: View { @State private var showSheet = false @State private var selectedTags: [Int] = [] @State private var newTagName: String = "" // Hardcoded test data private let testTags = [ TestTag(id: 1, label: "Action"), TestTag(id: 2, label: "Comedy"), TestTag(id: 3, label: "Drama"), TestTag(id: 4, label: "Sci-Fi"), TestTag(id: 5, label: "Thriller") ] var body: some View { NavigationStack { VStack { Text("Button Blur Test") .font(.title) .padding() Button("Show Test Sheet") { showSheet = true } .buttonStyle(.borderedProminent) .padding() Text("Tap the button above to open a sheet with buttons inside a Form.") .font(.caption) .foregroundColor(.secondary) .multilineTextAlignment(.center) .padding() } .navigationTitle("Blur Test") .sheet(isPresented: $showSheet) { TestSheetView( selectedTags: $selectedTags, newTagName: $newTagName, testTags: testTags ) } } } } struct TestSheetView: View { @Environment(\.dismiss) private var dismiss @Binding var selectedTags: [Int] @Binding var newTagName: String let testTags: [TestTag] var body: some View { NavigationStack { VStack { // Header VStack { Text("Testing") .font(.title2) .bold() Text("Test TV Show") .font(.subheadline) .foregroundColor(.secondary) } .padding() // Form with buttons Form { Section(header: Text("Summary")) { Text("This is a test") .font(.subheadline) .foregroundColor(.secondary) } Section(header: Text("Tags")) { tagsSelectionView } } } .navigationTitle("Add") #if !os(tvOS) .navigationBarTitleDisplayMode(.inline) #endif .toolbar { ToolbarItem(placement: .cancellationAction) { Button("Cancel") { dismiss() } } ToolbarItem(placement: .confirmationAction) { Button("Add") { dismiss() } } } } } private var tagsSelectionView: some View { VStack(alignment: .leading) { // Tag pills in a grid let columns = [GridItem(.adaptive(minimum: 80), spacing: 8)] LazyVGrid(columns: columns, alignment: .leading, spacing: 8) { ForEach(testTags, id: \.id) { tag in TagPill( tag: tag, selected: selectedTags.contains(tag.id) ) { if selectedTags.contains(tag.id) { selectedTags.removeAll { $0 == tag.id } } else { selectedTags.append(tag.id) } } } } Divider() // Add new tag button HStack { TextField("New tag name", text: $newTagName) #if os(tvOS) .textFieldStyle(PlainTextFieldStyle()) #else .textFieldStyle(RoundedBorderTextFieldStyle()) #endif Button("Add") { // Test action newTagName = "" } .disabled(newTagName.trimmingCharacters(in: .whitespaces).isEmpty) } } } } // Tag Pill - matches the structure from original project private struct TagPill: View { let tag: TestTag let selected: Bool let action: () -> Void var body: some View { Button(action: action) { Text(tag.label) .font(.callout) .lineLimit(1) .padding(.horizontal, 12) .padding(.vertical, 8) .background( Capsule() .fill(selected ? Color.accentColor : Color.secondary.opacity(0.15)) ) .overlay( Capsule() .stroke(selected ? Color.accentColor : Color.secondary.opacity(0.35), lineWidth: 1) ) .foregroundStyle(selected ? Color.white : Color.primary) .contentShape(Capsule()) } .buttonStyle(.plain) #if os(tvOS) .focusable(true) #endif } } struct TestTag { let id: Int let label: String } #Preview { ButtonBlurTestView() }
Topic: UI Frameworks SubTopic: SwiftUI Tags:
1
0
138
4w