Overview

Post

Replies

Boosts

Views

Activity

Embedded Collection View in SwiftUI offset issue
I have a collection view that covers all the screen and it is scrolling behavior is paging. This collection view is embedded in a UIViewRepresentable and used in a SwiftUI app. The issue is that when users rotate the devices, sometimes the CollectionView.contentOffset get miscalculated and shows 2 pages. This is the code that I'm using for the collectionView and collectionViewLayout: class PageFlowLayout: UICollectionViewFlowLayout { override class var layoutAttributesClass: AnyClass { UICollectionViewLayoutAttributes.self } private var calculatedAttributes: [UICollectionViewLayoutAttributes] = [] private var calculatedContentWidth: CGFloat = 0 private var calculatedContentHeight: CGFloat = 0 public weak var delegate: PageFlowLayoutDelegate? override var collectionViewContentSize: CGSize { return CGSize(width: self.calculatedContentWidth, height: self.calculatedContentHeight) } override init() { super.init() self.estimatedItemSize = .zero self.scrollDirection = .horizontal self.minimumLineSpacing = 0 self.minimumInteritemSpacing = 0 self.sectionInset = .zero } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func prepare() { guard let collectionView = collectionView, collectionView.numberOfSections > 0, calculatedAttributes.isEmpty else { return } estimatedItemSize = collectionView.bounds.size for item in 0..<collectionView.numberOfItems(inSection: 0) { let indexPath = IndexPath(item: item, section: 0) let attributes = UICollectionViewLayoutAttributes(forCellWith: indexPath) let itemOrigin = CGPoint(x: CGFloat(item) * collectionView.frame.width, y: 0) attributes.frame = .init(origin: itemOrigin, size: collectionView.frame.size) calculatedAttributes.append(attributes) } calculatedContentWidth = collectionView.bounds.width * CGFloat(calculatedAttributes.count) calculatedContentHeight = collectionView.bounds.size.height } override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { return calculatedAttributes.compactMap { return $0.frame.intersects(rect) ? $0 : nil } } override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { return calculatedAttributes[indexPath.item] } override func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool { guard let collectionView else { return false } if newBounds.size != collectionView.bounds.size { return true } if newBounds.size.width > 0 { let pages = calculatedContentWidth / newBounds.size.width // If the contentWidth matches the number of pages, // if not it requires to layout the cells let arePagesExact = pages.truncatingRemainder(dividingBy: 1) == 0 return !arePagesExact } return false } override func invalidateLayout() { calculatedAttributes = [] super.invalidateLayout() } override func shouldInvalidateLayout(forPreferredLayoutAttributes preferredAttributes: UICollectionViewLayoutAttributes, withOriginalAttributes originalAttributes: UICollectionViewLayoutAttributes) -> Bool { guard let collectionView, #available(iOS 18.0, *) else { return false } return preferredAttributes.size != collectionView.bounds.size } override func invalidateLayout(with context: UICollectionViewLayoutInvalidationContext) { guard let customContext = context as? UICollectionViewFlowLayoutInvalidationContext else { return } if let collectionView, let currentPage = delegate?.currentPage() { let delta = (CGFloat(currentPage) * collectionView.bounds.width) - collectionView.contentOffset.x customContext.contentOffsetAdjustment.x += delta } calculatedAttributes = [] super.invalidateLayout(with: customContext) } override func prepare(forAnimatedBoundsChange oldBounds: CGRect) { super.prepare(forAnimatedBoundsChange: oldBounds) guard let collectionView else { return } if oldBounds.width != collectionView.bounds.width { invalidateLayout() } } override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint { guard let collectionView, let currentPage = delegate?.currentPage() else { return .zero } let targetContentOffset = super.targetContentOffset(forProposedContentOffset: proposedContentOffset) let targetPage = targetContentOffset.x / collectionView.frame.width if targetPage != CGFloat(currentPage) { let xPosition = CGFloat(currentPage) * collectionView.frame.width return CGPoint(x: xPosition, y: 0) } return targetContentOffset } // This function updates the contentOffset in case is wrong override func finalizeCollectionViewUpdates() { guard let collectionView, let currentPage = delegate?.currentPage() else { return } let xPosition = CGFloat(currentPage) * collectionView.bounds.width if xPosition != collectionView.contentOffset.x { let offset = CGPoint(x: xPosition, y: 0) collectionView.setContentOffset(offset, animated: false) } } } The full implementation is attached in the .txt file: RotationTestView.txt
6
0
208
3w
External Purchase Link Entitlement RU - 500 Internal Server Error
Hello, We are a Russian developer attempting to enable the StoreKit External Purchase Link Entitlement for our app. According to Apple’s documentation, this entitlement is required to provide external purchase links in Russia. However, the official request page consistently returns a 500 Internal Server Error: https://developer.apple.com/contact/request/storekit-external-entitlement-ru Steps we tried: Different browsers (Safari, Chrome, Edge) Different networks and VPNs Multiple developer accounts The error persists in all cases. We have already opened a support case (Case #102864703080), but Developer Support advised us to post here for technical guidance. Questions: Is there an alternative way to submit the entitlement request while the page is unavailable? Can Apple confirm whether this is a known issue and if a fix is in progress? Are manual submissions via the general Contact Us form accepted for this entitlement? Screenshots of the error are attached. Thank you in advance for any guidance.
0
0
54
3w
Live Activity Stops Updating After 30 Seconds in Background During Audio Playback
Hi I developed a music app that plays offline audio and displays lyrics using Live Activities. According to ActivityKit documentation, Live Activities can be updated from the background. However, in my case, updates stop after ~30 seconds when the app goes to the background or the device is locked. Important points: The app continues running in the background (audio playback works fine using AVAudioSession with .playback) Background code execution is working as expected Only the Live Activity stops updating I am not using push updates since this is an offline app. Is there any limitation or requirement for updating Live Activities continuously in the background during audio playback? Audio Session Configuration let session = AVAudioSession.sharedInstance() try session.setCategory( .playback, mode: .default, options: [.mixWithOthers] // ✅ DO NOT interrupt other audio ) try session.setActive(true) print("✅ [AudioSession] Activated with mixWithOthers") } catch { print("❌ [AudioSession] Error: \(error)") } Live Activity Update Methods guard let activity = getLiveActivity(for: recordID) else{ print("⚠️ No Live Activity found for recordID: \(recordID)") return } guard activity.activityState == .active else { print("⚠️ Activity is not active") return } Task { let content = ActivityContent( state: state, staleDate: Date().addingTimeInterval(60 * 60 * 12), relevanceScore: 1.0 ) await activity.update(content) print("✅ Live Activity updated with ActivityContent") } }
0
0
271
3w
App rejected due to lack of In-App Purchase — no supported payment options in Iraq
Hello, I’m a developer of an iOS app that provides paid educational courses (video-based content). Our recent app update was rejected under guideline 3.1.1 because the app includes paid digital content that is not using Apple’s In-App Purchase system. We fully understand and respect this guideline. However, we are facing a significant limitation: We are based in Iraq, and currently we do not have access to supported financial infrastructure that allows us to: Use Apple In-App Purchase (due to lack of supported banking setup) Use common payment providers like Stripe or similar services At the moment, our app relies on external payments completed outside the app, and users log in to access purchased content. Due to the rejection, our release and marketing plans are currently blocked, and we are looking for a compliant solution.
0
0
87
4w
Subscription failure in 26.4, 26.4.1
We have a user from Asia whose subscription failed to be detected by our app. On 26.4. They also tried revoking the yearly subscription and activating a monthly. Payment ok and the device reported that the subscription is active. Our code relies on Transaction.currentEntitlements in StoreKit, which seems to be broken, at least for this user. None of these worked: Installing iOS 26.4.1 Reinstalling our app Logging out and in from iCloud. Hard device reset Full iOS reinstall. User finally gave up and got a refund. I am reporting here in case other apps experienced similar problems. This discussion mentions that a regression in 26.4 might have contributed to the issue which is supposed to be fixed in 26.4.1. ( https://developer.apple.com/forums/thread/820562?answerId=883682022#883682022 ) The issue may have persisted or left the entitlements corrupt for this particular user. Hoping that the issue is resolved so we do not have more problems in the future.
2
0
134
3w
Custom Pricing and Features for Non-Renewing Subscriptions
I hope you are doing well. I am reaching out to inquire about a few aspects of implementing non-renewing subscriptions in our app. Firstly, we have encountered a limitation in App Store Connect where the maximum price tier available for non-renewing subscriptions in Euros is €1199. However, our product is priced at €1799. Could anyone please advise how we can handle this scenario? Is there a way to request custom pricing beyond the available tiers, or is there an alternative approach you would recommend? Additionally, we would like clarification on the following: Promo Codes: Are promo codes supported for each non-renewing subscription product? If so, how can we configure and distribute them? Installment Payments: Is it possible to enable installment-based payments for non-renewing subscriptions? If yes, could you guide us on how to set this up or if there are any prerequisites?
1
0
454
4w
Xcode documentation has disappeared
I'm using Xcode 26.4 for Swift development on macOS 26.4.1. It seems that the documentation for the "Foundation" framework has disappeared, possibly after an Xcode update (not the latest one). "Foundation" does not appear in the left-side list in the developer documentation window, and searching for "URLSession", "UndoManager" finds no result. Autocomplete for these classes works. Quick help on URLSession shows just "inherits from" and "conforms to", but no description and no link to a help page. I've tried deleting files in ~/Library/Developer so that it rebuilds the index, and also fully removing and reinstalling Xcode and rebooting, but nothing seems to solve it. Is there any way to get the full documentation back in Xcode.
0
1
69
3w
EASession(accessory:forProtocol:) always returns nil — MFI accessory iAP2
EASession(accessory:forProtocol:) always returns nil — MFI accessory iAP2 Platform: iOS 17+ | Hardware: Custom MFI-certified accessory (USB-C, iAP2) | Language: Swift Problem We have a custom MFI-certified accessory communicating over USB-C using ExternalAccessory. The app calls EASession(accessory:forProtocol:) after receiving EAAccessoryDidConnect but it always returns nil. We never get past session creation. What we have verified We captured a sysdiagnose on-device and analysed the accessoryd-packets log. The full iAP2 handshake completes successfully at the OS level: USB attach succeeds MFI auth certificate is present and Apple-issued Auth challenge and response complete successfully IdentificationInformation is accepted by iOS — protocol string and Team ID are correct EAAccessoryDidConnect fires as expected iOS sends StartExternalAccessoryProtocolSession — the OS-level session is established So the hardware, MFI auth, protocol string, and Team ID are all correct. Despite this, EASession(accessory:forProtocol:) returns nil in the app. We also confirmed: Protocol string in UISupportedExternalAccessoryProtocols in Info.plist matches the accessory exactly Protocol string in code matches Info.plist App entitlements are correctly configured EAAccessoryManager.shared().registerForLocalNotifications() is called before connection Current connection code @objc private func accessoryDidConnect(_ notification: Notification) { guard let accessory = notification.userInfo?[EAAccessoryKey] as? EAAccessory else { return } DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { self.tryConnectToAccessory() } } private func tryConnectToAccessory() { DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) { for accessory in EAAccessoryManager.shared().connectedAccessories { let session = EASession(accessory: accessory, forProtocol: "") // session is always nil here } } } Questions The packet log shows a ~4 second gap between EAAccessoryDidConnect firing and iOS internally completing session readiness (StartExternalAccessoryProtocolSession). Is there a reliable way to know when iOS Is it actually ready to grant an EASession, rather than using a fixed delay? Is there a delegate callback or notification that fires when the accessory protocol session is ready to be opened, rather than relying on EAAccessoryDidConnect + an arbitrary delay? Are there any known conditions on iOS 17+ under which EASession returns nil even though the iAP2 handshake completed successfully at the OS level? Is retrying EASession after a nil result a supported pattern, or does a nil result mean the session will never succeed for that connection? Any guidance appreciated.
8
0
531
4w
Charged $99 for Developer Program, but Membership is Still Inactive (Invoice Received)
Hi everyone, I'm hoping to get some advice or visibility from Apple staff here, as my team is currently completely stuck. On April 10th, we enrolled in the Apple Developer Program. Our credit card was successfully charged $99, and we received the official Apple invoice receipt (Invoice #MC64187422). However, almost a week later, the membership status has not updated to active. The developer portal still prompts us to "Complete your purchase", and if we click it, it gives a warning about withdrawing the enrollment. We are on a very tight schedule to release a gamification app for our corporate clients by late April, and this enrollment delay is severely impacting our deployment timeline. I've already emailed Developer Support but haven't received a response in days. I also tried using the "Request a call" feature. However, because I am the technical lead handling the setup for the team and my name doesn't exactly match the account owner's name, the phone support agent was unable to assist me further due to security policies. Has anyone experienced this kind of "stuck" status after the payment has already been captured and invoiced? Is there a specific way to escalate this pending enrollment so we can meet our project deadline? Any advice would be greatly appreciated. Thanks in advance!
0
0
35
3w
Stuck with DSA Review in progress
App ID: 6761302938 I've provided the DSA compliance, but it is stuck in the "In review" state. I tried to contact Apple Development Support but mail is never responded and three calls yesterday took over an hour each, without talking to anybody. Today, both mail and call support seems blocked "responseId": "8ec9XXXX056", "resultCode": 1200, "resultString": "You are not allowed to perform this operation. Please check with one of your Team Admins, or, if you need further assistance, please contact Apple Developer Program Support. https://developer.apple.com/support", "userString": "You are not allowed to perform this operation. Please check with one of your Team Admins, or, if you need further assistance, please contact Apple Developer Program Support. https://developer.apple.com/support", "creationTimestamp": "2026-04-14T09:29:12Z", "userLocale": "en_US", "requestUrl": "https://developer.apple.com/services-contact/solution/execute", "httpCode": 200 } Please please Apple development team: fix this issue, respond to emails and most important: approve the DSA compliance.
0
0
76
4w
Mac Catalyst App Failed Registering Bundle Identifier
Hi there, New to this forum. I have an iOS/iPadOS app already published in the App Store, and it works great as a Mac Catalyst app on my Mac. However when uploading to App Store Connect, I get the message: Failed Registering Bundle Identifier The app identifier "maccatalyst.nl.lai.prep-app" cannot be registered to your development team because it is not available. Change your bundle identifier to a unique string to try again. So the organizer adds the maccatalyst in front of the Bundle Identifier automatically, but for some reason I get the message it's not available. I've already added the macOS App as a platform on App Store Connect. The Bundle ID (nl.lai.prep-app) is obviously registered as the app is already available on iOS/iPadOS and I have enabled 'Mac Catalyst' in my App id Configuration on the developer portal. In Xcode macOS (Mac Catalyst) has been added as a destination. I contacted developer support, but they couldn't see anything wrong 🤷‍♂️ and suggested I would ask the developer community on the developer forum for advice, so here I am. Who has suggestions on what I should do?
3
0
65
3w
Xcode Signing & Capabilities Errors
Getting a couple of errors on the Signing & Capabilities section in Xcode when trying to provision my iPhone for on-device prototyping. "Communication with Apple failed Your team has no devices from which to generate a provisioning profile. Connect a device to use or manually add device IDs in Certificates, Identifiers & Profiles. https://developer.apple.com/account/" "No profiles for 'com.danieljbuckley.Throwaway' were found Xcode couldn't find any iOS App Development provisioning profiles matching 'com.danieljbuckley.Throwaway'." Any ideas on how to resolve this?
1
0
51
4w
Critical Bug — Cannot Submit or Delete Draft Response to Guideline 5.6.4 Notice — App at Risk of Removal
Hi everyone, I am hoping someone here has experienced this and can help, because we are in a really difficult position right now. We received a notice from App Review regarding Guideline 5.6.4 and have been working hard to prepare a full response with supporting evidence. The problem is that a draft response exists in App Store Connect that we cannot submit or delete. Every time we click either Submit or Delete Draft, we get the same error: "The resource cannot be found" That is it. No further explanation, no workaround, nothing. The draft is just stuck there and we cannot get past it. Because we could not submit through the normal channel, we uploaded a new build with our action plan included in the notes, hoping that would reach the review team. The build has been sitting there unreviewed. We have raised a support ticket with Apple Developer Support and have not received any response. The clock is ticking. App Review has given us a deadline to respond or face removal from the App Store. We have our response ready. We have our evidence ready. We just physically cannot submit it because of what appears to be a technical bug on Apple's side. Has anyone else hit this "resource cannot be found" error on a draft App Review response? Is there any other channel we can use to get this in front of the App Review team directly? We have tried everything we can think of. Any help would be massively appreciated. This is our livelihood and the deadline pressure combined with a broken system is genuinely distressing. Thank you
2
0
108
3w
Developer ID Installer cert not usable for pkg signing (no Code Signing / 0 identities)
Hello! We built a macOS .pkg using pkgbuild (contains a DMG + postinstall bash script). The pkg works locally on the build machine but fails on other devices manually / via MDM unless signed. We tried signing with a Developer ID Installer certificate, but: security find-identity -p codesigning -v → 0 valid identities security find-identity -v → shows the cert Private key is present in Keychain OpenSSL check shows: X509v3 Extended Key Usage: Critical (Expected one might be: Code Signing) We recreated CSR + cert multiple times (G2 Sub-CA), ensured Login keychain, unlocked keychain, etc., but same result. Question: Why is the Developer ID Installer cert missing Code Signing usage and not recognized for signing? Is there any account restriction or step we might be missing? Any recommendations on resolving this issue. Thanks!
1
0
446
4w
Best practice for replacing deprecated sem_init/sem_wait in a cross-platform threading layer on macOS (arm64)
Hi all, I'm working on a cross-platform runtime that manages a pool of threads (think game engine / emulator style... dozens of guest threads mapped 1:1 to host pthreads). It was originally written for Linux and Windows and we're now porting to macOS on Apple Silicon. We've hit a wall with a deadlock on macOS and traced it back to our use of POSIX unnamed semaphores (sem_init / sem_wait / sem_post) for thread suspend and resume. We were unaware these have never actually been implemented on macOS, sem_init silently returns -1 with ENOSYS and then sem_wait just hangs forever. That explains our deadlock. The tricky part is how we use them. Our suspend mechanism works by sending SIGUSR1 to a target thread via pthread_kill. The signal handler then calls sem_wait to block the thread in place until another thread calls sem_post to resume it. So whatever we replace sem_init/sem_wait with needs to be safe to call from inside a signal handler. From what I can tell: dispatch_semaphore_wait is not documented as async-signal-safe pthread_cond_wait is also not async-signal-safe os_sync_wait_on_address looks promising but requires macOS 14.4+ which is a pretty high floor We could spin on a std::atomic with .wait() / .notify_all() but I've seen reports of high wake latency (up to 15ms) in libc++'s implementation on macOS My questions: What's the recommended way to block a thread inside a signal handler on macOS? Is there an async-signal-safe wait primitive I'm missing? Would restructuring to avoid blocking in the signal handler entirely be the better approach? For example, having the signal handler just set an atomic flag and then checking it at yield points — would that be the expected pattern on macOS? For the non-signal-handler suspend/resume paths, is dispatch_semaphore_t the right replacement for sem_t, or is there something better suited for high-frequency thread synchronization in 2026? Separately, we're also using ucontext (makecontext/swapcontext) for a fiber system on macOS and hitting issues on native arm64, it works under Rosetta but breaks natively. We have a setjmp/longjmp + manual stack pivot backend we can switch to. Is there any plan to fix or un-deprecate the ucontext functions on arm64, or should we just move off them permanently?
2
0
171
3w
No update on App Review
Since April 6 I’m waiting for review. No updates. They usually say that takes 24-48hrs to be reviewed. I'm at 10 days already. And I get no response on my emails and ticket.
Replies
1
Boosts
0
Views
56
Activity
3w
Embedded Collection View in SwiftUI offset issue
I have a collection view that covers all the screen and it is scrolling behavior is paging. This collection view is embedded in a UIViewRepresentable and used in a SwiftUI app. The issue is that when users rotate the devices, sometimes the CollectionView.contentOffset get miscalculated and shows 2 pages. This is the code that I'm using for the collectionView and collectionViewLayout: class PageFlowLayout: UICollectionViewFlowLayout { override class var layoutAttributesClass: AnyClass { UICollectionViewLayoutAttributes.self } private var calculatedAttributes: [UICollectionViewLayoutAttributes] = [] private var calculatedContentWidth: CGFloat = 0 private var calculatedContentHeight: CGFloat = 0 public weak var delegate: PageFlowLayoutDelegate? override var collectionViewContentSize: CGSize { return CGSize(width: self.calculatedContentWidth, height: self.calculatedContentHeight) } override init() { super.init() self.estimatedItemSize = .zero self.scrollDirection = .horizontal self.minimumLineSpacing = 0 self.minimumInteritemSpacing = 0 self.sectionInset = .zero } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func prepare() { guard let collectionView = collectionView, collectionView.numberOfSections > 0, calculatedAttributes.isEmpty else { return } estimatedItemSize = collectionView.bounds.size for item in 0..<collectionView.numberOfItems(inSection: 0) { let indexPath = IndexPath(item: item, section: 0) let attributes = UICollectionViewLayoutAttributes(forCellWith: indexPath) let itemOrigin = CGPoint(x: CGFloat(item) * collectionView.frame.width, y: 0) attributes.frame = .init(origin: itemOrigin, size: collectionView.frame.size) calculatedAttributes.append(attributes) } calculatedContentWidth = collectionView.bounds.width * CGFloat(calculatedAttributes.count) calculatedContentHeight = collectionView.bounds.size.height } override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { return calculatedAttributes.compactMap { return $0.frame.intersects(rect) ? $0 : nil } } override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { return calculatedAttributes[indexPath.item] } override func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool { guard let collectionView else { return false } if newBounds.size != collectionView.bounds.size { return true } if newBounds.size.width > 0 { let pages = calculatedContentWidth / newBounds.size.width // If the contentWidth matches the number of pages, // if not it requires to layout the cells let arePagesExact = pages.truncatingRemainder(dividingBy: 1) == 0 return !arePagesExact } return false } override func invalidateLayout() { calculatedAttributes = [] super.invalidateLayout() } override func shouldInvalidateLayout(forPreferredLayoutAttributes preferredAttributes: UICollectionViewLayoutAttributes, withOriginalAttributes originalAttributes: UICollectionViewLayoutAttributes) -> Bool { guard let collectionView, #available(iOS 18.0, *) else { return false } return preferredAttributes.size != collectionView.bounds.size } override func invalidateLayout(with context: UICollectionViewLayoutInvalidationContext) { guard let customContext = context as? UICollectionViewFlowLayoutInvalidationContext else { return } if let collectionView, let currentPage = delegate?.currentPage() { let delta = (CGFloat(currentPage) * collectionView.bounds.width) - collectionView.contentOffset.x customContext.contentOffsetAdjustment.x += delta } calculatedAttributes = [] super.invalidateLayout(with: customContext) } override func prepare(forAnimatedBoundsChange oldBounds: CGRect) { super.prepare(forAnimatedBoundsChange: oldBounds) guard let collectionView else { return } if oldBounds.width != collectionView.bounds.width { invalidateLayout() } } override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint { guard let collectionView, let currentPage = delegate?.currentPage() else { return .zero } let targetContentOffset = super.targetContentOffset(forProposedContentOffset: proposedContentOffset) let targetPage = targetContentOffset.x / collectionView.frame.width if targetPage != CGFloat(currentPage) { let xPosition = CGFloat(currentPage) * collectionView.frame.width return CGPoint(x: xPosition, y: 0) } return targetContentOffset } // This function updates the contentOffset in case is wrong override func finalizeCollectionViewUpdates() { guard let collectionView, let currentPage = delegate?.currentPage() else { return } let xPosition = CGFloat(currentPage) * collectionView.bounds.width if xPosition != collectionView.contentOffset.x { let offset = CGPoint(x: xPosition, y: 0) collectionView.setContentOffset(offset, animated: false) } } } The full implementation is attached in the .txt file: RotationTestView.txt
Replies
6
Boosts
0
Views
208
Activity
3w
waiting for review for two months
app id is 6759403692 i have been waiting to be approved my app for two months. I mailed and called several times but no response. please someone help me.
Replies
2
Boosts
0
Views
90
Activity
4w
External Purchase Link Entitlement RU - 500 Internal Server Error
Hello, We are a Russian developer attempting to enable the StoreKit External Purchase Link Entitlement for our app. According to Apple’s documentation, this entitlement is required to provide external purchase links in Russia. However, the official request page consistently returns a 500 Internal Server Error: https://developer.apple.com/contact/request/storekit-external-entitlement-ru Steps we tried: Different browsers (Safari, Chrome, Edge) Different networks and VPNs Multiple developer accounts The error persists in all cases. We have already opened a support case (Case #102864703080), but Developer Support advised us to post here for technical guidance. Questions: Is there an alternative way to submit the entitlement request while the page is unavailable? Can Apple confirm whether this is a known issue and if a fix is in progress? Are manual submissions via the general Contact Us form accepted for this entitlement? Screenshots of the error are attached. Thank you in advance for any guidance.
Replies
0
Boosts
0
Views
54
Activity
3w
Live Activity Stops Updating After 30 Seconds in Background During Audio Playback
Hi I developed a music app that plays offline audio and displays lyrics using Live Activities. According to ActivityKit documentation, Live Activities can be updated from the background. However, in my case, updates stop after ~30 seconds when the app goes to the background or the device is locked. Important points: The app continues running in the background (audio playback works fine using AVAudioSession with .playback) Background code execution is working as expected Only the Live Activity stops updating I am not using push updates since this is an offline app. Is there any limitation or requirement for updating Live Activities continuously in the background during audio playback? Audio Session Configuration let session = AVAudioSession.sharedInstance() try session.setCategory( .playback, mode: .default, options: [.mixWithOthers] // ✅ DO NOT interrupt other audio ) try session.setActive(true) print("✅ [AudioSession] Activated with mixWithOthers") } catch { print("❌ [AudioSession] Error: \(error)") } Live Activity Update Methods guard let activity = getLiveActivity(for: recordID) else{ print("⚠️ No Live Activity found for recordID: \(recordID)") return } guard activity.activityState == .active else { print("⚠️ Activity is not active") return } Task { let content = ActivityContent( state: state, staleDate: Date().addingTimeInterval(60 * 60 * 12), relevanceScore: 1.0 ) await activity.update(content) print("✅ Live Activity updated with ActivityContent") } }
Replies
0
Boosts
0
Views
271
Activity
3w
App rejected due to lack of In-App Purchase — no supported payment options in Iraq
Hello, I’m a developer of an iOS app that provides paid educational courses (video-based content). Our recent app update was rejected under guideline 3.1.1 because the app includes paid digital content that is not using Apple’s In-App Purchase system. We fully understand and respect this guideline. However, we are facing a significant limitation: We are based in Iraq, and currently we do not have access to supported financial infrastructure that allows us to: Use Apple In-App Purchase (due to lack of supported banking setup) Use common payment providers like Stripe or similar services At the moment, our app relies on external payments completed outside the app, and users log in to access purchased content. Due to the rejection, our release and marketing plans are currently blocked, and we are looking for a compliant solution.
Replies
0
Boosts
0
Views
87
Activity
4w
Subscription failure in 26.4, 26.4.1
We have a user from Asia whose subscription failed to be detected by our app. On 26.4. They also tried revoking the yearly subscription and activating a monthly. Payment ok and the device reported that the subscription is active. Our code relies on Transaction.currentEntitlements in StoreKit, which seems to be broken, at least for this user. None of these worked: Installing iOS 26.4.1 Reinstalling our app Logging out and in from iCloud. Hard device reset Full iOS reinstall. User finally gave up and got a refund. I am reporting here in case other apps experienced similar problems. This discussion mentions that a regression in 26.4 might have contributed to the issue which is supposed to be fixed in 26.4.1. ( https://developer.apple.com/forums/thread/820562?answerId=883682022#883682022 ) The issue may have persisted or left the entitlements corrupt for this particular user. Hoping that the issue is resolved so we do not have more problems in the future.
Replies
2
Boosts
0
Views
134
Activity
3w
Custom Pricing and Features for Non-Renewing Subscriptions
I hope you are doing well. I am reaching out to inquire about a few aspects of implementing non-renewing subscriptions in our app. Firstly, we have encountered a limitation in App Store Connect where the maximum price tier available for non-renewing subscriptions in Euros is €1199. However, our product is priced at €1799. Could anyone please advise how we can handle this scenario? Is there a way to request custom pricing beyond the available tiers, or is there an alternative approach you would recommend? Additionally, we would like clarification on the following: Promo Codes: Are promo codes supported for each non-renewing subscription product? If so, how can we configure and distribute them? Installment Payments: Is it possible to enable installment-based payments for non-renewing subscriptions? If yes, could you guide us on how to set this up or if there are any prerequisites?
Replies
1
Boosts
0
Views
454
Activity
4w
Xcode documentation has disappeared
I'm using Xcode 26.4 for Swift development on macOS 26.4.1. It seems that the documentation for the "Foundation" framework has disappeared, possibly after an Xcode update (not the latest one). "Foundation" does not appear in the left-side list in the developer documentation window, and searching for "URLSession", "UndoManager" finds no result. Autocomplete for these classes works. Quick help on URLSession shows just "inherits from" and "conforms to", but no description and no link to a help page. I've tried deleting files in ~/Library/Developer so that it rebuilds the index, and also fully removing and reinstalling Xcode and rebooting, but nothing seems to solve it. Is there any way to get the full documentation back in Xcode.
Replies
0
Boosts
1
Views
69
Activity
3w
EASession(accessory:forProtocol:) always returns nil — MFI accessory iAP2
EASession(accessory:forProtocol:) always returns nil — MFI accessory iAP2 Platform: iOS 17+ | Hardware: Custom MFI-certified accessory (USB-C, iAP2) | Language: Swift Problem We have a custom MFI-certified accessory communicating over USB-C using ExternalAccessory. The app calls EASession(accessory:forProtocol:) after receiving EAAccessoryDidConnect but it always returns nil. We never get past session creation. What we have verified We captured a sysdiagnose on-device and analysed the accessoryd-packets log. The full iAP2 handshake completes successfully at the OS level: USB attach succeeds MFI auth certificate is present and Apple-issued Auth challenge and response complete successfully IdentificationInformation is accepted by iOS — protocol string and Team ID are correct EAAccessoryDidConnect fires as expected iOS sends StartExternalAccessoryProtocolSession — the OS-level session is established So the hardware, MFI auth, protocol string, and Team ID are all correct. Despite this, EASession(accessory:forProtocol:) returns nil in the app. We also confirmed: Protocol string in UISupportedExternalAccessoryProtocols in Info.plist matches the accessory exactly Protocol string in code matches Info.plist App entitlements are correctly configured EAAccessoryManager.shared().registerForLocalNotifications() is called before connection Current connection code @objc private func accessoryDidConnect(_ notification: Notification) { guard let accessory = notification.userInfo?[EAAccessoryKey] as? EAAccessory else { return } DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { self.tryConnectToAccessory() } } private func tryConnectToAccessory() { DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) { for accessory in EAAccessoryManager.shared().connectedAccessories { let session = EASession(accessory: accessory, forProtocol: "") // session is always nil here } } } Questions The packet log shows a ~4 second gap between EAAccessoryDidConnect firing and iOS internally completing session readiness (StartExternalAccessoryProtocolSession). Is there a reliable way to know when iOS Is it actually ready to grant an EASession, rather than using a fixed delay? Is there a delegate callback or notification that fires when the accessory protocol session is ready to be opened, rather than relying on EAAccessoryDidConnect + an arbitrary delay? Are there any known conditions on iOS 17+ under which EASession returns nil even though the iAP2 handshake completed successfully at the OS level? Is retrying EASession after a nil result a supported pattern, or does a nil result mean the session will never succeed for that connection? Any guidance appreciated.
Replies
8
Boosts
0
Views
531
Activity
4w
Charged $99 for Developer Program, but Membership is Still Inactive (Invoice Received)
Hi everyone, I'm hoping to get some advice or visibility from Apple staff here, as my team is currently completely stuck. On April 10th, we enrolled in the Apple Developer Program. Our credit card was successfully charged $99, and we received the official Apple invoice receipt (Invoice #MC64187422). However, almost a week later, the membership status has not updated to active. The developer portal still prompts us to "Complete your purchase", and if we click it, it gives a warning about withdrawing the enrollment. We are on a very tight schedule to release a gamification app for our corporate clients by late April, and this enrollment delay is severely impacting our deployment timeline. I've already emailed Developer Support but haven't received a response in days. I also tried using the "Request a call" feature. However, because I am the technical lead handling the setup for the team and my name doesn't exactly match the account owner's name, the phone support agent was unable to assist me further due to security policies. Has anyone experienced this kind of "stuck" status after the payment has already been captured and invoiced? Is there a specific way to escalate this pending enrollment so we can meet our project deadline? Any advice would be greatly appreciated. Thanks in advance!
Replies
0
Boosts
0
Views
35
Activity
3w
Apple Developer Enrollment Pending
I made my purchase on 12 April 2026 It said within 24-48 hours but i haven't received any email aside from the payment receipts. I created ticket but no response from that been 48 hours. Cannot find any phone number to contact on. Any help?
Replies
0
Boosts
1
Views
69
Activity
3w
NEURLFilter Not Blocking URLs
I've been able to run this sample project with the PIRServer. But the urls are still not blocked. https://developer.apple.com/documentation/networkextension/filtering-traffic-by-url https://github.com/apple/pir-service-example I got this on the log Received filter status change: <FilterStatus: 'running'>
Replies
2
Boosts
0
Views
186
Activity
4w
Apple Developer Enrolment
Hey! I am new to the apple developer enrolment program and it seemed alright to me when I started to fill all of the spaces, but when it lead to the paying process I started to have an issue. The issue is that I fill the spaces to pay, but I never receive the email for actually the bill, so I do not pay and receive the enrol. How do I fix it?
Replies
3
Boosts
3
Views
602
Activity
3w
Stuck with DSA Review in progress
App ID: 6761302938 I've provided the DSA compliance, but it is stuck in the "In review" state. I tried to contact Apple Development Support but mail is never responded and three calls yesterday took over an hour each, without talking to anybody. Today, both mail and call support seems blocked "responseId": "8ec9XXXX056", "resultCode": 1200, "resultString": "You are not allowed to perform this operation. Please check with one of your Team Admins, or, if you need further assistance, please contact Apple Developer Program Support. https://developer.apple.com/support", "userString": "You are not allowed to perform this operation. Please check with one of your Team Admins, or, if you need further assistance, please contact Apple Developer Program Support. https://developer.apple.com/support", "creationTimestamp": "2026-04-14T09:29:12Z", "userLocale": "en_US", "requestUrl": "https://developer.apple.com/services-contact/solution/execute", "httpCode": 200 } Please please Apple development team: fix this issue, respond to emails and most important: approve the DSA compliance.
Replies
0
Boosts
0
Views
76
Activity
4w
Mac Catalyst App Failed Registering Bundle Identifier
Hi there, New to this forum. I have an iOS/iPadOS app already published in the App Store, and it works great as a Mac Catalyst app on my Mac. However when uploading to App Store Connect, I get the message: Failed Registering Bundle Identifier The app identifier "maccatalyst.nl.lai.prep-app" cannot be registered to your development team because it is not available. Change your bundle identifier to a unique string to try again. So the organizer adds the maccatalyst in front of the Bundle Identifier automatically, but for some reason I get the message it's not available. I've already added the macOS App as a platform on App Store Connect. The Bundle ID (nl.lai.prep-app) is obviously registered as the app is already available on iOS/iPadOS and I have enabled 'Mac Catalyst' in my App id Configuration on the developer portal. In Xcode macOS (Mac Catalyst) has been added as a destination. I contacted developer support, but they couldn't see anything wrong 🤷‍♂️ and suggested I would ask the developer community on the developer forum for advice, so here I am. Who has suggestions on what I should do?
Replies
3
Boosts
0
Views
65
Activity
3w
Xcode Signing & Capabilities Errors
Getting a couple of errors on the Signing & Capabilities section in Xcode when trying to provision my iPhone for on-device prototyping. "Communication with Apple failed Your team has no devices from which to generate a provisioning profile. Connect a device to use or manually add device IDs in Certificates, Identifiers & Profiles. https://developer.apple.com/account/" "No profiles for 'com.danieljbuckley.Throwaway' were found Xcode couldn't find any iOS App Development provisioning profiles matching 'com.danieljbuckley.Throwaway'." Any ideas on how to resolve this?
Replies
1
Boosts
0
Views
51
Activity
4w
Critical Bug — Cannot Submit or Delete Draft Response to Guideline 5.6.4 Notice — App at Risk of Removal
Hi everyone, I am hoping someone here has experienced this and can help, because we are in a really difficult position right now. We received a notice from App Review regarding Guideline 5.6.4 and have been working hard to prepare a full response with supporting evidence. The problem is that a draft response exists in App Store Connect that we cannot submit or delete. Every time we click either Submit or Delete Draft, we get the same error: "The resource cannot be found" That is it. No further explanation, no workaround, nothing. The draft is just stuck there and we cannot get past it. Because we could not submit through the normal channel, we uploaded a new build with our action plan included in the notes, hoping that would reach the review team. The build has been sitting there unreviewed. We have raised a support ticket with Apple Developer Support and have not received any response. The clock is ticking. App Review has given us a deadline to respond or face removal from the App Store. We have our response ready. We have our evidence ready. We just physically cannot submit it because of what appears to be a technical bug on Apple's side. Has anyone else hit this "resource cannot be found" error on a draft App Review response? Is there any other channel we can use to get this in front of the App Review team directly? We have tried everything we can think of. Any help would be massively appreciated. This is our livelihood and the deadline pressure combined with a broken system is genuinely distressing. Thank you
Replies
2
Boosts
0
Views
108
Activity
3w
Developer ID Installer cert not usable for pkg signing (no Code Signing / 0 identities)
Hello! We built a macOS .pkg using pkgbuild (contains a DMG + postinstall bash script). The pkg works locally on the build machine but fails on other devices manually / via MDM unless signed. We tried signing with a Developer ID Installer certificate, but: security find-identity -p codesigning -v → 0 valid identities security find-identity -v → shows the cert Private key is present in Keychain OpenSSL check shows: X509v3 Extended Key Usage: Critical (Expected one might be: Code Signing) We recreated CSR + cert multiple times (G2 Sub-CA), ensured Login keychain, unlocked keychain, etc., but same result. Question: Why is the Developer ID Installer cert missing Code Signing usage and not recognized for signing? Is there any account restriction or step we might be missing? Any recommendations on resolving this issue. Thanks!
Replies
1
Boosts
0
Views
446
Activity
4w
Best practice for replacing deprecated sem_init/sem_wait in a cross-platform threading layer on macOS (arm64)
Hi all, I'm working on a cross-platform runtime that manages a pool of threads (think game engine / emulator style... dozens of guest threads mapped 1:1 to host pthreads). It was originally written for Linux and Windows and we're now porting to macOS on Apple Silicon. We've hit a wall with a deadlock on macOS and traced it back to our use of POSIX unnamed semaphores (sem_init / sem_wait / sem_post) for thread suspend and resume. We were unaware these have never actually been implemented on macOS, sem_init silently returns -1 with ENOSYS and then sem_wait just hangs forever. That explains our deadlock. The tricky part is how we use them. Our suspend mechanism works by sending SIGUSR1 to a target thread via pthread_kill. The signal handler then calls sem_wait to block the thread in place until another thread calls sem_post to resume it. So whatever we replace sem_init/sem_wait with needs to be safe to call from inside a signal handler. From what I can tell: dispatch_semaphore_wait is not documented as async-signal-safe pthread_cond_wait is also not async-signal-safe os_sync_wait_on_address looks promising but requires macOS 14.4+ which is a pretty high floor We could spin on a std::atomic with .wait() / .notify_all() but I've seen reports of high wake latency (up to 15ms) in libc++'s implementation on macOS My questions: What's the recommended way to block a thread inside a signal handler on macOS? Is there an async-signal-safe wait primitive I'm missing? Would restructuring to avoid blocking in the signal handler entirely be the better approach? For example, having the signal handler just set an atomic flag and then checking it at yield points — would that be the expected pattern on macOS? For the non-signal-handler suspend/resume paths, is dispatch_semaphore_t the right replacement for sem_t, or is there something better suited for high-frequency thread synchronization in 2026? Separately, we're also using ucontext (makecontext/swapcontext) for a fiber system on macOS and hitting issues on native arm64, it works under Rosetta but breaks natively. We have a setjmp/longjmp + manual stack pivot backend we can switch to. Is there any plan to fix or un-deprecate the ucontext functions on arm64, or should we just move off them permanently?
Replies
2
Boosts
0
Views
171
Activity
3w