Post

Replies

Boosts

Views

Activity

Reply to Tahoe 26.2.
Willkommen im Forum. Das ist einfach eine dumme KI-Antwort. Tahoe ist MacOS 26, es existiert tatsächlich. Aber Ihre Frage betrifft nicht die App-Entwicklung. Sie sollten Ihren Beitrag besser im Support-Forum posten: https://discussions.apple.com/welcome Welcome to the forum. That's a just stupid AI answer. Tahoe is MacOS 26, it does exist. But your question is not about app development. You'd better post on support forum: https://discussions.apple.com/welcome
Topic: App & System Services SubTopic: General Tags:
Dec ’25
Reply to Where is the + for modifiers and views?
Which + ? There was one for Libraries. Is it this one ? It has moved to the bottom toolbar of the canvas view. See in release notes: Interface Builder New Features https://developer.apple.com/documentation/xcode-release-notes/xcode-26-release-notes Sorry for the ridiculously large images, I cannot reduce their size anymore, forum scales to full width automatically.
Dec ’25
Reply to Do we still need to comply with SB2420 on Jan 1st for distributing apps in Texas ?
Apple gave the answer: https://developer.apple.com/news/?id=8jzbigf4 A recent injunction issued by a district court suspended enforcement of Texas state law SB2420, which introduced age assurance requirements for app marketplaces and developers. In light of this ruling, Apple will pause previously announced implementation plans and monitor the ongoing legal process. So, everything on pause, no requirement on Jan 1st. Until further instructions.
Dec ’25
Reply to iOS App rejected
Do you ever use lob mobile ? __ in swift mean that it's a private API or internal var https://github.com/touchlab/SKIE/discussions/93 So here, some of your code (maybe a third party library) is calling this private func. Please give more context: do you use third party framework ? do you use objC ?
Dec ’25
Reply to DeclaredAgeRange.requestAgeRange returns .notAvailable despite Family‑Sharing child account (iOS 26.2, Xcode 26.2)
Please post exact code. The present code would not compile. Impossible to comment on incomplete code. And please edit your comment with linefeeds. The present text is very hard to read. You should also edit your code with code formatter Closer to this, but some instructions still missing if #available(iOS 26.2, *) { #if canImport(DeclaredAgeRange) do { let response = try await AgeRangeService.shared.requestAgeRange(ageGates: 18, in: self) switch response { case let .sharing(range): break // handle range case .declinedSharing: break // handle declined @unknown default: break // handle unknown } } } catch let err as AgeRangeService.Error { if case .notAvailable = err { print("AgeRange notAvailable") } else { print("AgeRange other error: \(err)") } } } catch { print("AgeRange generic error: \(error)") } #endif // canImport(DeclaredAgeRange) }
Topic: UI Frameworks SubTopic: UIKit
Dec ’25
Reply to Inconsistent App Review Decisions Are Hurting Time-Critical iOS Releases
For sure, that causes some stress at each submission a new version. Even though we must admit that review is a filtering process that may catch new issue each time. This is what I do in some cases: write comments for reviewer. In your case, like: "Since previous approval, changes are only minor bug fixes in ". Or that "app was once rejected but after explanation with review team it was accepted without change." That will help reviewer get the context.
Dec ’25
Reply to Guidance on implementing Declared Age Range API in response to Texas SB2420
Yes, a message before termination is needed. But end of the game, once user clicks OK (UIKit) will be app termination, with all our apologies for the inconvenience. So here is what the code could look like in UIKit. Any comment welcomed. import UIKit import DeclaredAgeRange import StoreKit // In case need to check appStoreAgeRating class ViewController: UIViewController { @IBOutlet weak var welcomeLabel: UILabel! @IBOutlet weak var stopButton: UIButton! var task: Task<Void, Never>? // To allow to cancel Task if needed override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. // test for age to be done here instead of button action ? } @available(iOS 26.2, *) // Called only on iOS 26.2+ in any case func testAgeRange() async -> Bool { do { print("Calling isEligibleForAgeFeatures") var isEligible = false print("iOS 26.2 or later") isEligible = try await AgeRangeService.shared.isEligibleForAgeFeatures // try Task.checkCancellation() // How to allow user to cancel the check to avoid being blocked ? print("isEligible", isEligible) // Does not work on simulator if !isEligible { print("Not in Texas") return true // Not in Texas, so we can proceed } } catch { // AgeRangeService.Error.notAvailable { // No age range provided. return true // should we accept if no ageRange provided, in order not to cause problem out of Texas ? } do { let response = try await AgeRangeService.shared.requestAgeRange(ageGates: /*13, 15,*/ 18, in: self) // To be safe, test for 18 in Texas var lowerBound = 18 switch response { case .declinedSharing: print("User declined to share age.") return false case .sharing(let range): lowerBound = range.lowerBound ?? 18 print("User age range: \(range.lowerBound ?? 0)-\(range.upperBound ?? 99)") @unknown default: print( "fatalError()") return false } var ok = false if lowerBound >= 18 { // Allow access to 18+ features. We test only for Texas ok = true } else { // Require parental consent ? // Show age-appropriate content ok = false // Allow access only to 18+ in Texas } return ok // Authorized for all 18+ in Texas } catch { // AgeRangeService.Error.notAvailable { // No age range provided. return false } } func executeStart() { welcomeLabel.isHidden = false } // In case too long wait @IBAction func stopTask(_ sender: UIButton) { print("ask to stop task", task?.isCancelled) task?.cancel() print("cancelled?", task?.isCancelled) stopButton.isHidden = true } @IBAction func start(_ sender: UIButton) { stopButton.isHidden = false task = Task { // @MainActor in print("Start") if #available(iOS 26.2, *) { let appStoreAgeRating = await AppStore.ageRatingCode ?? 18 // Not used yet if await self.testAgeRange() { // self needed if detached Task // Need to test for parental control here ? if self.task?.isCancelled != nil { print("Task has been cancelled") } } else { print("No testAgeRange") // Alert and exit the app when user acks alerts, with the following message // "Access to this app is age-restricted due to local laws in your state or territory.") // "Please verify your age with Apple and allow this app to access your age information.") // "For further information, please refer to the following Apple support article: https://support.apple.com/en-us/122770") } } else { print("Not 26.2") // do nothing ? We can run the app. } self.executeStart() } print("We have completed the task") } }
Dec ’25