Hello there,
We’re currently integrating Apple Wallet pass functionality into our application and am looking for clarification around the automatic update flow. Particularly regarding secure management of the authenticationToken.
We’ve reviewed the documentation here:
Adding a Web Service to Update Passes
authenticationToken Documentation
From our understanding:
When a user downloads a pass from our service, the .pkpass includes both a webServiceURL and an authenticationToken. Once the pass is added to Wallet, the Wallet app makes authenticated requests to our webServiceURL, using the token in the Authorization header. We then validate this token server-side to serve updates or handle device registration. So far, this flow is clear.
However, we’re looking for clarification on two key scenarios:
If a user adds the same pass twice on the same device, should the authenticationToken remain the same in both cases?
If the same user adds the same pass on a different device, should the authenticationToken also remain consistent across devices?
If the answer to both is “yes,” we assume that our backend must store the original authenticationToken in a retrievable form (not just as a hash) to regenerate the same pass for re-download or multi-device sync.
Our main question is:
What is Apple’s recommended or acceptable approach to storing authenticationToken values securely on the backend?
Should these tokens be:
Stored in plaintext (e.g. in a protected DB field)?
Encrypted using a symmetric key?
Hashed (not reversible, but limits reuse)?
We want to ensure we align with Apple’s best practices for Wallet security and token management, especially in contexts where the same pass may be installed on multiple devices or reissued later.
Overview
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
How to eliminate this spacing?
Hello everyone.
I'm looking for some advice. My subscription expired a few months ago. Unfortunately, I didn't notice. Now, after some time, I've tried to renew, but I can't find a renewal button on the website, in the developer apps, or in my subscriptions. What should I do in such cases? I contacted technical support, but haven't received a response. Thanks in advance.
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
I have noticed that there are no new kdk builds since mid December
Is everything ok at apple
I am aware of NXUs but the kernel version has changed much since then
Hello,
We are implementing Apple Wallet extensions (PKIssuerProvisioningExtensionHandler). While our UI extension works as expected, our Non-UI extension is unable to detect payment passes provisioned by our app.
Specifically, PKPassLibrary().passes(of: .secureElement) returns an empty array when called from the Non-UI extension, even though the same call correctly returns the passes when executed from the Main iOS App.
Our Payment Network Operator has confirmed that our extension bundle identifiers are correctly registered in the metadata on their side. They suggested that the Wallet Extensions entitlement (com.apple.developer.payment-pass-provisioning) may require additional backend enablement for these specific Extension App IDs.
Is there a known reason why PKPassLibrary would behave differently in the Non-UI extension vs the Main App?
Beyond the standard entitlement request, is there a specific process to "activate" these IDs for extension visibility?
Does anyone have guidance on reaching the appropriate team for backend entitlement activation issues?
Any insights would be greatly appreciated.
Hi :) I'm new to app store connect, and I just want to verify what does it take to be able to test subscription for a new app that isn't approved yet using sandbox? Or is this not possible that the app has to be approved first?
More context below:
My app is a new app, I only submitted for review and I linked the subscription from the app’s In-App Purchases and Subscriptions section on the version page when submit it for review. It got rejected for now.
When the app review status is both in-review and rejected, I've tried to test my subscription, where there is a button (like "subscribe"/"become a member") in my app that user can click on, which it calls ios's IAPProvider.startMembershipPurchase, I just get Error: [IAPService] Product not found: [<my_subscription_id>].
I ensured my subscription's product id in app store connect matches with the one in my code.
I can see the "rejected" status both on my app and the subscription.
So can anyone help clarify if the app has to be approved first in order to test subscription? Or am I missing any other setup? Or it might just be my code?
Thanks in advance! Any info is super helpful!
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?
Trying to figure out why my public test group got rejected and what I need to do to rectify and move forward.
Is anyone able to help with this?
Topic:
App Store Distribution & Marketing
SubTopic:
TestFlight
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
In an NSTableView (Appkit), I need to colour a cell background when it is selected.
That works OK, except that the colour does not span the full cell width, nor even the text itself:
The tableView structure is very basic:
I see there is a TextCell at the end that cannot be deleted. What is this ?
And the colouring as well:
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
let p = someDataSource[row]
if let cellView = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "Cell"), owner: self) {
(cellView as! NSTableCellView).textField?.stringValue = p
if selected[row] {
(cellView as! NSTableCellView).backgroundColor = theLightBlueColor
} else {
(cellView as! NSTableCellView).backgroundColor = .clear
}
return cellView
}
}
I've tried to change size constraints in many ways, to no avail.
For instance, I changed Layout to Autoresising :
I tried to change TableCellView size to 170 vs 144:
Or increase tableColum Width.
I have looked at what other object in the NSTableView hierarchy should be coloured without success.
Nothing works.
What am I missing ?
It has been days I made the payment I have heard nothing from Apple, our deadline is being pushed over and over again we are loosing customers to our competitors.
I have already reached out via the formal support channel but have not received a response beyond the automated acknowledgment.
Overview
I have the following view hierarchy that mixes SwiftUI and UIKit:
AccordionView
└─ VStack
├─ Text
├─ Button
└─ UIViewRepresentable
└─ UIStackView
├─ UILabel
└─ UILabel
When tapping the button, the UIViewRepresentable hides and shows its content. This all works as expected.
However, in certain circumstances the view's sizing is rendered with the correct size, but the text can often render incorrectly, despite the frame seemingly looking as though it has enough room to render the text.
More info
Below you can see the UILabel has the correct frame height (the light grey background and coloured borders) but the text is rendered as though it has infinite width along one line.
There's a few configurations of my view hierarchy that seem to have this effect.
I've added a playground to the bottom of this post of various configurations to show what does and doesn't work, just copy and paste to see for yourself...
It seems of the ones that don't work, there's a couple of reasons why that may be:
HostedView and TextViewContainer do not do the following (I think we only need to do one of these things for auto layout/stack views to work effectively):
a) implement an intrinsic content size
b) return a 'good' size for systemLayoutSizeFitting().
UIHostingController shouldn't use intrinsic size (although I'm sure it should)
Something related to setting setContentCompressionResistancePriority() or setContentHuggingPriority() but having played about with this it doesn't seem relevant here...
I've played around with everything I can think of here but can't find a solution that works for all, although I'm 99% sure it's one or all of the points above.
If there are any UIKit gurus out there that can help that would be great! Ive already spent so much time on this 🫨
Playground
Swift Playground
I am working on a remote control application for macOS where I need to maintain two "virtual" cursors:
Remote Cursor: Follows the remote user's movements.
Local Cursor: Follows the local user's physical mouse/trackpad movements.
To move the system cursor (for the remote side), I use CGWarpMouseCursorPosition as follows:
void DualCursorMac::UpdateSystemCursorPosition(int x, int y) {
CGPoint point = CGPointMake(static_cast<CGFloat>(x), static_cast<CGFloat>(y));
// Warp the cursor to match remote coordinates
CGWarpMouseCursorPosition(point);
}
Meanwhile, I use a CGEventTap to monitor local physical movements to update my local virtual cursor's UI:
CGEventRef Mouse::MouseTapCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) {
if (remoteControlMode) {
// We want to suppress system cursor movement but still read the delta
const int deltaX = static_cast<int>(CGEventGetIntegerValueField(event, kCGMouseEventDeltaX));
const int deltaY = static_cast<int>(CGEventGetIntegerValueField(event, kCGMouseEventDeltaY));
NSLog(@"MouseTapCallback: delta:(%d, %d)", deltaX, deltaY);
// Update local virtual cursor UI based on deltas...
return nullptr; // Consume the event
}
return event;
}
The Problem:
When CGWarpMouseCursorPosition is called frequently to update the system cursor, it interferes with the kCGMouseEventDeltaX/Y values in the Event Tap.
Specifically, if the local user moves the trackpad slowly (expecting deltas of 1 or 2), but a "Warp" occurs simultaneously (e.g., jumping the cursor from (100, 100) to (300, 300)), the deltaX and deltaY in the callback suddenly spike to very large values. It seems the system calculates the delta based on the new warped position rather than the pure physical displacement of the trackpad.
This makes the local virtual cursor "jump" erratically and makes it impossible to track smooth local movement during remote control.
My Question:
Is there a way to get the "raw" or "pure" physical relative movement (delta) from the trackpad/mouse that is independent of the system cursor's absolute position or warping?
Are there alternative APIs (perhaps IOKit or different CGEvent fields) that would allow me to get consistent deltas even when the cursor is being warped programmatically?
I attempted to register with ADP from the developer app. After entering my driver's license, address, and name, a pop-up appeared stating “There may be an issue with your account.” Subsequently, the “Register Now” button for ADP within the app became inactive.
What could this account issue be? I would like to know how to proceed with registering with ADP.
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
Our children's educational app (COPPA-compliant) was rejected under Guidelines 5.1.1(i) and 5.1.2(i) for sharing personal data with a third-party AI
service without clear disclosure and user permission.
How our app works:
Our app is an AI-powered learning assistant for kids. Children type questions (e.g., "Why is the sky blue?") and the app sends the question to Google
Gemini's API to generate an age-appropriate answer. This is the core and only purpose of the app — it's an AI chat app, similar to how a search engine
sends queries to its servers.
Our current setup:
Google Gemini operates as a data processor (not a data recipient) — zero data retention, no model training on user data
Our privacy policy already discloses Google Gemini as the AI provider, what data is processed, and that no data is stored
The app is clearly marketed as an AI-powered assistant — users understand they are interacting with AI
Our questions:
Infrastructure vs. data sharing: We use Google Gemini to process queries the same way we use Google Sign-In for authentication, MongoDB Atlas for our
database, and Railway for hosting. In all cases, user data passes through a third-party service to provide core functionality. Is the expectation that AI
services require additional consent beyond what's expected for other third-party infrastructure services? If so, what distinguishes them?
2. Minimum consent implementation: If in-app consent is required, what constitutes sufficient "explicit permission"? Specifically:
- Is a simple alert dialog (similar to the ATT prompt) with "Allow" / "Not Now" before first use sufficient?
- Or is a more detailed consent screen with checkboxes/toggles required?
- Since our app's sole purpose is AI-powered Q&A, what should happen if the user taps "Not Now"? The app cannot function without the AI service.
3. Privacy policy disclosure: Our privacy policy already identifies Google Gemini by name, describes what data is sent (child's questions, name, and age
for personalization), and explains Google's zero-retention policy. Is updating the privacy policy alone sufficient, or is a separate in-app consent
mechanism always required under 5.1.2(i)?
4. Children's apps specifically: Since parents set up the app (behind a parental gate), should the consent be presented to the parent during setup, or does
it need to appear elsewhere?
Any guidance on the minimum compliant implementation would be greatly appreciated. We want to get this right.
Thank you.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
We have run over 15 App Store Events.
I have only ever seen data on 1 of them.
We have several large apps, and based on our numbers, it is unlikely that we don't receive more than 5 installs from the event.
We see an overall CR uplift, but no direct data in the event data section.
Does anyone have any ideas as to what could be causing this?
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
I am just starting to learn SpriteKit and I'm having trouble selecting a scene to preview an action in the actions editor.
I created a new macOS Game project (Language: Swift, Game Technology: SpriteKit). When I open the generated 'Actions.sks' file, I see the message "No Preview Scene Selected" in the editor. I see the 'GameScene.sks' scene listed in the "Select..." control in the lower right, but it is greyed out. I'm not able to figure out how to select a scene to preview the action.
I'm running Xcode 26.2 on macOS 15.
Thanks very much for the help.
Topic:
Graphics & Games
SubTopic:
SpriteKit
Hello,
We have applied for the Apple Developer Program under a government organization account. After submitting the enrollment, we received a confirmation email stating that the request was received and that we would be contacted after verification of authorization to bind the organization to the Apple Developer Program legal agreements.
However, it has been quite some time, and we have not received any further updates regarding the verification process.
We would like to understand:
What is the usual verification timeline for government organizations?
Is extended verification common for government entities?
Is there anything additional we should do from our side to help move the process forward?
If anyone has experienced a similar situation or can share guidance, it would be greatly appreciated.
Thank you.
I had a VoiceOver user point out an issue with my app that I’ve definitely known about but have never been able to fix. I thought that I had filed feedback for it but it looks like I didn’t.
Before I do I’m hoping someone has some insight. With Swift Charts when I tap part of a chart it summarizes the three hours and then you can swipe vertically to hear it read out details of each hour. For example, the Y-Axis is the amount of precipitation for the hour and the X-Axis is the hours of the day. The units aren't being read in the summary but they are for individual hours when you vertical swipe.
The summary says something such as "varies between 0.012 and 0.082". In the AXChartDescriptor I’ve tried everything I can think of, including adding a label to the Y axis in the DataPoint but nothing seems to work in getting that summary to include units. With a vertical swipe it seems to just be using my accessibility label and value (like I would expect).
I'm trying to authenticate to a git host using SSH keys stored in 1Password. I have ~/.ssh/config with mode 600 set with a symlink:
Host *
IdentityAgent "~/.1password/agent.sock"
But ssh-add -l shows no identities. If I set $SSH_AUTH_SOCK, ssh-add -l works just fine. I'd love to not have to do this, though.
Why doesn't ssh-add seem to read ~/.ssh/config? The built-in version is OpenSSH_10.0p2, LibreSSL 3.3.6.
I've searched fruitlessly for an answer anywhere else.