Overview

Post

Replies

Boosts

Views

Activity

Gesture & SimultaneousGesture interfere with ScrollView behaviour.
I have faced a problem while I was trying to implement a reorder drag & drop view. I found that when I add any kind of .gesture or .simultaneousGesture, a ScrollView's scrolling behavior wasn't working properly (does not scroll at all). ScrollView(.vertical, showsIndicators: false) { ForEach($items) { $item in EditorCard(stepDetails: item) .simultaneousGesture( customCombinedGesture(item) ) } } This ScrollView worked fine with .onLongPressGesture(), however, I wanted to use custom gestures sequences.
0
0
129
3w
The app appears to share the user’s personal data with a third-party AI service
Hi, I am publishing an app for the first time. Need help. My app helps user in digitizing voice notes along with visiting cards for Expo sales leaders. The app uses Gemini AI at the backend for analyzing this data. But, the app does not send any 'user data' i.e. user name, email etc to AI. I got the following observation. The app appears to share the user’s personal data with a third-party AI service but the app does not clearly explain what data is sent, identify who the data is sent to, and ask the user’s permission before sharing the data. Apps may only use, transmit, or share personal data after they meet all of the following requirements: Disclose what data will be sent Specify who the data is sent to Obtain the user’s permission before sending data Identify in the privacy policy what data the app collects, how it collects that data, all uses of that data, and confirm any third party the app shares data with provides the same or equal protection What should I do? Should I mention that the app does not send any user data to the third party AI? Should I declare this data in the app privacy section? Thanks in advance!
0
0
64
3w
DeviceActivityReportExtension: NSExtensionPrincipalClass required by App Store but rejected at runtime
I'm experiencing a contradictory validation issue with DeviceActivityReportExtension that creates an impossible situation: The Problem: Without NSExtensionPrincipalClass in Info.plist → App Store Connect rejects upload with: "Missing Info.plist values. No values for NSExtensionMainStoryboard or NSExtensionPrincipalClass found" With NSExtensionPrincipalClass → Local install fails with: "defines either an NSExtensionMainStoryboard or NSExtensionPrincipalClass key, which is not allowed for the extension point com.apple.deviceactivityui.report-extension" Setup: Extension point: com.apple.deviceactivityui.report-extension Using SwiftUI with @main attribute and DeviceActivityReportExtension protocol Xcode 16.2, iOS 17.6 deployment target Code structure: @main struct SpoolReport: DeviceActivityReportExtension { var body: some DeviceActivityReportScene { // Report scenes here } } The extension builds and runs perfectly without NSExtensionPrincipalClass, but cannot be uploaded to App Store Connect. Adding the key allows upload but breaks local installation. Is this a known issue? Is there a workaround or correct Info.plist configuration for DeviceActivityReportExtension? Thank you!
10
2
652
3w
QWAC validation
Hello there, Starting from iOS 18.4, support was included for QWAC Validation and QCStatements. Using the official QWAC Validator at: https://eidas.ec.europa.eu/efda/qwac-validation-tool I was able to check that the domain "eidas.ec.europa.eu" has a valid QWAC certificate. However, when trying to obtain the same result using the new API, I do not obtain the same result. Here is my sample playground code: import Foundation import Security import PlaygroundSupport PlaygroundPage.current.needsIndefiniteExecution = true @MainActor class CertificateFetcher: NSObject, URLSessionDelegate { private let url: URL init(url: URL) { self.url = url super.init() } func start() { let session = URLSession(configuration: .ephemeral, delegate: self, delegateQueue: nil) let task = session.dataTask(with: url) { data, response, error in if let error = error { print("Error during request: \(error)") } else { print("Request completed.") } } task.resume() } nonisolated func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { guard let trust = challenge.protectionSpace.serverTrust else { completionHandler(.cancelAuthenticationChallenge, nil) return } if let certificates = SecTrustCopyCertificateChain(trust) as? [SecCertificate] { self.checkQWAC(certificates: certificates) } let credential = URLCredential(trust: trust) completionHandler(.useCredential, credential) } nonisolated func checkQWAC(certificates: [SecCertificate]) { let policy = SecPolicyCreateSSL(true, nil) var trust: SecTrust? guard SecTrustCreateWithCertificates(certificates as CFArray, policy, &trust) == noErr, let trust else { print("Unable to create SecTrust") return } var error: CFError? guard SecTrustEvaluateWithError(trust, &error) else { print("Trust evaluation failed") return } guard let result = SecTrustCopyResult(trust) as? [String : Any] else { print("No result dictionary") return } let qwacStatus = result[kSecTrustQWACValidation as String] let qcStatements = result[kSecTrustQCStatements as String] print("QWAC Status: \(String(describing: qwacStatus))") print("QC Statements: \(String(describing: qcStatements))") } } let url = URL(string: "https://eidas.ec.europa.eu/")! let fetcher = CertificateFetcher(url: url) fetcher.start() Which prints: QWAC Status: nil QC Statements: nil Request completed. Am I making a mistake while using the Security framework? I would greatly appreciate any help or guidance you can provide.
6
0
287
3w
Questions on Promo/Offer Code Validation and Functionality for In-App Purchases
We are implementing promo/offer codes for our iOS app’s subscription in-app purchases and have several technical questions regarding validation, receipt data, and integration. Could you please provide guidance on the following points? Testing/Validating Custom Codes Without Production Release: How can we validate custom promo/offer codes in a non-production environment? Current documentation indicates promo codes only work in production, requiring app submission and future release date setup for testing. Receipt Data for Redeemed Codes: The receipt currently includes only offer_code_ref_name, not the exact redeemed code (e.g., “ABC123”) entered by the user. Is there a way to retrieve the specific offer code used via receipts, App Store Server API, or other endpoints? Server-Side Validation Best Practices: What are the recommended best practices for server-side validation of offer codes, including using App Store Server API for transaction verification? Passing appAccountToken for Coupons: How can we pass an appAccountToken when users redeem coupon/offer codes (e.g., via presentOfferCodeRedeemSheet or redemption flows)? StoreKit purchase options support it for regular purchases but not redemption sheets. Callbacks on Coupon Redemption: Is there a client-side callback or notification (e.g., via updatedTransactions or StoreKit observers) when a user successfully redeems a coupon code in the app? Server notifications are received, but app-side feedback appears unreliable.
1
0
178
3w
In-App Purchases not loading in production / TestFlight — Previously missing Paid Apps Agreement — App rejected under Guideline 3.1.2
Hello, My app was rejected on iPad (iPad Air 11-inch M3, iPadOS 26.2.1) with two related issues: Guideline 2.1 – Performance – App Completeness “The app exhibited one or more bugs that would negatively impact users. Bug description: the premium subscription cannot be loaded properly.” Guideline 3.1.2 – Business – Payments – Subscriptions “The submission did not include all the required information for apps offering auto-renewable subscriptions.” I am using StoreKit 2 with SubscriptionStoreView to present the auto-renewable subscription. During development: Subscriptions load correctly in the simulator (sandbox). On real devices, I test without a local StoreKit configuration file to fetch products from App Store Connect. The subscription UI (title, duration, price) displays correctly when products are returned. At the time of review, the Paid Apps Agreement was not active. I suspect this may have caused the subscription products to fail loading on the review device. Since then: Paid Apps Agreement is now Active. SubscriptionStoreView should automatically show required metadata. Because the subscription failed to load on iPad during review, the required information (title, price, duration) was not visible, which likely triggered the 3.1.2 rejection. Additionally, in TestFlight I sometimes see inconsistent behavior where the app appears but cannot be installed (“App Not Available”). Also, my app was rejected, but the subscription is still waiting for review. I would really appreciate guidance on the following: Am I potentially missing any required configuration that could prevent products from loading in production? Is there any propagation delay after activating the Paid Apps Agreement that could affect product availability? If I am overlooking something in configuration or testing, please let me know what I should specifically verify before resubmitting. Thank you very much for your help.
1
1
236
3w
App being In Review for multiple days
My app has been stuck on "In Review" for about 3 days now. Before that, it also spent around 3 days in "Waiting for Review," so the total time has been close to 6 days. From what I’ve seen in the past, it usually takes 2–3 days to move from "Waiting for Review" to "In Review," and then only a few hours to get a decision once the review actually starts. However, this time it seems different. Based on my server/Firebase logs, it doesn’t look like the reviewer has opened the app yet or created a test account, so it seems like the review may not have actually started. This is my first app submission, so I’m not sure if that might affect the timeline. Has anyone experienced something similar recently? Is this normal, or is there something I should do (for example contacting App Review or requesting an expedited review)? Any advice would be appreciated.
1
0
85
3w
Apple Developer Program Enrollment Stuck for Over 2 Weeks
Hello, I enrolled in the Apple Developer Program and placed the $99 order. Shortly after, I received the email saying: “Thank you for your order. Your order request will be processed within 2 business days.” However, it has now been over two weeks and my membership has still not been activated. I also contacted Apple Developer Support about a week ago through the contact form, but unfortunately I have not received any reply so far. When I visit aninterestingwebsite.com, I still see the page prompting me to complete or place the order, even though I already placed it and received the confirmation email. Could someone from Apple please check the status of my enrollment or advise what I should do next? Thank you.
1
1
89
3w
App distributed but IAP - is waiting for review.
Hi, My app VITTRA has been approved and is live on the App Store. also i have already pushed even another update …However, I submitted two in-app purchases along with the app: 1. VITTRA Pro (Non-Consumable) — Status: “In Review” 2. AI Scan Pack (Consumable) — Status: “Waiting for Review” The app binary was approved and distributed, but the IAPs are still under review. My app’s core functionality depends on these purchases being available to users. A few questions: 1. Is it normal for IAPs to remain in review after the app itself has been approved and distributed? 2. Is there an expected timeline for IAP reviews when submitted alongside a new app? 3. Is there anything I can do to expedite the process, or should I just wait? Any guidance would be appreciated. Its a real frustrating situation and there is not a single response from the support. Thanks!
2
0
153
3w
Lost connection to my iphone
I was developing on Xcode and downloading and testing just fine. Today when I connect (via cable), clean, build and run the system When I look in the iPhone ->settings -> General ->VPN & Device Management it does not list my developers tag. How do I get the two talking again. I have restarted the MAC (Xcode) and the iPhone multiple times.
1
0
51
3w
Request Guidance on Apple Pay Web Push Provisioning Enablement for Issuer Program Post Content:
We are currently supporting an Apple Pay-enabled card program as an issuer/issuer processor and have successfully completed In-App Push Provisioning integration within our iOS application. The in-app flow is fully operational, including issuer-side cryptographic exchange and Mastercard MDES network tokenization. We are now looking to extend this integration to support Apple Pay Web Push Provisioning, allowing cardholders to add eligible cards to Apple Wallet directly from our web application. We would appreciate guidance on: -The process for enrolling in Apple Business Register (if required) -Enabling Web Push Provisioning for an issuer profile Required entitlements or provisioning certificates Any additional onboarding steps specific to issuer-level Web provisioning We understand that Web Push Provisioning requires issuer-level enablement beyond standard Apple Pay on the Web, and we would like clarification on the correct path to activate this capability. Thank you in advance for your guidance.
2
2
1.4k
3w
iOS 27 feature suggestion
I am requesting a dedicated toggle in Settings > Display & Brightness (or Accessibility) to enable/disable the Liquid Glass UI effects so that I am able to get frosted glass thingy effect that was in iOS 18 back.
Topic: Design SubTopic: General Tags:
1
0
929
3w
Apple CDN Returning HTML Instead of JSON for AASA File – Invalid Character '<' Error (Universal Links)
We are experiencing an issue where Apple’s CDN is not fetching the updated apple-app-site-association (AASA) file correctly for our domain. Domain - app.myloft-stage.com AASA File Locations (Both Return Correct JSON): https://app.myloft-stage.com/.well-known/apple-app-site-association https://app.myloft-stage.com/apple-app-site-association Both endpoints: Return HTTP 200 Return valid JSON Content-Type: application/json No redirects Valid SSL certificate JSON validated and correctly formatted Apple CDN URL - https://app-site-association.cdn-apple.com/a/v1/app.myloft-stage.com Error Returned by Apple CDN - {"cause":"invalid character '\u003c' looking for beginning of value"} This error indicates that Apple CDN is receiving HTML content (starting with <) instead of JSON, even though the origin server returns proper JSON. Observations : Direct access to AASA file returns correct JSON. Apple CDN appears to be caching an older or incorrect response. The CDN response does not match the current server response. Universal Links fail due to this incorrect AASA retrieval.
1
0
110
3w
Orphaned XCode simulator disk images
Recently I noticed that although my drive showed ~800Gb of usage, the folders within totally to around ~600Gb (and yes I was including hidden 'dot' files/folders. After some inspection I found that there are a whole set of Disk Media Images, that appear to be related to XCode simulators. Here's an extract from the command line diskutil list command: /dev/disk5 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +17.6 GB disk5 Physical Store disk4s1 1: APFS Volume iOS 26.2 Simulator 17.1 GB disk5s1 /dev/disk6 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +14.2 GB disk6 1: Apple_APFS Container disk7 14.2 GB disk6s1 /dev/disk7 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +14.2 GB disk7 Physical Store disk6s1 1: APFS Volume XROS 26.2 Simulator 13.8 GB disk7s1 /dev/disk8 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +17.2 GB disk8 1: Apple_APFS Container disk9 17.2 GB disk8s1 /dev/disk9 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +17.2 GB disk9 Physical Store disk8s1 1: APFS Volume iOS 26.0 Simulator 16.7 GB disk9s1 /dev/disk10 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +8.5 GB disk10 1: Apple_APFS Container disk11 8.5 GB disk10s1 /dev/disk11 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +8.5 GB disk11 Physical Store disk10s1 1: APFS Volume XROS 2.5 Simulator B... 8.2 GB disk11s1 /dev/disk12 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +18.0 GB disk12 1: Apple_APFS Container disk13 18.0 GB disk12s1 /dev/disk13 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +18.0 GB disk13 Physical Store disk12s1 1: APFS Volume XROS 2.5 Simulator 17.5 GB disk13s1 /dev/disk14 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +17.6 GB disk14 1: Apple_APFS Container disk15 17.6 GB disk14s1 /dev/disk15 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +17.6 GB disk15 Physical Store disk14s1 1: APFS Volume iOS 26.1 Simulator 17.1 GB disk15s1 /dev/disk16 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +14.1 GB disk16 1: Apple_APFS Container disk17 14.1 GB disk16s1 /dev/disk17 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +14.1 GB disk17 Physical Store disk16s1 1: APFS Volume XROS 26.1 Simulator 13.7 GB disk17s1 /dev/disk18 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +17.6 GB disk18 1: Apple_APFS Container disk19 17.6 GB disk18s1 /dev/disk19 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +17.6 GB disk19 Physical Store disk18s1 1: APFS Volume iOS 26.1 Simulator 17.1 GB disk19s1 /dev/disk20 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +9.1 GB disk20 1: Apple_APFS Container disk21 9.1 GB disk20s1 /dev/disk21 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +9.1 GB disk21 Physical Store disk20s1 1: APFS Volume iOS 18.5 Simulator B... 8.8 GB disk21s1 /dev/disk22 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +20.7 GB disk22 1: Apple_APFS Container disk23 20.7 GB disk22s1 /dev/disk23 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +20.7 GB disk23 Physical Store disk22s1 1: APFS Volume iOS 18.5 Simulator 20.2 GB disk23s1 I am unable to unmount them, either from the command line or Disk Utility. How do I go about this?
1
0
83
3w
Unable to Locate Pending Terms & Conditions in App Store Connect
Hi, For the past week, I’ve been receiving the following warning when performing a sales figures sync through AppFigures: “[Apple ID] has new terms to agree to in App Store Connect. We will try to continue importing but some data may not be available. Please log in to your App Store Connect account and accept the Terms & Conditions.” However, when I log in to App Store Connect and review the Agreements, Tax, and Banking section, there are no pending agreements or new terms requiring acceptance. All agreements appear to be active and in effect. Because the warning persists, I’m wondering whether there may be a backend agreement or updated term that is not properly surfacing in the interface. While inspecting the page, I also noticed the following console warnings on appstoreconnect.apple.com: tb-alertbox--warn ng-isolate-scope is not valid I’m not sure whether this is related, but I wanted to mention it in case it could be preventing a required agreement notice from displaying. Thank you for your assistance.
1
1
111
3w
Questions about migrating accounts between ServiceIDs
Our organization operates a web platform that hosts numerous newspaper properties. We recently acquired a new newspaper and are in the process of integrating it into our platform. As part of this transition, we’ve successfully transferred the App and App ID for the acquired newspaper into our Apple Developer portal. However, no Service ID associated with Sign in with Apple was included in the transfer. Our current implementation uses a single, unified Service ID for all existing newspaper properties. This Service ID facilitates OAuth via a centralized Identity Server. The organization we acquired provided a CSV file containing a list of transport_ids, and based on our understanding, we’re expected to use the Apple endpoint: https://appleid.apple.com/auth/usermigrationinfo to initiate a registration process by submitting our Service ID (client_id) along with each transport ID. This step is required before users can sign in, and it should return the existing relay email address. We have a few key concerns: Service ID Compatibility It appears that users cannot be transferred between Service IDs. In our case, there are now two: a.) Our existing Service ID (used across all current newspaper properties) b.) A separate Service ID previously associated with the acquired newspaper 3.) Due to architectural constraints, our platform cannot dynamically toggle between multiple Apple Service IDs. All properties authenticate through our unified Identity Server bound to our existing Service ID. 4.) Is it possible to call /usermigrationinfo using our existing Service ID rather than the one originally used by the acquired property? 5.) Relay Email and Apple ID Consistency 6.) We’re seeing conflicting information about whether the Apple relay email address (@privaterelay.appleid.com) and the Apple user ID are preserved during this migration. Some sources suggest that the relay email and Apple ID are tightly coupled to both the Service ID and Team ID. 7.) If we call /usermigrationinfo with our existing Service ID, will the same relay email be returned, or will Apple issue a new one?
1
0
365
3w
isEligibleForAgeFeatures: wrong minimum OS version
Dear Apple, while implementing Declared Age Range API in my app, I've noticed a mistake in documentation: the isEligibleForAgeFeatures property is marked 26.0+ in documentation, but 26.2+ in Xcode, which ultimately leads to inability to use it with OS below 26.2. Moreover, I'm thoroughly confused by this quote from documentation: This flag returns true on iOS and iPadOS based on a person’s eligibility and always returns false on macOS. It leads me to two questions: Is it possible to use Declared Age Range API for macOS apps? Will it be possible to use it in future? Will there be any changes regarding this matter in a meantime (especially after Jan 1st)? If yes - when should we expect these changes? If no - why this API declares macOS 26+ support alongside iOS/iPadOS, if it simply doesn't work for macOS now? As of now, my iOS app works flawlessly with given API (on iOS 26.2) while macOS app returns isEligibleForAgeFeatures = false and requestAgeRange request always throws AgeRangeService.Error.notAvailable. Also, does it mean that one should not use isEligibleForAgeFeatures boolean while implementing Declared Age Range API for apps below iOS 26.2 (I mean 26.0+)? Or implementing given API for iOS 26.2+ is a sufficient way to go? So shouldn't the whole API be marked as 26.2+? The minimum iOS version in my app is 16.0 and minimum macOS version is 13.0 anyway, so the significant part of users is left out of these updates, but the main goal here is legal compliance.
1
0
297
3w
Effectively distinguish API not available and real error cases
Given that we can't use isEligibleForAgeFeatures property on macOS, the documentation states that In macOS, isEligibleForAgeFeatures returns false because the system doesn’t require Age Assurance for the person or device. However, you can still call requestAgeRange in macOS to get the declared age range. But in unsuitable region the requestAgeRange request always returns DeclaredAgeRange.AgeRangeService.Error.notAvailable which is vague, as it might stand for API being unavailable just as well as "You receive this error when the system prompts a person and they decide not to share their age range with your app. ", as per documentation. Unfortunately, this error fires immediately instead of showing any kind of prompt for user, so the description is definitely wrong (or incomplete) in here. Possible solutions: expand Error cases to separate not available API and not available response expand isEligibleForAgeFeatures to properly support macOS Moreover, unlike iOS, there is still no usable tool or algorithm to test given feature for macOS (mock region, mock age, mock source of approval, revoke declared range, etc). Now I get a review with rejection, stating that I don't have age verification mechanisms present in my app. Also I found out that after filling the App Information regarding Age Ratings it spreads to all fresh releases, so even though my newest macOS release doesn't contain age verification mechanisms yet, it should, as iOS release has got this functionality up and running already and I had to check this when filling Age Ratings questionnaire. Now I'm stuck between removing this capability from App Information, so the macOS release can pass and stalling macOS releases until there is a proper usable API to implement Declared Age Range verification properly (at least the same way as on iOS). How should I properly develop and test this feature for macOS before releasing it publicly?
0
0
96
3w
Gesture & SimultaneousGesture interfere with ScrollView behaviour.
I have faced a problem while I was trying to implement a reorder drag & drop view. I found that when I add any kind of .gesture or .simultaneousGesture, a ScrollView's scrolling behavior wasn't working properly (does not scroll at all). ScrollView(.vertical, showsIndicators: false) { ForEach($items) { $item in EditorCard(stepDetails: item) .simultaneousGesture( customCombinedGesture(item) ) } } This ScrollView worked fine with .onLongPressGesture(), however, I wanted to use custom gestures sequences.
Replies
0
Boosts
0
Views
129
Activity
3w
The app appears to share the user’s personal data with a third-party AI service
Hi, I am publishing an app for the first time. Need help. My app helps user in digitizing voice notes along with visiting cards for Expo sales leaders. The app uses Gemini AI at the backend for analyzing this data. But, the app does not send any 'user data' i.e. user name, email etc to AI. I got the following observation. The app appears to share the user’s personal data with a third-party AI service but the app does not clearly explain what data is sent, identify who the data is sent to, and ask the user’s permission before sharing the data. Apps may only use, transmit, or share personal data after they meet all of the following requirements: Disclose what data will be sent Specify who the data is sent to Obtain the user’s permission before sending data Identify in the privacy policy what data the app collects, how it collects that data, all uses of that data, and confirm any third party the app shares data with provides the same or equal protection What should I do? Should I mention that the app does not send any user data to the third party AI? Should I declare this data in the app privacy section? Thanks in advance!
Replies
0
Boosts
0
Views
64
Activity
3w
DeviceActivityReportExtension: NSExtensionPrincipalClass required by App Store but rejected at runtime
I'm experiencing a contradictory validation issue with DeviceActivityReportExtension that creates an impossible situation: The Problem: Without NSExtensionPrincipalClass in Info.plist → App Store Connect rejects upload with: "Missing Info.plist values. No values for NSExtensionMainStoryboard or NSExtensionPrincipalClass found" With NSExtensionPrincipalClass → Local install fails with: "defines either an NSExtensionMainStoryboard or NSExtensionPrincipalClass key, which is not allowed for the extension point com.apple.deviceactivityui.report-extension" Setup: Extension point: com.apple.deviceactivityui.report-extension Using SwiftUI with @main attribute and DeviceActivityReportExtension protocol Xcode 16.2, iOS 17.6 deployment target Code structure: @main struct SpoolReport: DeviceActivityReportExtension { var body: some DeviceActivityReportScene { // Report scenes here } } The extension builds and runs perfectly without NSExtensionPrincipalClass, but cannot be uploaded to App Store Connect. Adding the key allows upload but breaks local installation. Is this a known issue? Is there a workaround or correct Info.plist configuration for DeviceActivityReportExtension? Thank you!
Replies
10
Boosts
2
Views
652
Activity
3w
QWAC validation
Hello there, Starting from iOS 18.4, support was included for QWAC Validation and QCStatements. Using the official QWAC Validator at: https://eidas.ec.europa.eu/efda/qwac-validation-tool I was able to check that the domain "eidas.ec.europa.eu" has a valid QWAC certificate. However, when trying to obtain the same result using the new API, I do not obtain the same result. Here is my sample playground code: import Foundation import Security import PlaygroundSupport PlaygroundPage.current.needsIndefiniteExecution = true @MainActor class CertificateFetcher: NSObject, URLSessionDelegate { private let url: URL init(url: URL) { self.url = url super.init() } func start() { let session = URLSession(configuration: .ephemeral, delegate: self, delegateQueue: nil) let task = session.dataTask(with: url) { data, response, error in if let error = error { print("Error during request: \(error)") } else { print("Request completed.") } } task.resume() } nonisolated func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -&gt; Void) { guard let trust = challenge.protectionSpace.serverTrust else { completionHandler(.cancelAuthenticationChallenge, nil) return } if let certificates = SecTrustCopyCertificateChain(trust) as? [SecCertificate] { self.checkQWAC(certificates: certificates) } let credential = URLCredential(trust: trust) completionHandler(.useCredential, credential) } nonisolated func checkQWAC(certificates: [SecCertificate]) { let policy = SecPolicyCreateSSL(true, nil) var trust: SecTrust? guard SecTrustCreateWithCertificates(certificates as CFArray, policy, &amp;trust) == noErr, let trust else { print("Unable to create SecTrust") return } var error: CFError? guard SecTrustEvaluateWithError(trust, &amp;error) else { print("Trust evaluation failed") return } guard let result = SecTrustCopyResult(trust) as? [String : Any] else { print("No result dictionary") return } let qwacStatus = result[kSecTrustQWACValidation as String] let qcStatements = result[kSecTrustQCStatements as String] print("QWAC Status: \(String(describing: qwacStatus))") print("QC Statements: \(String(describing: qcStatements))") } } let url = URL(string: "https://eidas.ec.europa.eu/")! let fetcher = CertificateFetcher(url: url) fetcher.start() Which prints: QWAC Status: nil QC Statements: nil Request completed. Am I making a mistake while using the Security framework? I would greatly appreciate any help or guidance you can provide.
Replies
6
Boosts
0
Views
287
Activity
3w
Questions on Promo/Offer Code Validation and Functionality for In-App Purchases
We are implementing promo/offer codes for our iOS app’s subscription in-app purchases and have several technical questions regarding validation, receipt data, and integration. Could you please provide guidance on the following points? Testing/Validating Custom Codes Without Production Release: How can we validate custom promo/offer codes in a non-production environment? Current documentation indicates promo codes only work in production, requiring app submission and future release date setup for testing. Receipt Data for Redeemed Codes: The receipt currently includes only offer_code_ref_name, not the exact redeemed code (e.g., “ABC123”) entered by the user. Is there a way to retrieve the specific offer code used via receipts, App Store Server API, or other endpoints? Server-Side Validation Best Practices: What are the recommended best practices for server-side validation of offer codes, including using App Store Server API for transaction verification? Passing appAccountToken for Coupons: How can we pass an appAccountToken when users redeem coupon/offer codes (e.g., via presentOfferCodeRedeemSheet or redemption flows)? StoreKit purchase options support it for regular purchases but not redemption sheets. Callbacks on Coupon Redemption: Is there a client-side callback or notification (e.g., via updatedTransactions or StoreKit observers) when a user successfully redeems a coupon code in the app? Server notifications are received, but app-side feedback appears unreliable.
Replies
1
Boosts
0
Views
178
Activity
3w
In-App Purchases not loading in production / TestFlight — Previously missing Paid Apps Agreement — App rejected under Guideline 3.1.2
Hello, My app was rejected on iPad (iPad Air 11-inch M3, iPadOS 26.2.1) with two related issues: Guideline 2.1 – Performance – App Completeness “The app exhibited one or more bugs that would negatively impact users. Bug description: the premium subscription cannot be loaded properly.” Guideline 3.1.2 – Business – Payments – Subscriptions “The submission did not include all the required information for apps offering auto-renewable subscriptions.” I am using StoreKit 2 with SubscriptionStoreView to present the auto-renewable subscription. During development: Subscriptions load correctly in the simulator (sandbox). On real devices, I test without a local StoreKit configuration file to fetch products from App Store Connect. The subscription UI (title, duration, price) displays correctly when products are returned. At the time of review, the Paid Apps Agreement was not active. I suspect this may have caused the subscription products to fail loading on the review device. Since then: Paid Apps Agreement is now Active. SubscriptionStoreView should automatically show required metadata. Because the subscription failed to load on iPad during review, the required information (title, price, duration) was not visible, which likely triggered the 3.1.2 rejection. Additionally, in TestFlight I sometimes see inconsistent behavior where the app appears but cannot be installed (“App Not Available”). Also, my app was rejected, but the subscription is still waiting for review. I would really appreciate guidance on the following: Am I potentially missing any required configuration that could prevent products from loading in production? Is there any propagation delay after activating the Paid Apps Agreement that could affect product availability? If I am overlooking something in configuration or testing, please let me know what I should specifically verify before resubmitting. Thank you very much for your help.
Replies
1
Boosts
1
Views
236
Activity
3w
App being In Review for multiple days
My app has been stuck on "In Review" for about 3 days now. Before that, it also spent around 3 days in "Waiting for Review," so the total time has been close to 6 days. From what I’ve seen in the past, it usually takes 2–3 days to move from "Waiting for Review" to "In Review," and then only a few hours to get a decision once the review actually starts. However, this time it seems different. Based on my server/Firebase logs, it doesn’t look like the reviewer has opened the app yet or created a test account, so it seems like the review may not have actually started. This is my first app submission, so I’m not sure if that might affect the timeline. Has anyone experienced something similar recently? Is this normal, or is there something I should do (for example contacting App Review or requesting an expedited review)? Any advice would be appreciated.
Replies
1
Boosts
0
Views
85
Activity
3w
Apple Developer Program Enrollment Stuck for Over 2 Weeks
Hello, I enrolled in the Apple Developer Program and placed the $99 order. Shortly after, I received the email saying: “Thank you for your order. Your order request will be processed within 2 business days.” However, it has now been over two weeks and my membership has still not been activated. I also contacted Apple Developer Support about a week ago through the contact form, but unfortunately I have not received any reply so far. When I visit aninterestingwebsite.com, I still see the page prompting me to complete or place the order, even though I already placed it and received the confirmation email. Could someone from Apple please check the status of my enrollment or advise what I should do next? Thank you.
Replies
1
Boosts
1
Views
89
Activity
3w
App distributed but IAP - is waiting for review.
Hi, My app VITTRA has been approved and is live on the App Store. also i have already pushed even another update …However, I submitted two in-app purchases along with the app: 1. VITTRA Pro (Non-Consumable) — Status: “In Review” 2. AI Scan Pack (Consumable) — Status: “Waiting for Review” The app binary was approved and distributed, but the IAPs are still under review. My app’s core functionality depends on these purchases being available to users. A few questions: 1. Is it normal for IAPs to remain in review after the app itself has been approved and distributed? 2. Is there an expected timeline for IAP reviews when submitted alongside a new app? 3. Is there anything I can do to expedite the process, or should I just wait? Any guidance would be appreciated. Its a real frustrating situation and there is not a single response from the support. Thanks!
Replies
2
Boosts
0
Views
153
Activity
3w
Lost connection to my iphone
I was developing on Xcode and downloading and testing just fine. Today when I connect (via cable), clean, build and run the system When I look in the iPhone ->settings -> General ->VPN & Device Management it does not list my developers tag. How do I get the two talking again. I have restarted the MAC (Xcode) and the iPhone multiple times.
Replies
1
Boosts
0
Views
51
Activity
3w
Request Guidance on Apple Pay Web Push Provisioning Enablement for Issuer Program Post Content:
We are currently supporting an Apple Pay-enabled card program as an issuer/issuer processor and have successfully completed In-App Push Provisioning integration within our iOS application. The in-app flow is fully operational, including issuer-side cryptographic exchange and Mastercard MDES network tokenization. We are now looking to extend this integration to support Apple Pay Web Push Provisioning, allowing cardholders to add eligible cards to Apple Wallet directly from our web application. We would appreciate guidance on: -The process for enrolling in Apple Business Register (if required) -Enabling Web Push Provisioning for an issuer profile Required entitlements or provisioning certificates Any additional onboarding steps specific to issuer-level Web provisioning We understand that Web Push Provisioning requires issuer-level enablement beyond standard Apple Pay on the Web, and we would like clarification on the correct path to activate this capability. Thank you in advance for your guidance.
Replies
2
Boosts
2
Views
1.4k
Activity
3w
iOS 27 feature suggestion
I am requesting a dedicated toggle in Settings > Display & Brightness (or Accessibility) to enable/disable the Liquid Glass UI effects so that I am able to get frosted glass thingy effect that was in iOS 18 back.
Topic: Design SubTopic: General Tags:
Replies
1
Boosts
0
Views
929
Activity
3w
Apple CDN Returning HTML Instead of JSON for AASA File – Invalid Character '<' Error (Universal Links)
We are experiencing an issue where Apple’s CDN is not fetching the updated apple-app-site-association (AASA) file correctly for our domain. Domain - app.myloft-stage.com AASA File Locations (Both Return Correct JSON): https://app.myloft-stage.com/.well-known/apple-app-site-association https://app.myloft-stage.com/apple-app-site-association Both endpoints: Return HTTP 200 Return valid JSON Content-Type: application/json No redirects Valid SSL certificate JSON validated and correctly formatted Apple CDN URL - https://app-site-association.cdn-apple.com/a/v1/app.myloft-stage.com Error Returned by Apple CDN - {"cause":"invalid character '\u003c' looking for beginning of value"} This error indicates that Apple CDN is receiving HTML content (starting with <) instead of JSON, even though the origin server returns proper JSON. Observations : Direct access to AASA file returns correct JSON. Apple CDN appears to be caching an older or incorrect response. The CDN response does not match the current server response. Universal Links fail due to this incorrect AASA retrieval.
Replies
1
Boosts
0
Views
110
Activity
3w
Orphaned XCode simulator disk images
Recently I noticed that although my drive showed ~800Gb of usage, the folders within totally to around ~600Gb (and yes I was including hidden 'dot' files/folders. After some inspection I found that there are a whole set of Disk Media Images, that appear to be related to XCode simulators. Here's an extract from the command line diskutil list command: /dev/disk5 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +17.6 GB disk5 Physical Store disk4s1 1: APFS Volume iOS 26.2 Simulator 17.1 GB disk5s1 /dev/disk6 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +14.2 GB disk6 1: Apple_APFS Container disk7 14.2 GB disk6s1 /dev/disk7 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +14.2 GB disk7 Physical Store disk6s1 1: APFS Volume XROS 26.2 Simulator 13.8 GB disk7s1 /dev/disk8 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +17.2 GB disk8 1: Apple_APFS Container disk9 17.2 GB disk8s1 /dev/disk9 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +17.2 GB disk9 Physical Store disk8s1 1: APFS Volume iOS 26.0 Simulator 16.7 GB disk9s1 /dev/disk10 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +8.5 GB disk10 1: Apple_APFS Container disk11 8.5 GB disk10s1 /dev/disk11 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +8.5 GB disk11 Physical Store disk10s1 1: APFS Volume XROS 2.5 Simulator B... 8.2 GB disk11s1 /dev/disk12 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +18.0 GB disk12 1: Apple_APFS Container disk13 18.0 GB disk12s1 /dev/disk13 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +18.0 GB disk13 Physical Store disk12s1 1: APFS Volume XROS 2.5 Simulator 17.5 GB disk13s1 /dev/disk14 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +17.6 GB disk14 1: Apple_APFS Container disk15 17.6 GB disk14s1 /dev/disk15 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +17.6 GB disk15 Physical Store disk14s1 1: APFS Volume iOS 26.1 Simulator 17.1 GB disk15s1 /dev/disk16 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +14.1 GB disk16 1: Apple_APFS Container disk17 14.1 GB disk16s1 /dev/disk17 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +14.1 GB disk17 Physical Store disk16s1 1: APFS Volume XROS 26.1 Simulator 13.7 GB disk17s1 /dev/disk18 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +17.6 GB disk18 1: Apple_APFS Container disk19 17.6 GB disk18s1 /dev/disk19 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +17.6 GB disk19 Physical Store disk18s1 1: APFS Volume iOS 26.1 Simulator 17.1 GB disk19s1 /dev/disk20 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +9.1 GB disk20 1: Apple_APFS Container disk21 9.1 GB disk20s1 /dev/disk21 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +9.1 GB disk21 Physical Store disk20s1 1: APFS Volume iOS 18.5 Simulator B... 8.8 GB disk21s1 /dev/disk22 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme +20.7 GB disk22 1: Apple_APFS Container disk23 20.7 GB disk22s1 /dev/disk23 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +20.7 GB disk23 Physical Store disk22s1 1: APFS Volume iOS 18.5 Simulator 20.2 GB disk23s1 I am unable to unmount them, either from the command line or Disk Utility. How do I go about this?
Replies
1
Boosts
0
Views
83
Activity
3w
App Store reviews taking too long
Has everyone in the app review team decided to take vacation at the same time? I have two apps waiting for almost a week. One of the reviews is just an update. We're paying $99 a year...for what, exactly?
Replies
0
Boosts
0
Views
57
Activity
3w
Unable to Locate Pending Terms & Conditions in App Store Connect
Hi, For the past week, I’ve been receiving the following warning when performing a sales figures sync through AppFigures: “[Apple ID] has new terms to agree to in App Store Connect. We will try to continue importing but some data may not be available. Please log in to your App Store Connect account and accept the Terms & Conditions.” However, when I log in to App Store Connect and review the Agreements, Tax, and Banking section, there are no pending agreements or new terms requiring acceptance. All agreements appear to be active and in effect. Because the warning persists, I’m wondering whether there may be a backend agreement or updated term that is not properly surfacing in the interface. While inspecting the page, I also noticed the following console warnings on appstoreconnect.apple.com: tb-alertbox--warn ng-isolate-scope is not valid I’m not sure whether this is related, but I wanted to mention it in case it could be preventing a required agreement notice from displaying. Thank you for your assistance.
Replies
1
Boosts
1
Views
111
Activity
3w
Live Activity doesn't open watchOS app
Our watchOS App isn't opened when tapping on a Live Activity. Added the following to our Info.plist and still get the Open on iPhone option. <key>WKSupportsLiveActivityLaunchAttributeTypes</key> <array/> Is there something else we need to configure?
Replies
5
Boosts
1
Views
1.5k
Activity
3w
Questions about migrating accounts between ServiceIDs
Our organization operates a web platform that hosts numerous newspaper properties. We recently acquired a new newspaper and are in the process of integrating it into our platform. As part of this transition, we’ve successfully transferred the App and App ID for the acquired newspaper into our Apple Developer portal. However, no Service ID associated with Sign in with Apple was included in the transfer. Our current implementation uses a single, unified Service ID for all existing newspaper properties. This Service ID facilitates OAuth via a centralized Identity Server. The organization we acquired provided a CSV file containing a list of transport_ids, and based on our understanding, we’re expected to use the Apple endpoint: https://appleid.apple.com/auth/usermigrationinfo to initiate a registration process by submitting our Service ID (client_id) along with each transport ID. This step is required before users can sign in, and it should return the existing relay email address. We have a few key concerns: Service ID Compatibility It appears that users cannot be transferred between Service IDs. In our case, there are now two: a.) Our existing Service ID (used across all current newspaper properties) b.) A separate Service ID previously associated with the acquired newspaper 3.) Due to architectural constraints, our platform cannot dynamically toggle between multiple Apple Service IDs. All properties authenticate through our unified Identity Server bound to our existing Service ID. 4.) Is it possible to call /usermigrationinfo using our existing Service ID rather than the one originally used by the acquired property? 5.) Relay Email and Apple ID Consistency 6.) We’re seeing conflicting information about whether the Apple relay email address (@privaterelay.appleid.com) and the Apple user ID are preserved during this migration. Some sources suggest that the relay email and Apple ID are tightly coupled to both the Service ID and Team ID. 7.) If we call /usermigrationinfo with our existing Service ID, will the same relay email be returned, or will Apple issue a new one?
Replies
1
Boosts
0
Views
365
Activity
3w
isEligibleForAgeFeatures: wrong minimum OS version
Dear Apple, while implementing Declared Age Range API in my app, I've noticed a mistake in documentation: the isEligibleForAgeFeatures property is marked 26.0+ in documentation, but 26.2+ in Xcode, which ultimately leads to inability to use it with OS below 26.2. Moreover, I'm thoroughly confused by this quote from documentation: This flag returns true on iOS and iPadOS based on a person’s eligibility and always returns false on macOS. It leads me to two questions: Is it possible to use Declared Age Range API for macOS apps? Will it be possible to use it in future? Will there be any changes regarding this matter in a meantime (especially after Jan 1st)? If yes - when should we expect these changes? If no - why this API declares macOS 26+ support alongside iOS/iPadOS, if it simply doesn't work for macOS now? As of now, my iOS app works flawlessly with given API (on iOS 26.2) while macOS app returns isEligibleForAgeFeatures = false and requestAgeRange request always throws AgeRangeService.Error.notAvailable. Also, does it mean that one should not use isEligibleForAgeFeatures boolean while implementing Declared Age Range API for apps below iOS 26.2 (I mean 26.0+)? Or implementing given API for iOS 26.2+ is a sufficient way to go? So shouldn't the whole API be marked as 26.2+? The minimum iOS version in my app is 16.0 and minimum macOS version is 13.0 anyway, so the significant part of users is left out of these updates, but the main goal here is legal compliance.
Replies
1
Boosts
0
Views
297
Activity
3w
Effectively distinguish API not available and real error cases
Given that we can't use isEligibleForAgeFeatures property on macOS, the documentation states that In macOS, isEligibleForAgeFeatures returns false because the system doesn’t require Age Assurance for the person or device. However, you can still call requestAgeRange in macOS to get the declared age range. But in unsuitable region the requestAgeRange request always returns DeclaredAgeRange.AgeRangeService.Error.notAvailable which is vague, as it might stand for API being unavailable just as well as "You receive this error when the system prompts a person and they decide not to share their age range with your app. ", as per documentation. Unfortunately, this error fires immediately instead of showing any kind of prompt for user, so the description is definitely wrong (or incomplete) in here. Possible solutions: expand Error cases to separate not available API and not available response expand isEligibleForAgeFeatures to properly support macOS Moreover, unlike iOS, there is still no usable tool or algorithm to test given feature for macOS (mock region, mock age, mock source of approval, revoke declared range, etc). Now I get a review with rejection, stating that I don't have age verification mechanisms present in my app. Also I found out that after filling the App Information regarding Age Ratings it spreads to all fresh releases, so even though my newest macOS release doesn't contain age verification mechanisms yet, it should, as iOS release has got this functionality up and running already and I had to check this when filling Age Ratings questionnaire. Now I'm stuck between removing this capability from App Information, so the macOS release can pass and stalling macOS releases until there is a proper usable API to implement Declared Age Range verification properly (at least the same way as on iOS). How should I properly develop and test this feature for macOS before releasing it publicly?
Replies
0
Boosts
0
Views
96
Activity
3w