Overview

Post

Replies

Boosts

Views

Activity

Same Color in View and colorEffect shader argument produce different results
Opened feedback item FB21877364. Context I have the following Metal shader, which replaces one color with another. [[ stitchable ]] half4 recolor( float2 position, half4 currentColor, half4 from, half4 to ) { if (all(currentColor == from)) return to; return currentColor; } Given this SwiftUI view: let shader = ShaderLibrary.recolor(.color(.red), .color(.green)) Color.red .colorEffect(shader) I get a red rectangle instead of the expected green one. Note that this works on both dynamic and non-dynamic colors. Note that this sometimes works with some colors, which is very inconvenient when trying to figure out what's going on. Did I miss something? I would've expected the shader to work with colors the same way. Issue To really highlight the issue, here's another test case. I'll define #94877E in an Asset Catalog as example and check the RGB values using the Digital Color Meter app in "Display native values" mode. We'll use the following shader to determine how colorEffect receives colors: [[ stitchable ]] half4 test( float2 position, half4 currentColor, half4 color ) { return color; } The following view yields "R: 0.572, G: 0.531, B: 0.498". Color.example While this one yields "R: 0.572, G: 0.531, B: 0.499". let shader = ShaderLibrary.test(.color(Color.example)) Color.white.colorEffect(shader) I would expect them to match.
Topic: UI Frameworks SubTopic: SwiftUI
0
0
22
4w
External payment providers for users in Russia when In-App Purchases are unavailable
Hello, I have a question regarding payments for iOS apps in Russia. Currently, In-App Purchases are not available or do not work for many users in Russia, making it impossible for them to purchase digital subscriptions or digital content via Apple IAP. Is it allowed to: use an external payment provider available only in Russia, show this option only to users located in that region, and unlock access to digital content after payment is completed outside the app (for example, via a web page), in cases where Apple IAP is technically unavailable? Is there any official guidance or exception for regions where Apple IAP cannot be used? Thank you.
0
0
229
3w
Prevention of ScreenShot and ScreenRecording in an iOS app
In my app i need to restrict the user to take screenshot or screen recording . i used the following code snippet, let field = UITextField() let view = UIView(frame: CGRect(x: 0, y: 0, width: field.frame.self.width, height: field.frame.self.height)) // Following view can be customised if required let newView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)) newView.backgroundColor = .black field.isSecureTextEntry = true window.addSubview(field) view.addSubview(newView) window.layer.superlayer?.addSublayer(field.layer) //field.layer.sublayers?.last!.addSublayer(window.layer) if let lastSublayer = field.layer.sublayers?.last { lastSublayer.addSublayer(window.layer) } field.leftView = view field.leftViewMode = .always My query is will below lines meet the Apple compliance? will ther be any rejection while publishing to Appstore? window.layer.superlayer?.addSublayer(field.layer) field.layer.sublayers?.last!.addSublayer(window.layer).
Topic: UI Frameworks SubTopic: UIKit Tags:
0
0
96
2w
Lock Screen Quick Action Fails to Present CameraCaptureIntent View After Main App Transition
I am encountering an issue where the Lock Screen Quick Action fails to visibly open my app. My app is a camera application that utilizes a CameraCaptureIntent to launch a standalone, lightweight camera view (accessible while the device is locked), distinct from the main application. Steps to Reproduce: Open the lightweight camera view using the Lock Screen Quick Action. From this view, launch the Main App. Lock the iPhone (put it to sleep). Attempt to launch the lightweight camera view via the Quick Action again. A slight animation occurs, but the camera view does not appear on screen. After multiple tests, it seems the view is actually launching but remains in an "invisible state." I suspect that the system hides the lightweight camera view when transitioning to the Main App, but fails to reset this hidden state when the Quick Action is triggered subsequently. I would appreciate any guidance on a potential workaround or confirmation if this is a known issue awaiting a system update.
0
0
70
2w
Adding Github Account to Xcode
I've been trying to add my Github Account to Xcode, but even with my user name and access token, all I get is a spinning wheel. No error message, no feedback. Nothing. I'm going to do it from terminal but this seems just poor. Especially, since there's no feedback from XCode on what the problem is. Any help would be nice.
0
1
25
4w
Unable to set subtitle when BGContinuedProcessingTask expires
Hi, I've now identified a few areas when BGContinuedProcessingTask gets expired by the system no progress for ~30 seconds high CPU usage high temperature Some of these I can preempt and expire preemptively and handle the notification, others I cannot and just need to let the failure bubble up. When the failure does bubble up, I'd like to update the title and subtitle. I'm able to update the title, but the subtitle is fixed at "Task Failed" Is there any workaround? Or shall I file a bug here?
0
0
70
2w
safeArea access in XCode 26, iOS 26
Hi. In my project, I use the following property to access the safe area via UIApplication: UIApplication .shared .connectedScenes .flatMap { ($0 as? UIWindowScene)?.windows ?? [] } .first { $0.isKeyWindow }?.safeAreaInsets However, in Xcode 26 and iOS 26, this no longer works, and in some cases the app crashes. Views that rely on this property stop behaving as expected. For example, if it’s a sheet, it does not appear. The same app built with Xcode 16 and distributed via TestFlight runs on iOS 26 without any issues. What is the correct and safe way to obtain safeAreaInsets outside of a View now?
Topic: UI Frameworks SubTopic: SwiftUI
0
1
82
3w
Enrollment Error: "Cannot be completed at this time" - Weeks of trying, no explanation
Trying to enroll in Apple Developer Program to notarize my Mac app. Getting blocked repeatedly with "Your enrollment in the Apple Developer Program could not be completed at this time." Verified: ✅ 2FA enabled ✅ Valid payment method ✅ All details match government ID ✅ No VPN, tried multiple browsers ✅ Waited weeks between attempts Solo dev just trying to do things properly and pay the $99/year. Anyone found a way past this? Seeing similar threads but no clear solutions.
0
0
40
3w
App Stuck in "Waiting for Review" since February 5th (13+ Days) – Unusual Delay?
Hey everyone, Is anyone else seeing massive delays right now? I submitted my app, Brew Routes, on February 5th and it has been stuck in "Waiting for Review" for over 13 days. No messages in the Resolution Center and no status changes. I’m hesitant to reject and resubmit because I don't want to lose my spot in the queue. Apple ID: 6758462674 Submitted: Feb 5, 2026 Status: Waiting for Review Platform: iOS / Capacitor Is it worth requesting an expedited review at this point, or are others seeing this same February backlog?
0
0
46
2w
UAC 2.0 Channel Count and Channel Names
I am developing a standard UAC 2.0 device and encountered an issue where the channel names do not update according to the iChannelNames field in the Class Specific AS Interface Descriptor when switching between different channel counts. For example: AS1 (6 channels) is configured with the following channel names: ADAT 1, ADAT 2, ADAT 3, ADAT 4, HP L, HP R AS2 (4 channels) is configured with: ADAT 1, ADAT 2, HP L, HP R However, when switching from AS1 (6 channels) to AS2 (4 channels), the channel names displayed in Audio MIDI Setup do not reflect the change as expected. The actual result is: ADAT 1, ADAT 2, ADAT 3, ADAT 4 The system simply hides the last two channels; the names of the remaining channels are not updated. Initial Topology My original topology was as follows: Later, I discovered that macOS uses the iChannelNames field from the Input Terminal to display channel names. Therefore, I modified the USB device descriptors and updated the topology to the following: To distinguish the channel names for different channel counts, each Input Terminal is assigned a unique iChannelNames value. This method worked perfectly on macOS 15. However, after updating to macOS 26, this topology no longer displays the correct channel names. Question On macOS 26, what is the correct method to ensure that the channel names update dynamically when switching between different audio channel configurations?
0
0
127
4w
WidgetKit: WidgetCenter.reloadAllTimelines() / reloadTimelines(ofKind:) requests are silently ignored/deferred, causing widget to remain unupdated
Problem After launching the host app by tapping the widget (widgetURL), calls to: WidgetCenter.shared.reloadAllTimelines() WidgetCenter.shared.reloadTimelines(ofKind: ...) are ignored/deferred for an initial period right after the app opens. During this window, the widget does not reload its timeline and remains unupdated, no matter how many times I call the reload methods. After some time passes (typically ~30 seconds, sometimes shorter/longer), reload calls start working again. There is also no developer-visible signal (no callback/error/acknowledgement) that the reload was ignored, so the app can’t detect the failure and can’t reliably recover the flow. Question: Is this expected behavior (throttling/cooldown) after opening the app from a widget ? If so, is there any recommended workaround to update the widget reliably and quickly (or at least detect that the reload was not accepted)? Any guidance would help.
0
0
49
2w
UAC 2.0 Channel Count and Channel Names
I am developing a standard UAC 2.0 device and encountered an issue where the channel names do not update according to the iChannelNames field in the Class Specific AS Interface Descriptor when switching between different channel counts. For example: AS1 (6 channels) is configured with the following channel names: ADAT 1, ADAT 2, ADAT 3, ADAT 4, HP L, HP R AS2 (4 channels) is configured with: ADAT 1, ADAT 2, HP L, HP R However, when switching from AS1 (6 channels) to AS2 (4 channels), the channel names displayed in Audio MIDI Setup do not reflect the change as expected. The actual result is: ADAT 1, ADAT 2, ADAT 3, ADAT 4 The system simply hides the last two channels; the names of the remaining channels are not updated. Initial Topology My original topology was as follows: Later, I discovered that macOS uses the iChannelNames field from the Input Terminal to display channel names. Therefore, I modified the USB device descriptors and updated the topology to the following: To distinguish the channel names for different channel counts, each Input Terminal is assigned a unique iChannelNames value. This method worked perfectly on macOS 15. However, after updating to macOS 26, this topology no longer displays the correct channel names. Question On macOS 26, what is the correct method to ensure that the channel names update dynamically when switching between different audio channel configurations?
0
0
136
4w
For some reason, my Apple Developer subscription didn't connect.
Please help. I purchased an Apple Developer account subscription through the iPhone app. It's listed in the App Store, but it's not listed in Apple Developer itself. I've been waiting for a response from support for over a week, but it's as if they've completely forgotten about me; no one's responding. Although, in fact, it says two days ago. Has anyone else encountered this and can help? It's asking me to pay a second time, and through the website.
0
0
29
2w
🎧Define if headphones is only playing device for current session
I need to apply headphone-specific scenario only when headphones are the sole active playback device in my iOS audio app. Problem that there is no absolute way to definitively understand that headphones are the sole active playback device AVAudioSession.currentRoute.outputs portTypes don't guarantee headphones: let session = AVAudioSession.sharedInstance() let outputs = session.currentRoute.outputs let headphonesOnly = outputs.count == 1 && (outputs.first?.portType == .headphones || outputs.first?.portType == .bluetoothA2DP || outputs.first?.portType == .bluetoothHFP || outputs.first?.portType == .bluetoothLE) The issue in code above that listed bluetooth profiles (A2DP, HFP, LE) can be used by any audio device, not only headphones Is there any public API on iOS that can: Distinguish Bluetooth headphones vs Bluetooth speakers when both use A2DP/LE? Expose the user’s “Device Type” classification (headphones / speaker / car stereo, etc.) that is shown in Settings → Bluetooth → Device Type? Provide a more reliable way to know “this route is definitely headphones” for A2DP devices, beyond portType and portName string heuristics?
0
0
91
3w
File Download Support in SwiftUI Native WebView (iOS 26+)
I am using the native SwiftUI WebView and WebPage APIs (iOS 26+) and would like to implement file download functionality using the native SwiftUI WebView. However, I have not been able to find any APIs equivalent to WKDownload. In WKWebView, the WKDownload API can be used to handle downloads. I am looking for a similar API or recommended approach in the native SwiftUI WebView that would allow downloading files. If anyone has guidance or suggestions on how to implement this, I would appreciate your help.
0
1
448
4w
New Developer here, is this allowed?
Hi, so this is my first app, it's actually almost finished, however coming closer to the app store publishing i have a few questions. First of all, i tried making an app so it's easier for people to download it instead of a website and the app has notifications so PWA are also sometimes hit or miss and my collegues are a tad older so explaining to them how to safe to homescreen for like 50 people is not the best way. So my app is actually only made for collegues of mine, when the app opens it's a registration page which most of the time will be locked.(i assume that's allowed?) There's $ prices involved (max $100) at the end if they win but there's nowhere that they need to pay or anything inside the app, it's leftovers from work related activities that gets distributed amongst the winnners. Nothing goes towards me, i earn nothing. Also it's a football pool(for the world cup) they need to predict the score, get it right and get some points, highest points winners received the prizes. To the people who have made countless apps, is Apple going to allow this app you think? Thanks in advance.
0
0
70
2w