For the subscription API, we’re using the Get All Subscription Statuses API to replace the deprecated verifyReceipt method. To determine if a user has canceled their subscription, we’re using the expirationIntent key from JWSRenewalInfo data. However, we’ve noticed that we sometimes receive this key and other times not.
We’re also facing an issue with the offertype key. We use this key to determine if a user is currently in the introductory offer, the promotion offer, or neither. To obtain this key, we’re using JWSTransaction, but we occasionally receive it and other times not.
Note: These issues are being tested in the sandbox environment.
Thank you.
Apple Developers
RSS for tagThis is a dedicated space for developers to connect, share ideas, collaborate, and ask questions. Introduce yourself, network with other developers, and foster a supportive community.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Dear Apple:
The program we developed uses BLE broadcasting to discover devices. The discovered device sends three broadcasts, but when we debug the program, we found that the addresses reported by centralManager::didDiscoverPeripheral for the same device's three broadcasts are actually different CBPeripheral * addresses. I would like to ask how we can identify that these three broadcasts are from the same device? Are there any variables in the peripheral that can identify it as the same device? Thanks。
A question from an ordinary user for developers:
The essence of the problem:
I installed the To Do List by MinimaList app on both my MacBook and iPhone. After installing it, I decided not to use it and deleted the application.
https://apps.apple.com/us/app/minimalist-to-do-list-widget/id993066159
However, it turned out that not everything was removed. Specifically:
• In the “Allow Others to Find Me” section on both my MacBook and iPhone, these apps still appear. No matter what I do—whether I delete or clear them—they continue to be displayed there.
• This app continues to appear in the section located at:
Settings → Apple ID → iCloud → Stored in iCloud → See All → Allow Finding Me – To Do List and one more item.
• It cannot be deleted.
• It won’t delete on my MacBook, and it won’t delete on my iPhone.
• It also appeared in iCloud itself under the Email Search section.
P.S.
The official Apple support (without violating any internal regulations) advised me to post on the forum to get in touch with Apple developers.
In hope, I am posting this question here.
I have an app that was written in UIKit. It's too large, and it would be much too time consuming at this point to convert it to SwiftUI.
I want to incorporate the new limited contacts into this app. The way it's currently written everything works fine except for showing the limited contacts in the contact picker.
I have downloaded and gone though the Apple tutorial app but I'm having trouble thinking it through into UIKit. After a couple of hours I decided I need help.
I understand I need to pull the contact IDs of the contacts that are in the limited contacts list. Not sure how to do that or how to get it to display in the picker. Any help would be greatly appreciated.
func requestAccess(completionHandler: @escaping (_ accessGranted: Bool) -> Void)
{
switch CNContactStore.authorizationStatus(for: .contacts)
{
case .authorized:
completionHandler(true)
case .denied:
showSettingsAlert(completionHandler)
case .restricted, .notDetermined:
CNContactStore().requestAccess(for: .contacts) { granted, error in
if granted
{
completionHandler(true)
} else {
DispatchQueue.main.async { [weak self] in
self?.showSettingsAlert(completionHandler)
}
}
}
// iOS 18 only
case .limited:
completionHandler(true)
@unknown default: break
}
}
// A text field that displays the name of the chosen contact
@IBAction func contact_Fld_Tapped(_ sender: TextField_Designable)
{
sender.resignFirstResponder()
// The contact ID that is saved to the Db
getTheCurrentContactID()
let theAlert = UIAlertController(title: K.Titles.chooseAContact, message: nil, preferredStyle: .actionSheet)
// Create a new contact
let addContact = UIAlertAction(title: K.Titles.newContact, style: .default) { [weak self] _ in
self?.requestAccess { _ in
let openContact = CNContact()
let vc = CNContactViewController(forNewContact: openContact)
vc.delegate = self // this delegate CNContactViewControllerDelegate
DispatchQueue.main.async {
self?.present(UINavigationController(rootViewController: vc), animated: true)
}
}
}
let getContact = UIAlertAction(title: K.Titles.fromContacts, style: .default) { [weak self] _ in
self?.requestAccess { _ in
self?.contactPicker.delegate = self
DispatchQueue.main.async {
self?.present(self!.contactPicker, animated: true)
}
}
}
let editBtn = UIAlertAction(title: K.Titles.editContact, style: .default) { [weak self] _ in
self?.requestAccess { _ in
let store = CNContactStore()
var vc = CNContactViewController()
do {
let descriptor = CNContactViewController.descriptorForRequiredKeys()
let editContact = try store.unifiedContact(withIdentifier: self!.oldContactID, keysToFetch: [descriptor])
vc = CNContactViewController(for: editContact)
} catch {
print("Getting contact to edit failed: \(self!.VC_String) \(error)")
}
vc.delegate = self // delegate for CNContactViewControllerDelegate
self?.navigationController?.isNavigationBarHidden = false
self?.navigationController?.navigationItem.hidesBackButton = false
self?.navigationController?.pushViewController(vc, animated: true)
}
}
let cancel = UIAlertAction(title: K.Titles.cancel, style: .cancel) { _ in }
if oldContactID.isEmpty
{
editBtn.isEnabled = false
}
theAlert.addAction(getContact) // Select from contacts
theAlert.addAction(addContact) // Create new contact
theAlert.addAction(editBtn) // Edit this contact
theAlert.addAction(cancel)
let popOver = theAlert.popoverPresentationController
popOver?.sourceView = sender
popOver?.sourceRect = sender.bounds
popOver?.permittedArrowDirections = .any
present(theAlert,animated: true)
}
func requestAccess(completionHandler: @escaping (_ accessGranted: Bool) -> Void)
{
switch CNContactStore.authorizationStatus(for: .contacts)
{
case .authorized:
completionHandler(true)
case .denied:
showSettingsAlert(completionHandler)
case .restricted, .notDetermined:
CNContactStore().requestAccess(for: .contacts) { granted, error in
if granted
{
completionHandler(true)
} else {
DispatchQueue.main.async { [weak self] in
self?.showSettingsAlert(completionHandler)
}
}
}
// iOS 18 only
case .limited:
completionHandler(true)
@unknown default: break
}
}
// MARK: - Contact Picker Delegate
extension AddEdit_Quote_VC: CNContactPickerDelegate
{
func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact)
{
selectedContactID = contact.identifier
let company: String = contact.organizationName
let companyText = company == "" ? K.Titles.noCompanyName : contact.organizationName
contactNameFld_Outlet.text = CNContactFormatter.string(from: contact, style: .fullName)!
companyFld_Outlet.text = companyText
save_Array[0] = K.AppFacing.true_App
setSaveBtn_AEQuote()
}
}
extension AddEdit_Quote_VC: CNContactViewControllerDelegate
{
func contactViewController(_ viewController: CNContactViewController, shouldPerformDefaultActionFor property: CNContactProperty) -> Bool
{
return false
}
func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?)
{
selectedContactID = contact?.identifier ?? ""
if selectedContactID != ""
{
let company: String = contact?.organizationName ?? ""
let companyText = company == "" ? K.Titles.noCompanyName : contact!.organizationName
contactNameFld_Outlet.text = CNContactFormatter.string(from: contact!, style: .fullName)
companyFld_Outlet.text = companyText
getTheCurrentContactID()
if selectedContactID != oldContactID
{
save_Array[0] = K.AppFacing.true_App
setSaveBtn_AEQuote()
}
}
dismiss(animated: true, completion: nil)
}
}
Hi. in xCode 16.2 when I'm wrote my xcode code show ‘invalid character in source file’ prior to 16.2 this problem did not exist.
Topic:
Community
SubTopic:
Apple Developers
I’m having trouble downloading my yahoo emails. I use the Mail function for all my email accounts. The Comcast emails seem to be downloading fine. I get the posix96 error. Is there a fix for this yet??
Topic:
Community
SubTopic:
Apple Developers
Hi all,
I've come here because I want to learn more about the Music app, the nuts and bolts of it. I used to know iTunes pretty well back in the iPod days, but now with iCloud Music Library and Apple Music playlists, I get lost when trying to troubleshoot issues with the app. Any suggestions as to where to start? Is there documentation breaking down which files store what?
Thanks.
Topic:
Community
SubTopic:
Apple Developers
説明ではApple Accountが無くても回答可能とあるが、招待された画面を開きメールアドレスを入力するとApple acountのパスワードを入れるか、新規にacountを作成する画面になる。
Apple Accountが無い人は何も出来ないのか?それともあのパスワード欄は新規にパスワード登録するためのもの?
また、招待を送ったメールアドレスとApple acountのメールアドレスが違う場合はどうなるのだろう?
誰か試した人いますか?
Topic:
Community
SubTopic:
Apple Developers
I'm developing a workout app with a mirrored workout session. I'm having problems with sessions being out of sync. For example, when the workout is ended, it takes somewhere around a minute or two for it to actually fully end, so if during this time I start a new workout, then the sessions will be out of sync.
I am using healthStore.recoverActiveWorkoutSession() to recover the workout session but it doesn't always work very well and in particular in the case when a workout has been manually ended (but ending hasn't completed) it enters an out of sync mode.
The reason why this case is happening is because I have an third party sensor connected to this mirrored workout session and if the sensor is out of range or turned off, I end the workout. However, if the person had accidentally gone out of range, they would reconnect to the app and restart the workout as soon as they realize and in that case, when the workout hasn't fully ended, it doesn't recover appropriately.
I have spent weeks trying to debug this with no luck so any advice will be appreciated.
I have the following questions that need official answers:
1: Whether the Bluetooth scanning cycle can be controlled through the software level. If it can be controlled, please tell me how to control it.
2: Now the IOS mobile phone scanning strategy, how long is the scanning cycle, and what is the scanning duty cycle in this scanning cycle
Topic:
Community
SubTopic:
Apple Developers
After Updating My iPhone 15 Pro To IOS 18.3 beta, 1 Day Later A Pixel seemed stuck or burnt,
and then after 1 Day on 25 Dec The Screen Went Black Or Turned Off But Responded To My Touch,
the reason i suppose the screen went black would be a memory glitch happening when i opened the camera from the Lock Screen or a graphica card issue
if anyone can help I would appreciate it
Topic:
Community
SubTopic:
Apple Developers
Apple In-App Purchase sandbox environment can receive App Store Server Notifications v2, but the production environment is not receiving any notifications. I have verified that the configured URL is correct and it appears that Apple is not pushing messages in the production environment. Is there anyone who knows how to troubleshoot this issue
I have been using US Cellular without any issues, and my previous device worked seamlessly with a stable connection. However, after updating to iOS 18.3 (22D5040d), I have been experiencing significant connectivity problems. In most locations, I have no internet access, and when I do, the speeds are extremely slow, typically around 2 Mbps at best.
Hello, why is apple won’t adding Just-In-Time compiler to ”Emulators” in the app store. And/or hypervisor for newer devices.
i feel like UTM (which is a PC Emulator) or other Apps that emulate need JIT to work properly, and will consume significantly less battery to emulate/virtualize, And will have a noticeably better performance than just not enabling JIT, and by the way jit is already being used on iPadOS/iOS 18.3/18.3.1 and newer/older version of that so being enabled by the choice of the developer of the App is more convenient than doing it with tools.
and by the why apple wont let emulators on iPads and newer iPhones do hypervisor, it’s better than JIT but requires a good cpu, like making it available to people with newer/powerful devices, hypervisor is better than JIT by a lot and removing it in iPadOS/iOS 18.4 was an unnecessary choice?, becuase it had a better potential in virtualization instead of emulating, and I feel like enabling it In M1-M2 iPads and A14-18pro and newer devices is just better from having it disabled, to unlock the fullest potential of the iPad it needs to have a app or something to do instead of just running high graphics games/or Apps.
Dear Developers,
I'm exploring the feasibility of playing video content on CarPlay when the vehicle is in a parked state. Could you please provide guidance on whether this is supported and, if so, the best practices for implementation?
Hi Team,
I just want to know the reasoning behind why there are two IPSW with same version and different build IDs.
Example: https://ipsw.me/iPhone12,3
Version: 18.3
BuildIDs: 22D64 and 22D63
Also, in future, on what devices this kind of two buildIDs will be created?
Topic:
Community
SubTopic:
Apple Developers
ProfileConnection Error com.apple.ManagedConfiguration 12:33:23.432323+0900 ManagedConfiguration PerfPowerServices MDM profile installation check failed with error:NSError.
Desc: Connecting process lacks permission 'com.apple.managedconfiguration.profiled-access'
US Desc: Calling process lacks 'com.apple.managedconfiguration.profiled-access' entitlement
Domain: MCXPCErrorDomain
Code: 39000
Type: MCFatalError
Params : (
"com.apple.managedconfiguration.profiled-access"
)
Topic:
Community
SubTopic:
Apple Developers
On wake from sleep the Mac Studio's Desktop picture is shown in actual resolution instead of stretched to fit screen. For example, a picture which is 2059 × 1371 is shown at that resolution on a 5K Retina screen and so only fills about 60% of the screen area. It starts with the picture positioned in the top left corner but sometimes moves down the screen. This behaviour does not change if the screen is scaled up or down – the picture size is also scaled.
Notice that icons on the Desktop are displayed in the correct position.
At the same time, the Dock is shown at the bottom of the picture instead of at the bottom of the screen.
Usually, the Desktop redisplays correctly. But increasingly, the only solution is to log out and in again.
This might be related to my other question on the Desktop picture Pref Pane.
See attached example which is a full screen capture i.e. command-shift-3 (with my personal details obscured):
Why can’t Apple just release a version that put the most frequent used emoticons in the most left side of the emoticons keyboard???
Each person always uses the same 20 or 30 emoticons.
How this could be reported to developers?
Thx
Topic:
Community
SubTopic:
Apple Developers
Hi,
I am trying to use the new FileProvider feature available on macOS 15 to create a FileProvder domain on an external drive.
I am creating the domain with the initializer
init(displayName:, userInfo:, volumeURL:)
But when I try to add the domain with NSFileProviderManager.add()
I get error NSCocoaErrorDomain, code 3328 - feature not supported.
My external drive is APFS formatted and encrypted. I am checking its eligibility with
NSFileProviderManager.checkDomainsCanBeStoredOnVolume(at:)
and the result is "eligible".
What should be done to solve this problem - is there a specific entitlement I have to add? I checked the possible entitlements and I don't see anything pointing in this direction.
I will be very grateful for any help!
Topic:
Community
SubTopic:
Apple Developers