I have a user (myself, during development) who originally signed in with Apple successfully. I attempted to revoke
access via Settings > Apple ID > Sign-In & Security > Sign in with Apple, but the app appears stuck in the list and
cannot be fully removed. Now when attempting to sign in again, the identity token contains the correct sub but email is
undefined. According to Apple's documentation, "Apple provides the user's email address in the identity token on all
subsequent API responses." I've tried programmatically revoking via the /auth/revoke endpoint (received 200 OK), and
I've implemented the server-to-server notification endpoint to handle consent-revoked events, but subsequent sign-in
attempts still return no email. The same Apple ID works fine with other apps. Is there a way to fully reset the
credential state for a specific app, or is this a known issue with partially-revoked authorizations?
Overview
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
When launching my app (and even a bran new app) on the simulator in debug, the app is installed on the simulator, launched but freezed. Even with a basic hello world app. Any idea?
Hi. I'm a 3D designer, using Blender for most of my work. The most recent Blender conference discussed utilizing the Open Shading Language (OSL) in their latest versions, which allows designers to write custom shaders for their workflows.
At the moment, only Nvidia Optix GPU's can utilize this language for rendering (from what I understand), but Blender developers stated they are waiting on other GPU manufacturers to implement this feature as well. I'm not sure if there are any licensing issues here, but would this be something Apple could implement in Metal to make their hardware more attractive to the 3D design community?
Any help or knowledge on this topic would be greatly appreciated.
Hi, I enrolled and paid on February 4, and I also opened a support case (ID: 20000106619808), but I haven’t received any response yet. My account still shows as “pending,” and I’m not sure what to do next.
Can someone from the Apple team please help or let me know how to get in touch with the right support channel?
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
Hi. I'm trying to show 3D or AR content in multiple pages on an iOS app but I have found that if a RealityView is used earlier in a flow then future uses will never display the camera feed, even if those earlier uses do not use any spatial tracking.
For example, in the following simplified view, the second page realityView will not display the camera feed even though the first view does not use it not start a tracking session.
struct ContentView: View {
var body: some View {
NavigationStack {
VStack {
RealityView { content in
content.camera = .virtual
// showing model skipped for brevity
}
NavigationLink("Second Page") {
RealityView { content in
content.camera = .spatialTracking
}
}
}
}
}
}
What is the way around this so that 3D content can be displayed in multiple places in the app without preventing AR content from working?
I have also found the same problem when wrapping an ARView for use in SwiftUI.
Hello,
I have a question regarding payments for iOS apps in Russia.
Currently, In-App Purchases are not available or do not work for many users in Russia, making it impossible for them to purchase digital subscriptions or digital content via Apple IAP.
Is it allowed to:
use an external payment provider available only in Russia,
show this option only to users located in that region,
and unlock access to digital content after payment is completed outside the app (for example, via a web page),
in cases where Apple IAP is technically unavailable?
Is there any official guidance or exception for regions where Apple IAP cannot be used?
Thank you.
The tutorial only says a notification will be sent, but what happens next..? what should we do about the child account..? are we blocking them..? what happens on the child account?
https://developer.apple.com/documentation/storekit/testing-age-assurance-in-sandbox
As the title suggests, I have a class marked with @Observable. Within the class I have multiple var's. When one of my var's changes (formation), I want to run an updateOrCreateContent(). I had thought I could just do this with a bit of combine, but I'm struggling to get it working...
The code below has a compile error at $formation
When I mark formation @Published, it generates a different compile error: "Invalid redeclaration of synthesized property '_formation'"
any help appreciated
thanks
class LayoutModel {
var players: [Player] = []
var formation: Formation = .f433
var cancellables = Set<AnyCancellable>()
init(players: [Player], formation: Formation) {
self.players = players
self.formation = formation
updateOrCreateContent()
$formation.sink(receiveValue: { _ in
self.updateOrCreateContent()
})
.store(in: &cancellables)
}
I’d like to ask a question regarding Apple Developer Program enrollment for an organization.
I’m currently helping a Singapore-based company register an Apple Developer account. During the enrollment process, Apple requires identity verification for the Account Holder / contact person, including uploading a personal ID document.
My situation is:
The company entity is registered in Singapore
The Account Holder / contact person is based in Mainland China
A valid Mainland China ID card is available
I have a friend who successfully completed a similar enrollment in 2024 using a Mainland China ID for identity verification. However, I’ve recently heard some mixed information suggesting this might no longer be supported, which has caused some confusion.
I’d like to ask if anyone has recent experience (success or failure), or can confirm whether it is currently acceptable to use a Mainland China ID for Account Holder verification when enrolling a Singapore organization.
Any insights or clarification would be greatly appreciated.
Thank you!
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
My computer setup is I work from an account with regular (non-admin) privileges. I login into the admin account to install apps, update the OS, that kind of stuff, but work is from the reduced privileges account.
And, when in it, I cannot preview swiftUI views in Xcode. Incredibly frustrating, have tried everything including a complete wipeout of the disk and reinstall, but no luck.
Don't have any iOS simulator targets installed, it's macOS target I am working on. If I fire up xcode from the admin account it's all good, previes work and so on. Not so in the non-admin account, consistenly getting the "Cannot preview in this file. Failed to launch xxxx"
Also tried elevating the privileges of the account to Admin, rebooting, no luck. Tried creating a new account, non-admin or admin, no luck.
The detailed error repeats something along the lines of:
== PREVIEW UPDATE ERROR:
GroupRecordingError
Error encountered during update group #3
==================================
| FailedToLaunchAppError: Failed to launch GIIK.Mesh-One
|
| /Volumes/Glyph 2TB/Developer/M4Book/Mesh One/DerivedData/Mesh One/Build/Products/Debug/Mesh One.app
|
| ==================================
|
| | [Remote] JITError
| |
| | ==================================
| |
| | | [Remote] XOJITError
| | |
| | | XOJITError: Could not create code file directory for session: Permission denied
Most telling is the double space between directory and for on the last error line, it sounds like a failed string interpolation because the directory name was nil or empty?
This is very frustrating (I also filed FB21900410). Am I missing something obvious? I also dumped the build settings and diffed the admin and non-admin accounts and they are an exact match (save for the path names).
There has to be something that's preventing the non-admin accounts from previewing, anyone know what it might be/where to look?
Cheers,
Topic:
Developer Tools & Services
SubTopic:
Xcode
Dear Apple Developer Program Legal/Compliance Team,
I am writing in response to the termination notice regarding my Apple Developer Program account, in which Apple cites an alleged violation of Section 3.2(f) of the Apple Developer Program License Agreement (ADP Agreement), based on “documented indications of fraudulent conduct.”
I respectfully request formal clarification and detailed information regarding this determination, as I take compliance obligations under Apple’s agreements very seriously.
Specifically, I kindly request the following:
Clarification of Alleged Conduct
Please specify the exact actions, behaviors, or activities that Apple has determined to constitute a violation of Section 3.2(f), including the category of conduct involved (e.g., technical interference, platform misuse, fraudulent activity, distribution abuse, business practice violations, or other).
Scope and Nature of the Evidence
Without requesting disclosure of sensitive internal systems, I respectfully ask for clarification regarding the general nature of the evidence relied upon (e.g., transactional records, system logs, behavioral patterns, policy violations, or platform integrity signals).
Account-Level vs. Application-Level Issues
Please confirm whether the alleged violation relates to:
A specific application or applications,
Account-level activity,
Distribution mechanisms (TestFlight, Custom App Distribution, Ad Hoc, etc.),
Or external operational behavior associated with the developer account.
Opportunity for Rectification or Compliance Remediation
Kindly advise whether Apple provides any compliance remediation pathway, corrective action mechanism, or review process for cases involving Section 3.2(f), including:
Formal reconsideration or appeal procedures,
Regulatory complaint mechanisms,
Compliance audit or corrective action submissions,
Reinstatement eligibility criteria.
Reapplication and Cooling-Off Period Requirements
Please clarify the conditions, requirements, and compliance expectations associated with the stated reapplication restriction period, including whether specific remediation steps, certifications, or compliance documentation may be required prior to any future eligibility review.
My intent is to fully understand the nature of the determination, ensure full legal and contractual compliance, and clarify whether any formal resolution or review mechanisms exist under Apple’s policies or applicable platform regulations.
I respectfully request that this inquiry be handled through the appropriate legal or compliance review channel.
Thank you for your time and consideration.
Sincerely,
Jiuru Song
[Team ID / Developer ID if available]8DJDU79WZ7
[Company Name, if applicable]ASIA DIGITAL ALLIANCE PTE. LTD.
I am developing a standard UAC 2.0 device and encountered an issue where the channel names do not update according to the iChannelNames field in the Class Specific AS Interface Descriptor when switching between different channel counts.
For example:
AS1 (6 channels) is configured with the following channel names:
ADAT 1, ADAT 2, ADAT 3, ADAT 4, HP L, HP R
AS2 (4 channels) is configured with:
ADAT 1, ADAT 2, HP L, HP R
However, when switching from AS1 (6 channels) to AS2 (4 channels), the channel names displayed in Audio MIDI Setup do not reflect the change as expected. The actual result is:
ADAT 1, ADAT 2, ADAT 3, ADAT 4
The system simply hides the last two channels; the names of the remaining channels are not updated.
Initial Topology
My original topology was as follows:
Later, I discovered that macOS uses the iChannelNames field from the Input Terminal to display channel names. Therefore, I modified the USB device descriptors and updated the topology to the following:
To distinguish the channel names for different channel counts, each Input Terminal is assigned a unique iChannelNames value.
This method worked perfectly on macOS 15. However, after updating to macOS 26, this topology no longer displays the correct channel names.
Question
On macOS 26, what is the correct method to ensure that the channel names update dynamically when switching between different audio channel configurations?
Hi everyone,
We’re experiencing an issue with App Store Connect → Sales & Trends (Sales) → Last 24 Hours (hourly) reporting, specifically for In-App Purchase (IAP) sales.
On January 30–31, 2026, when checking Last 24 Hours sales data, we consistently see IAP sales drop to 0 starting around 18:00 UTC, as if no purchases happened after that time.
However, we can confirm that IAP transactions did occur during the same time window using other validation sources (e.g., server-side logs / analytics). In App Store Connect, those hours still show 0.
I did a quick search and found reports of similar behavior affecting downloads/units for some teams, but in our case downloads/units look normal in Last 24 Hours. The problem appears to be only in the IAP sales portion.
Questions:
Is anyone else seeing hourly gaps / 0 values for IAP around Jan 30–31, 2026 (or today)?
Is this a known Sales & Trends reporting delay that eventually backfills, or an ongoing issue?
If you’ve seen this before, how long did it take to normalize/backfill, and did any specific check/filter help?
Is this even possible? Instead of any pairing dialog appearing, my central code get the "Authentication is insufficient" error when reading the characteristic.
My peripheral (in the macOS app) code uses the .notifyEncryptionRequired property and uses .readEncryptionRequired and .writeEncryptionRequired permissions. No descriptors are set, but I think they get added automatically since this characteristic notifies. 2900 and 2902 descriptors are set by the peripheral/CoreBluetooth.
If the Mac and iPhone are using the same Apple ID does that affect pairing?
In WKWebView, there is the WKUIDelegate method:
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {}
This delegate method provides a callback when a new window (for example, target="_blank") is requested in the web view.
However, in native SwiftUI (iOS 26), WebView / WebPage APIs do not provide an equivalent delegate method to handle new window requests.
As a workaround, I am using the following method:
public func decidePolicy(for action: WebPage.NavigationAction, preferences: inout WebPage.NavigationPreferences) async -> WKNavigationActionPolicy {}
In this method, when action.target == nil, I treat it as a new window request.
My question:
Is relying on action.target == nil in decidePolicy a reliable and future-safe way to detect new window requests in SwiftUI’s WebView, or is there a better or more recommended approach for handling target="_blank" / new window navigation in the SwiftUI WebView APIs?
Code:
public func decidePolicy(for action: WebPage.NavigationAction, preferences: inout WebPage.NavigationPreferences) async -> WKNavigationActionPolicy {
guard let webPage = webPage else { return .cancel }
// Handle case where target frame is nil (e.g., target="_blank" or window.open)
// This indicates a new window request
if action.target == nil {
print("Target frame is nil - new window requested")
// WORKAROUND: Until iOS 26 WebPage UI protocol is available, we handle new windows here
// Try to create a new WebPage through UI plugins
if handleCreateWebPage(for: webPage, navigationAction: action) != nil {
// Note: The new WebPage has been created and published to the view
return .allow
}
}
return .allow
}
I have a framework, which depends on a library (GPGME) to do its actual encryption. As a consequence of using this external library, there are header files which have GPGME types in them...
@interface E3Gpgme : NSObject
...
/*****************************************************************************\
|* Call GPGME to sign
\*****************************************************************************/
- (int) signWithMode:(gpgme_sig_mode_t)mode
userId:(NSString *)signingKeyOrEmail
srcStream:(E3Stream *)src
dstStream:(E3Stream *)dst
error:(NSError **)error;
...
@end
.
This means the E3Gpgme class header file has to #import <gpgme.h> to get those type definitions.
That is then proving problematic because the framework modularisation fails, with <e3gpgme.h> obviously not being a part of the framework, so the project refuses to build.
I can see a few ways around this:
Just don't run the modularisation check. That doesn't sound like a fantastic option
import the GPGME headers (there's only 2) into the project and bundle them as if they were project ones. Again, not a great option, I don't expect GPGME to change its API but it runs the risk of there being a mismatch in future if the library code itself remains external.
So what's the best-practice for requiring a dependency on a library, not a framework ? Is there a way to copy the library binary into a folder inside the framework folder and make sure you link with that ? Assuming that's the shared library it ought to still be ok for the LGPL licensing...
Is there a better way ? I'm sure I'm not the first person to run into this :)
Topic:
Developer Tools & Services
SubTopic:
Xcode
Environment
iOS 17.2, Xcode 16.2, physical iPhone (12 Pro)
Main app in Flutter
WidgetKit extension written in Swift (Swift‑PM package)
Shared App Group: group.cool.glance.shared
Widget uses an AppIntent (FeedSelectionIntent) + custom entity (FeedAppEntity)
Flutter bridge writes JSON snapshots for the widget
Observed behaviour
Flutter prints the snapshot payload and writes /…/AppGroup/<uuid>/Library/Caches/feed_snapshots.json.
Widget gallery only shows the plain grey system placeholder (my sample placeholder never appears).
Console log every time WidgetKit runs:
chronod: Unable to resolve default intent (appintent:FeedSelectionIntent) for extension cool.glance.app.widget
Error Domain=LNMetadataProviderErrorDomain Code=9000
LinkMetadata.BundleMetadataExtractionError.aggregateMetadataIsEmpty
Added os_log in the widget + bridge (WidgetsBridgePlugin, FeedSnapshotStore, FeedEntityQuery, FeedSummaryTimeline), but none of them ever appear. That suggests the widget bundle can’t see the compiled AppIntent metadata or the snapshot file even though it’s there.
Code (trimmed to essentials)
FeedSelectionIntent.swift
struct FeedSelectionIntent: AppIntent, WidgetConfigurationIntent {
static var title: LocalizedStringResource = "Feed"
static var description = IntentDescription("Choose which feed should appear in the widget.")
@Parameter(title: "Feed",
requestValueDialog: IntentDialog("Select which feed to display."))
var feed: FeedAppEntity?
static var parameterSummary: some ParameterSummary { Summary("Show \(\.$feed)") }
init() { feed = FeedAppEntity.sample }
init(feed: FeedAppEntity?) { self.feed = feed }
static var defaultValue: FeedSelectionIntent { FeedSelectionIntent(feed: .sample) }
func perform() async throws -> some IntentResult { .result() }
}
FeedSnapshotStore.loadSnapshots()
guard let containerURL = fileManager.containerURL(
forSecurityApplicationGroupIdentifier: appGroupIdentifier) else {
os_log("FeedSnapshotStore: missing app group container %{public}s", log: Self.log, type: .error, appGroupIdentifier)
return []
}
let fileURL = SharedConstants.feedSnapshotRelativePath.reduce(containerURL) { url, component in
url.appendingPathComponent(component, isDirectory: component != SharedConstants.feedSnapshotFileName)
}
guard let data = try? Data(contentsOf: fileURL), !data.isEmpty else {
os_log("FeedSnapshotStore: no snapshot data found at %{public}s", log: Self.log, type: .info, fileURL.path)
return []
}
// decode FeedSnapshotEnvelope…
WidgetsBridgePlugin.writeSnapshots (Flutter → widget)
guard let containerURL = fileManager.containerURL(
forSecurityApplicationGroupIdentifier: SharedConstants.appGroupIdentifier) else {
result(FlutterError(code: "container-unavailable", message: "Unable to locate shared app group container.", details: nil))
return
}
let targetDir = SharedConstants.feedSnapshotRelativePath.dropLast().reduce(containerURL) {
$0.appendingPathComponent($1, isDirectory: true)
}
try fileManager.createDirectory(at: targetDir, withIntermediateDirectories: true)
let targetURL = targetDir.appendingPathComponent(SharedConstants.feedSnapshotFileName, isDirectory: false)
try data.write(to: targetURL, options: .atomic)
WidgetCenter.shared.reloadTimelines(ofKind: "GlanceSummaryWidget")
os_log("WidgetsBridgePlugin: wrote snapshots for %{public}d feeds at %{public}s",
log: WidgetsBridgePlugin.log,
type: .info,
envelope.feeds.count,
targetURL.path)
Info.plist for the widget contains only:
<key>NSExtensionPointIdentifier</key>
<string>com.apple.widgetkit-extension</string>
<key>NSExtensionAttributes</key>
<dict>
<key>WKAppBundleIdentifier</key>
<string>cool.glance.app</string>
</dict>
(If I add NSExtensionPrincipalClass, the install fails with “principal class not allowed for com.apple.widgetkit-extension”, so it stays out.)
What I’ve double‑checked
App Group entitlement present on Runner.app and the widget extension.
Snapshot file definitely exists under Library/Caches/feed_snapshots.json (size updates when Flutter writes).
Code matches Apple’s “Making a configurable widget” sample (custom WidgetConfigurationIntent, entity, and timeline provider).
Cleaned build folders (Flutter + Xcode), reinstalled app from scratch, but I still don’t see any of the os_log messages from the widget extension-only the LinkMetadata error above.
Placeholder entry (SampleSnapshots.recentSummary) is wired up; yet the system never uses it and always drops to the generic grey preview.
Questions
Does LinkMetadata.BundleMetadataExtractionError.aggregateMetadataIsEmpty mean WidgetKit can’t see the compiled AppIntent metadata? If so, what could cause that when the extension is built via Swift Package Manager inside a Flutter project?
Are there extra build settings or plist keys required so the AppIntent metadata gets embedded in the widget bundle?
Any reason the widget would never reach my FeedSnapshotStore logs even though the file is written and the App Group is configured?
Any help connecting the dots would be hugely appreciated.
My iphone glitched and turned off and would not turn back on. I have already tried force restart by charging it and everything but it stays as a black screen even though my phone vibrates and everything.
Topic:
Community
SubTopic:
Apple Developers
I'm trying the "Connect and Solve" course of Swift Playground. I can't use "world.place" to place bricks at positions (2, 2), (6, 2) (automatically disappear), but I can place bricks at positions (4, 2) in the same way.
Two bricks must be placed overlapping in positions (2, 2) and (6, 2) to achieve the goal. Only when a brick is placed in position (4, 2) can the goal be achieved.
The problem is that the bricks placed on (6, 2) and (2, 2) will disappear and cannot be placed successfully.
The following is my code writing...
let Block1 = Block()
for i in 1 ... 2 {
world.place(Block1, atColumn: 2, row: 2)
}
for i in 1 ... 2 {
world.place(Block1, atColumn: 6, row: 2)
}
world.place(Block1, atColumn: 4, row: 2)
func turnaround() {
turnRight()
turnRight()
}
func walk4() {
for i in 1 ... 3 {
moveForward()
}
}
func collet() {
for i in 1 ... 2 {
moveForward()
}
toggleSwitch()
turnRight()
walk4()
collectGem()
turnaround()
walk4()
turnRight()
}
for i in 1 ... 3 {
collet()
}
I would appreciate it if someone could offer some recommendations.
Thanks a lot
Topic:
Developer Tools & Services
SubTopic:
Swift Playground
Hi, our Xcode Cloud runs produce dsyms for test targets that massively increase the artifacts size, more specifically the "Test Products for" zip, that slows down the build due to the "upload artifacts" phase. These dsyms are useless, so we would like to stop producing them on Xcode Cloud builds. Consider that the workflow uses the autogenerated scheme for a package that's part of the Xcode project. How can we tell Xcode Cloud to not produce dsyms?