Currently, I have implemented local cache update with server data when app is killed using Push Notification and Notification Service Extension. So it works even the app is killed by the user, but I wanted to know whether this is app review safe work around or not as I am not finding any documentation for this.
Overview
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
How long does the new Apple Developer Program License Agreement take to take effect once you accept it?
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
The sysEx struct in the MIDIUniversalMessage struct has a channel member but the System Exclusive (7-Bit) Message doesn't have a channel field.
The System Exclusive (7-Bit) Message has a # of bytes field but the sysEx struct doesn't have a nrOfBytes, byteCount or bytesUsed member.
It looks like the channel member of the sysEx struct contains the number of used bytes.
Is this a mistake in the header or did I misunderstand something?
Issue Summary:
On iOS 26.0.1 to 26.3, apps using multiple UITextFields for OTP input face a critical issue where the system autofill pastes the entire OTP string into a single text field, usually the focused one, rather than splitting digits across fields. Delegate events like textDidChange: do not trigger consistently on autofill, breaking existing input handling logic.
Expected Behavior:
OTP autofill should distribute each digit correctly across all OTP UITextFields.
Delegate or control events should fire on autofill to enable manual handling.
(BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string {
if (string.length > 1) {
// Autofill detected - distribute OTP manually
for (int i = 0; i < string.length && i < self.arrayOTPText.count; i++) {
UITextField *field = self.arrayOTPText[i];
field.text = [NSString stringWithFormat:@"%c", [string characterAtIndex:i]];
}
UITextField *lastField = self.arrayOTPText[string.length - 1];
[lastField becomeFirstResponder];
return NO;
}
// Handle normal single character or deletion input here
return YES;
}
//
// Setup UITextFields - set .oneTimeCode on first field only
for (int i = 0; i < self.arrayOTPText.count; i++) {
UITextField *field = self.arrayOTPText[i];
field.delegate = self;
if (@available(iOS 12.0, *)) {
field.textContentType = (i == 0) ? UITextContentTypeOneTimeCode : UITextContentTypeNone;
}
}
What We’ve Tried:
Setting textContentType properly.
Handling OTP distribution in delegate method.
Verifying settings and keyboard use.
Testing on multiple iOS 26.x versions.
Impact:
Major usability degradation during OTP entry.
Forces fragile workarounds.
Inconsistent autofill reduces user confidence.
Request:
Request Apple fix OTP autofill to natively support multi-field UITextField OTP input or provide enhanced delegate callbacks for consistent behavior.
Did any one face this issue in recent time with iOS 26.0.1 to 26.3 beta version
J’ai juste une question! Est ce qu'il pourrais y avoir un genre de rabais pour le temps des fêtes ou quelque chose comme ça? (Suggestion pour le programme/à ajouter peut être).
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
Tags:
Subscriptions
Release Notes
I am encountering a cloud signing permission error when archiving and uploading an iOS app using Xcode with Automatically manage signing enabled.
Xcode reports that it cannot access or create cloud-managed distribution certificates, and therefore cannot find any App Store provisioning profiles for either the main app target or an associated Notification Service Extension.
The error message returned by Apple’s certificate API indicates that access to cloud-managed distribution certificates is forbidden.
Error messages
Cloud signing permission error
You haven't been given access to cloud-managed distribution certificates.
Please contact your team's Account Holder or an Admin to give you access.
No profiles were found
Xcode couldn't find any iOS App Store provisioning profiles matching the app or extension targets.
Environment
Xcode: 16.x
Signing method:
Automatic signing (App Store distribution)
Apple Developer Program team with existing distribution certificates
Apple ID role:
Admin (recently upgraded from a lower role)
What I have verified
Automatic signing is enabled for all targets
The correct team is selected
Bundle identifiers are valid and already registered
The app and extension exist in App Store Connect
Distribution certificates already exist in the team (previously created manually)
Observed behavior
Xcode attempts to access cloud-managed distribution certificates
Apple certificate service responds with a permission-denied error
As a result, provisioning profiles cannot be generated automatically
Question
After being upgraded to an Admin role, is there a known delay or additional requirement before an account can access cloud-managed distribution certificates, especially for teams that previously used manually managed distribution certificates?
Is there any recommended action (besides waiting or having the Account Holder perform an initial signing operation) to unblock automatic signing in this situation?
Topic:
Developer Tools & Services
SubTopic:
Developer Forums
Tags:
Developer Tools
Provisioning Profiles
Signing Certificates
I'm having trouble configuring the "IOPCIPrimaryMatch" entitlement.
I'm currently developing using "sign to run locally" and have been able to confirm the expected behavior. I was considering signing with "Developer ID Application" for future distribution to customers, but after finding the following forum, I'm now aiming to sign with "Apple Development."
https://developer.apple.com/forums/thread/743021
I'm currently having trouble with the IOPCIPrimaryMatch value. The "signing certificate" status in Xcode changes depending on the value, as follows:
Successful if the value is as follows:
IOPCIPrimaryMatch
0xFFFFFFFF&0x00161916
An error occurs if the value is as follows:
IOPCIPrimaryMatch
0xFFFFFFFF&0x00161916
So I tried building and installing using "0xFFFFFFFF&0x00161916", but this time the driver was not assigned to the PCI device.
By the way, when I used "sign to run locally", both the installation and assignment were successful with the following:
IOPCIPrimaryMatch
0xFFFFFFFF&0x00161916
Could you please tell me the correct way to write this?
Need to vent a bit before relaxing for Christmas...
WatchOS IAP using Storekit 2 is such a mess...is nobody actually using this or does Apple just not care for the user experience here?
Lots of users experience after the purchase confirmation double tap on the side button an instant return to the purchase screen with nothing actually happening. No error message whatsoever. There is just one remedy: users need to unpair and re-pair their watch, including restoring a backup and setting up their wallet again. Nobody really wants to do this, or doesn't believe me and think this is just typical support BS, because their watch is paired and most things just work as they expect. And it turns away a customer, often leaving a bad review. And I can't do anything about it.
Other errors in the purchase process are reported, but like "process interrupted" in case the payment is not setup correctly (credit car no longer valid or sth.). How should the user know? There must be better ways of letting him know what exactly the problem is.
You need to implement a "Restore Purchase" function, otherwise you're not passing the review. But it really asks every time for the AppStore password, and users with crazy passwords -- that they rightfully should have! -- have almost no chance of typing them successfully on the tiny AW keyboard. Why is it not also just a side button double tap like for purchase? At the very least you would need access to the keychain PWs or allow pasting of sth. copied on the paired iPhone.
Promo Codes for IAP on AW-only apps just don't work. AW has no redemption at all, and on the iPhone the AppStore will try to talk to a companion app (which AW-only doesn't have) and the end up in a dead-end installation effort.
This all feels like never really tested in the field, and people are of course blaming the 3rd party dev. for all these issues. And opening a ticket is just leading nowhere -- at best it's closed after months with the hint "duplicate" but w/o any chance for me to see that one that they then actually work on and track progress.
It's all so frustratingly broken...
Hi everyone,
I am looking for guidance regarding a rejection under Guideline 3.1.1 – Payments / In-App Purchase.
Our app is a **B2B SaaS platform for professional fitness coaches.
Coaches subscribe through our website to access coaching management tools (client tracking, training programs, nutrition planning, messaging, etc.).
The iOS app is only a companion app that lets existing coach accounts log in and access services they already purchased on the web.
Important facts about our implementation:
No subscriptions can be purchased in the app
No pricing, plans, or commercial upsell screens in the app
No sign-up in the app
No external links to a website checkout or pricing
The app is not usable at all without an existing paid account
The content is professional B2B data, not consumer digital media
Despite this, App Review keeps rejecting us for:
“Your app accesses digital content purchased outside the app, and that content is not available through in-app purchase.”
We tried referencing **3.1.3(b) Multiplatform Services, because our service is used on the web and mobile, and we only allow access with an existing account.
We also provided examples of other coaching platforms in the App Store that appear to work the same way (Trainerize, Everfit for Coaches, Hubfit, etc.).
But App Review still says the same thing, without pointing to a specific screen or UI element.
I want to make sure we comply. To clarify:
Do we need to completely block access to all content until login, even if the app already does this?
Is it enough to display a disclaimer such as:
“This app is for existing coach accounts only.
No purchases, subscriptions, or account creation are available in the app.”
For a B2B tool, does Apple still require In-App Purchase, even if users cannot sign up or buy anything inside the app?
Is this considered a Reader-style app under Apple’s rules?
Has anyone successfully passed review with a SaaS “login-only” model for professional software?
We don’t want to violate any rule, we just need clear guidance on what is required to get approval.
Any help or experience from other developers or Apple team members would be greatly appreciated.
Thanks,
Robin
I wanted to add a new app and I’m having problems with it. When adding my previous apps or updating them, there were no issues at all. I submitted the app for review and waited two weeks without any response. I removed it and submitted it again, and now I’ve been waiting for several days once more. Is anyone able to help me? I don’t think there’s anything wrong with the app, as it’s just a simple game.
I am trying to add promotional offers in my iOS App. The signature is being verified through a google cloud function. My user id, signature, and product and offerIds return perfect. Promotional offer appears in the payment sheet as well. When applying for payment, the "ding" sound comes as well. But then I get the UIAlert with Unable to Purchase Contact developer. Error code in logs is 3903
Topic:
Developer Tools & Services
SubTopic:
General
I tried to apply a promotional offer to a subscribed user.
When I tested it in the Sandbox environment, it did not show the promotional payment popup but returned a “restored” status.
However, when I tested it in the Xcode environment, it correctly displayed the payment popup, but after I tapped the Subscribe button, it showed an “Unable to Purchase” popup like this:
And in the console I could see this error:
Received error that does not have a corresponding StoreKit Error: Error Domain=AMSErrorDomain Code=305 "Server Error The server encountered an error" UserInfo={AMSURL=http://localhost:56862/WebObjects/MZBuy.woa/wa/inAppBuy, AMSDescription=Server Error, NSDebugDescription=Server Error The server encountered an error, AMSServerErrorCode=3903, AMSStatusCode=200, AMSServerPayload={
"cancel-purchase-batch" = 1;
dialog = {
defaultButton = ok;
explanation = "Contact the developer for more information.\n\n[Environment: Xcode]";
initialCheckboxValue = 1;
"m-allowed" = 0;
message = "Unable to Purchase";
okButtonString = OK;
};
dsid = 17322632127;
failureType = 3903;
jingleAction = inAppBuy;
jingleDocType = inAppSuccess;
pings = (
);
}, AMSFailureReason=The server encountered an error}
Could someone help me resolve this issue? I’ve been struggling with it for two days and feeling exhausted...
I have a Mac application that uses the NSEvent.addLocalMonitorForEvents API to receive all mouse movement events. It receives all the mouse movement events and calculate the event reporting rate.
The code used as following:
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundColor(.accentColor)
Text("Hello, world!")
}
.frame(width: 400, height: 400)
.padding()
.onAppear() {
// here
NSEvent.addLocalMonitorForEvents(matching: [.mouseMoved]) { event in
print(event.timestamp)
return event
}
}
}
}
With the exact same code, before I upgraded my macOS to the latest version 26.2, I could receive approximately 460+ mouse events per second, this matched the hardware reporting frequency of my mouse device perfectly.
However, after upgrading to version 26.2, I noticed that the number of mouse events received per second is limited to match the screen refresh rate: when I set the screen refresh rate to 60Hz, I only receive 60 mouse events per second; when set to 120Hz, I receive 120 events per second.
It is clear that some changes has be delivered in macOS 26.2, which by default downsamples the frequency of mouse events reported to applications to align with the screen refresh rate.
The question is how can I reteive all the original mouse events in macOS 26.2? I tried to search and dig, bug no any related APIs found.
Topic:
UI Frameworks
SubTopic:
AppKit
I can't enrol in apple developer program, every time i click enrol i got this message: "Your enrollement in tha Apple Developer Program could not be completed at this time"
I made a developer account. I uploaded a photo id, it notified me that it will take 2 business days to get verified, but it has been already 2 weeks. What to do?
Hi, I faced with the issue on iOS 26.1 with PHPickerViewController. After first selection I save assetIdentifier of PHPickerResult for images.
next time I open the picker I expect to have the images selected based on assetIdentifier
Code:
var config = PHPickerConfiguration(photoLibrary: .shared())
config.selectionLimit = 10
config.filter = .images
config.preselectedAssetIdentifiers = images.compactMap(\.assetID)
let picker = PHPickerViewController(configuration: config)
picker.delegate = self
present(picker, animated: true)
But on iOS 26.1 they aren't selected. On lower iOS version all works fine.
Does anybody faced with similar issue?
Topic:
UI Frameworks
SubTopic:
UIKit
操作步骤:1:调用let eligible = try await AgeRangeService.shared.isEligibleForAgeFeatures,返回YES后,再次调用 let response = try await AgeRangeService.shared.requestAgeRange(ageGates:18, in: viewController)
switch response {
case .declinedSharing:
DispatchQueue.main.async {
completion(.declinedSharing, nil, nil)
}
case .sharing(let swiftRange):
DispatchQueue.main.async {
let model = ARAgeRange(swiftRange: swiftRange)
completion(.sharing, model, nil)
}
Description:
When following Apple's WWDC guidance to hide the default Liquid Glass background on a ToolbarItem using .sharedBackgroundVisibility(.hidden) and draw a custom circular progress ring, a rectangular rendering artifact appears during navigation bar transition animations (e.g., when the navigation bar dims/fades during a push/pop transition).
Steps to Reproduce:
Create a ToolbarItem with a custom circular view (e.g., a progress ring using Circle().trim().stroke()).
Apply .sharedBackgroundVisibility(.hidden) to hide the default Liquid Glass background.
Navigate to a detail view (triggering a navigation bar transition animation).
Observe the ToolbarItem during the transition.
Expected Result:
The custom circular view should transition smoothly without any visual artifacts.
Actual Result:
A rectangular bounding box artifact briefly appears around the custom view during the navigation bar's dimming/transition animation. The artifact disappears after the transition completes.
Attempts to Resolve (All Failed):
Using .frame(width: 44, height: 44) with .aspectRatio(1, contentMode: .fit)
Using .fixedSize() instead of explicit frame
Using Circle().fill() as a base view with .overlay for content
Using Button with .buttonStyle(.plain) and Color.clear placeholder
Various combinations of .clipShape(Circle()), .contentShape(Circle()), .mask(Circle())
Workaround Found (Trade-off):
Removing .sharedBackgroundVisibility(.hidden) eliminates the rectangular artifact, but this prevents customizing the Liquid Glass appearance as intended by the API.
Code Sample:
swift
if #available(iOS 26.0, *) {
ToolbarItem {
Button {
// action
} label: {
Color.clear
.frame(width: 32, height: 32)
.overlay {
ZStack {
// Background arc (3/4 circle)
Circle()
.trim(from: 0, to: 0.75)
.stroke(Color.blue.opacity(0.3), style: StrokeStyle(lineWidth: 4, lineCap: .round))
.rotationEffect(.degrees(135))
.frame(width: 28, height: 28)
// Progress arc
Circle()
.trim(from: 0, to: 0.5) // Example: 50% progress
.stroke(Color.blue, style: StrokeStyle(lineWidth: 4, lineCap: .round))
.rotationEffect(.degrees(135))
.frame(width: 28, height: 28)
Text("50")
.font(.system(size: 12, weight: .bold))
.foregroundStyle(Color.blue)
Text("100")
.font(.system(size: 8, weight: .bold))
.foregroundStyle(.primary)
.offset(y: 12)
}
.background {
Circle()
.fill(.clear)
.glassEffect(.clear.interactive(), in: Circle())
}
}
}
.buttonStyle(.plain)
}
.sharedBackgroundVisibility(.hidden) // ⚠️ This modifier causes the rectangular artifact during transitions
}
Environment:
iOS 26 Beta
Topic:
UI Frameworks
SubTopic:
SwiftUI
Problem Description:
After upgrading to iOS 26, I discovered that the ExtendedDistanceMeasurement feature in the Nearby Interaction framework is not working as expected. On the same device model, the issue did not occur on iOS 18, but it is present on iOS 26 (including the latest iOS 26.2), and it has started affecting the functionality of my app. I hope this issue can be resolved as soon as possible.
Problem Details:
On iOS 26 and later versions (including iOS 26.2), when using an iPhone and an Apple Watch both equipped with second-generation UWB chips, enabling isExtendedDistanceMeasurementEnabled initiates the distance measurement process successfully, but the distance information fails to update. The real-time distance between the devices does not display within the app.
Affected Devices and Versions:
iPhone Model: iPhone 15 Pro Max
iOS Version: iOS 26.2
Apple Watch Model: Apple Watch 10
watchOS Version: 26.2
Example Code:
The issue can be reproduced by adding the following code from the official sample code:
Nearby Interaction Framework Sample Code
Problem Description:
After upgrading to iOS 26, I discovered that the ExtendedDistanceMeasurement feature in the Nearby Interaction framework is not working as expected. On the same device model, the issue did not occur on iOS 18, but it is present on iOS 26 (including the latest iOS 26.2), and it has started affecting the functionality of my app. I hope this issue can be resolved as soon as possible.
Problem Details:
On iOS 26 and later versions (including iOS 26.2), when using an iPhone and an Apple Watch both equipped with second-generation UWB chips, enabling isExtendedDistanceMeasurementEnabled initiates the distance measurement process successfully, but the distance information fails to update. The real-time distance between the devices does not display within the app.
Affected Devices and Versions:
iPhone Model: iPhone 15 Pro Max
iOS Version: iOS 26.2
Apple Watch Model: Apple Watch 10
watchOS Version: 26.2
Example Code:
The issue can be reproduced by adding the following code to the official sample code:
Nearby Interaction Framework Sample Code
private func didReceiveDiscoveryToken(_ token: NIDiscoveryToken) {
if session == nil { initializeNISession() }
if !didSendDiscoveryToken { sendDiscoveryToken() }
os_log("running NISession with peer token: \(token)")
let config = NINearbyPeerConfiguration(peerToken: token)
// The issue can be reproduced by adding the following code to the official sample code
// Enable extended distance measurement if both devices support it
if NISession.deviceCapabilities.supportsExtendedDistanceMeasurement && token.deviceCapabilities.supportsExtendedDistanceMeasurement {
config.isExtendedDistanceMeasurementEnabled = true
}
session?.run(config)
}
Problem Behavior:
When either the iPhone or the Apple Watch does not support the second-generation UWB chip (i.e., deviceCapabilities.supportsExtendedDistanceMeasurement = false), the code works as expected.
However, when both the iPhone and the Apple Watch support the second-generation UWB chip (i.e., deviceCapabilities.supportsExtendedDistanceMeasurement = true), the code fails to work, and the distance does not update — meaning the real-time distance between the devices is not displayed.
Expectation:
I hope this issue can be resolved soon, as it is impacting my app. The problem persists in the latest iOS 26.2, and has yet to be fixed.