Hello,
When attempting to create a CKShare on a personal device linked to a Family iCloud plan (non-primary account holder), the operation fails with a quotaExceeded error. This occurs with the Family plan having 1.5TB available storage space.
This is also causing a data loss for the object(s) that were attempted to be shared.
Details
Account Type: Family iCloud Plan (2TB total storage)
Current Family Usage: 399GB
iCloud Account Usage: 70 GB
Steps to Reproduce:
Have an iCloud account with storage over the 5GB free space limit.
Be on a part of a iCloud Family Plan as the non-primary account holder.
Have storage space available in the Family Plan
Attempt to start a CloudKit Share/Collaboration on the device.
Observe that the CKShare creation fails with a quotaExceeded error.
Expected Behavior:
The CKShare should be successfully created, reflecting the total available storage of the Family plan.
Observed Behavior:
The CKShare fails to be created with quotaExceeded.
Additional Testing
On a test device using an iCloud account with no stored data, the CKShare was created successfully and shared without issue.
Suspected Cause
The CKShare functionality is verifying the personal storage allocation of the iCloud account and failing without checking total available storage provided by the Family plan.
Delve into the world of built-in app and system services available to developers. Discuss leveraging these services to enhance your app's functionality and user experience.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I really don't understand what kind of cyber crap CloudKit is!
In macOS, CloudKit basically doesn’t work properly
Topic:
App & System Services
SubTopic:
iCloud & Data
Tags:
CloudKit
CloudKit Dashboard
CloudKit Console
**Hi everyone **
We try to add BackgroundAssetExtension to our project, in local testing work fine, but when we try upload app to TestFlight we get some errors that we don't know how to fix.
App
Supported Destinations: iPhone, iPad, Mac(Designed for iPad)
Minimum Deployments: iOS 12
BackgroundAssetExtension
Minimum Deployments: iOS 16.4
Error when try to upload to TestFlight:
"<IDEDistributionIssue: severity(error), error(Error Domain=ContentDelivery Code=90171 \"Asset validation failed\" UserInfo={IDEDistributionIssueSeverity=3, NSLocalizedDescription=Asset validation failed, NSLocalizedRecoverySuggestion=Invalid bundle structure. The \U201cDemo.app/decompressed_data_5.bin\U201d binary file is not permitted. Your app cannot contain standalone executables or libraries, other than a valid CFBundleExecutable of supported bundles. For details, visit: https://developer.apple.com/documentation/bundleresources/placing_content_in_a_bundle (ID: 3dfe207a-b4e5-43db-9464-fcf59a730545)})>",
"<IDEDistributionIssue: severity(error), error(Error Domain=ContentDelivery Code=90924 \"Asset validation failed\" UserInfo={IDEDistributionIssueSeverity=3, NSLocalizedDescription=Asset validation failed, NSLocalizedRecoverySuggestion=Invalid Info.plist value. (ID: 073b5957-2e5b-4a7b-a4ae-7735b30a2d05)})>"
when we checked archive (Show package contents) that many files like
compressed_data_1.bin
compressed_data_2.bin
compressed_data_3.bin
compressed_data_4.bin
compressed_data_5.bin
compressed_data_6.bin
decompressed_data_1.bin
decompressed_data_2.bin
decompressed_data_3.bin
decompressed_data_4.bin
decompressed_data_5.bin
decompressed_data_6.bin
We added to main target in Build Phase -> Embed ExtensionKit Extensions
Info.plist
<key>BAEssentialMaxInstallSize</key>
<integer>3250188</integer>
<key>BAInitialDownloadRestrictions</key>
<dict>
<key>BADownloadAllowance</key>
<integer>3250188</integer>
<key>BADownloadDomainAllowList</key>
<array>
<string>*</string>
<string>*</string>
</array>
<key>BAEssentialDownloadAllowance</key>
<integer>3250188</integer>
</dict>
<key>BAManifestURL</key>
<string>https://*/itemsmeta</string>
<key>BAMaxInstallSize</key>
<integer>3250188</integer>
We will be appreciate for any suggestions :) If need some additional information let me know :pray:
I am trying to implement record sharing in my project, but when I try to copy the link on the UICloudSharingController, the sheet closes and the link doesn't get copied.
My CloudKitManager function:
public func shareTeam(_ team: Team) -> AnyPublisher<CKShare, Error> {
Future { [weak self] promise in
guard let self = self else {
promise(.failure(CloudKitError.unknown))
return
}
let record = team.toCKRecord()
let share = CKShare(rootRecord: record)
share[CKShare.SystemFieldKey.title] = "Join \(team.name)" as CKRecordValue
share.publicPermission = .readWrite
let operation = CKModifyRecordsOperation(recordsToSave: [record, share], recordIDsToDelete: nil)
operation.savePolicy = .ifServerRecordUnchanged
operation.qualityOfService = .userInitiated
operation.modifyRecordsResultBlock = { result in
switch result {
case .success:
promise(.success(share))
case .failure(let error):
promise(.failure(error))
}
}
self.privateDatabase.add(operation)
}
.eraseToAnyPublisher()
}
ViewModel function:
func shareTeam() {
guard let selectedTeam = selectedTeam else { return }
CloudKitManager.shared.shareTeam(selectedTeam)
.receive(on: DispatchQueue.main)
.sink { [weak self] completion in
switch completion {
case .finished:
break
case .failure(let error):
self?.didError = true
self?.error = error
}
} receiveValue: { share in
let sharePresenter = SharePresenter(
share: share,
container: CloudKitManager.shared.container,
teamName: selectedTeam.name,
rootRecord: selectedTeam.toCKRecord()
)
sharePresenter.presentShareSheet()
}
.store(in: &cancellables)
}
Hi,
I'm not too good with terminal stuff, but when I looked at activity monitor, my corespotlightd was using too much of my cpu. I decided to look up solutions on google and stumbled upon this: https://forums.developer.apple.com/forums/thread/675482. I tried some of the commands, and I closed the terminal while sudo was still running because I was getting impatient. Somehow, before I even realized it, I was logged out of my Apple ID and my desktop and downloads files were completely gone. For some reason, my applications are still the same, which makes me wonder if some of the files or folders I had before can still be recoverable. I checked time machine, and I wasn't able to recover anything. How cooked am I? I've lost all of my university work and some other pictures and stuff that I thought would never be damaged if I had it locally. Would appreciate any type of help. Thanks.
Topic:
App & System Services
SubTopic:
Core OS
Hello,
I am encountering an issue with user-generated files stored in the Documents directory on an iPhone 11 running iOS 18.2.
The problem occurs as follows:
1.The app generates and saves files in the Documents directory using FileManager.
2.These files are successfully saved and remain accessible while the app is running.
3.After restarting the app, the files appear to have been deleted from the Documents directory.
I have confirmed that:
1.The files are being saved to the correct location (Documents directory) and can be accessed during the current app session.
2.The app is not explicitly deleting these files during shutdown or restart.
3.This behavior is consistent across multiple app restarts.
Periodically when testing I am running into a situation where the app hangs and beach balls forever when using AVAudioEngine.
This seems to log out when this affect happens:
Now when this happens if I pause the debugger it's hanging at a call to:
[engine connect:playerNode
to:engine.mainMixerNode
format:buffer.format];
#0 0x000000019391ca9c in __psynch_mutexwait ()
#1 0x0000000104d49100 in _pthread_mutex_firstfit_lock_wait ()
#2 0x0000000104d49014 in _pthread_mutex_firstfit_lock_slow ()
#3 0x00000001938928ec in std::__1::recursive_mutex::lock ()
#4 0x00000001ef80e988 in CADeprecated::RealtimeMessenger::_PerformPendingMessages ()
#5 0x00000001ef818868 in AVAudioNodeTap::Uninitialize ()
#6 0x00000001ef7fdc68 in AUGraphNodeBase::Uninitialize ()
#7 0x00000001ef884f38 in AVAudioEngineGraph::PerformCommand ()
#8 0x00000001ef88e780 in AVAudioEngineGraph::_Connect ()
#9 0x00000001ef8b7e70 in AVAudioEngineImpl::Connect ()
#10 0x00000001ef8bc05c in -[AVAudioEngine connect:to:format:] ()
Current all my audio engine related calls are on the main queue (though I am curious about this https://forums.developer.apple.com/forums/thread/123540?answerId=816827022#816827022).
In any case, anyone know where I'm going wrong here?
Is it ok to have latency about 4 sec? The amount of downloaded data is less than 1 MB. Maybe I need to setup an index for every field requested?
When attempting to deploy schema changes in the iCloudKit Database by clicking the Deploy Schema Changes button, a Confirm Deployment dialog appears, showing an error: “Internal error”. The following error details were observed in the JavaScript console:
• description: “The request has failed due to an error.”
• headers: undefined
• message: “Known response error: The request has failed due to an error.”
• result:
• code: 400
• detailedMessage: undefined
• message: “bad-request”
• reason: “Internal error”
• redirectUrl: undefined
• requestUuid: “0c5b4af2-15c9-425f-87ea-************”
• retryAfterSeconds: undefined
Topic:
App & System Services
SubTopic:
iCloud & Data
Tags:
CloudKit
CloudKit Dashboard
CloudKit Console
I want to check if the device has a internet connection or not by pinging DNS "8.8.8.8".
connection.send(content: content, completion: .contentProcessed {[weak self] error in
send function is not returning any error even if the host is unreachable.
I am checking if I can receive the data or not but connection.receiveMessage function never returns.
This is the complete code which I am following:
private let networkMonitor = NWPathMonitor()
private var connection: NWConnection
@MainActor var isConnectedToInternet = false
init(host: NWEndpoint.Host = "8.8.8.8",
port: NWEndpoint.Port = 53) {
let endpoint = NWEndpoint.hostPort(host: host, port: port)
connection = NWConnection(to: endpoint, using: .udp)
startMonitoring()
}
private func startMonitoring() {
networkMonitor.pathUpdateHandler = { [weak self] path in
guard let self else { return }
ping(callback: { isSuccess in
print("***** ping status:", isSuccess)
Task { @MainActor in
self.isConnectedToInternet = isSuccess
}
})
}
let queue = DispatchQueue(label: QueueLabel.networkMonitor)
networkMonitor.start(queue: queue)
}
func ping(
host: NWEndpoint.Host = "8.8.8.8",
port: NWEndpoint.Port = 53,
callback: @escaping ((Bool) -> Void)
) {
var didSendState = false
connection.stateUpdateHandler = {[weak self] state in
guard let self = self else { return }
guard !didSendState else {
if state != .cancelled {
cancel(connection)
}
return
}
switch state {
case .ready:
// State is ready now send data
let content = "Ping".data(using: .utf8)
let startTime = Date()
connection.send(content: content, completion: .contentProcessed {[weak self] error in
guard let self = self else { return }
if error != nil {
callback(false)
didSendState = true
cancel(connection)
} else {
print("Ping sent, waiting for response...")
connection.receiveMessage { [weak self] content, _, _, receiveError in
guard let self = self else { return }
if let receiveError {
print("Error receiving ping: \(receiveError.localizedDescription)")
callback(false)
} else if let content = content, String(data: content, encoding: .utf8) == "Ping" {
let roundTripTime = Date().timeIntervalSince(startTime)
print("Ping received! Round-trip time: \(roundTripTime) seconds")
callback(true)
} else {
print("Invalid response received")
callback(true)
}
didSendState = true
cancel(connection)
}
}
})
case .failed( _), .waiting( _), .cancelled:
didSendState = true
callback(false)
case .setup, .preparing:
// No callback because the ping has not yet succeeded or failed
break
@unknown default:
didSendState = true
callback(false)
// We don't know what this unknown default means, so cancel pings to be safe
cancel(connection)
}
}
connection.start(queue: .main)
}
func cancel(_ connection: NWConnection) {
connection.cancel()
}
}
Can anyone please help what I am doing wrong.
Recently, after updating the Developer app to the latest version, my iPad has been unable to open this app as it crashes immediately upon launch. Prior to the update, the app functioned normally. My device is an 11-inch iPad Pro from 2021, running iPadOS 17.3. I have tried troubleshooting steps such as reinstalling the app and restarting the device, but these actions have not resolved the issue. However, I need to use this specific version of the system, iPadOS 17.3, for software testing purposes and cannot upgrade the system. Other apps on my device work normally without any issues. Is there a solution to this problem? I have attempted to contact the developer support team in China, but they were also unable to provide a resolution. This issue is reproducible 100% of the time on my iPad.
on MacOS I am using raw socket and PF_Route options to monitor the routing table changes but looks like that is not supported in iOS
what are the other ways to achieve real time monitoring in iOS ?
Topic:
App & System Services
SubTopic:
Networking
In the mobile application we are developing we need to use the "SMS and MMS Message Filtering" functionality to analyze SMS messages received from unknown senders.
The questions that arise about the use of this functionality are:
Does this functionality allow these messages to be sent to solutions deployed in Microsoft Azure?.
If the previous case is confirmed, could we use Rest APIs that we already have deployed in Azure?.
If it were not possible to configure access to an existing Rest API, what would be the definition of the API to be implemented in the cloud for this service?.
And finally, how would the configuration of access permissions to this API deployed in the cloud be?.
In the sandbox environment, when I quickly and repeatedly purchase an item, Transaction.id will be repeated.
Will there be duplication in the production environment?
func pay(productId: String, orderId: String) async {
guard !productId.isEmpty, !orderId.isEmpty else { return }
let orderObj = ApplePayOrderModel.init(orderId: orderId, productId: productId)
do {
let result = try await Product.products(for: [productId])
guard let product = result.first else {
return
}
let purchaseResult = try await product.purchase()
switch purchaseResult {
case .success(let verification):
switch verification {
case .verified(let transaction):
orderObj.transactionId = String(transaction.id)
await transaction.finish()
case .unverified(let transaction, let error):
await transaction.finish()
}
case .userCancelled:
break
case .pending:
break
@unknown default:
break
}
} catch {
print("error \(error.localizedDescription)")
}
}
Topic:
App & System Services
SubTopic:
StoreKit
We are using PacketTunnel as system extension to establish vpn tunnel. The flow is like:
Create a PacketTunnelProvide to establish vpn
When tunnel gets connected add excludedRoutes by calling setTunnelNetworkSettings().
Result: The routing table is not getting updated with new excludeRoutes entries.
As per setTunnelNetworkSettings() documentation:
"This function is called by tunnel provider implementations to set the network settings of the tunnel, including IP routes, DNS servers, and virtual interface addresses depending on the tunnel type. Subclasses should not override this method. This method can be called multiple times during the lifetime of a particular tunnel. It is not necessary to call this function with nil to clear out the existing settings before calling this function with a non-nil configuration."
So we believe setTunnelNetworkSettings() should be able to set new excludeRoutes. We could see we are passing correct entries to setTunnelNetworkSettings():
{
tunnelRemoteAddress = 10.192.229.240
DNSSettings = {
protocol = cleartext
server = (
10.192.230.211,
192.168.180.15,
)
matchDomains = (
,
)
matchDomainsNoSearch = NO
}
IPv4Settings = {
configMethod = manual
addresses = (
100.100.100.17,
)
subnetMasks = (
255.255.255.255,
)
includedRoutes = (
{
destinationAddress = 1.1.1.1
destinationSubnetMask = 255.255.255.255
gatewayAddress = 100.100.100.17
},
{
destinationAddress = 2.2.2.0
destinationSubnetMask = 255.255.255.255
gatewayAddress = 100.100.100.17
},
{
destinationAddress = 11.11.11.0
destinationSubnetMask = 255.255.255.0
gatewayAddress = 100.100.100.17
},
)
excludedRoutes = (
{
destinationAddress = 170.114.52.2
destinationSubnetMask = 255.255.255.255
},
)
overridePrimary = NO
}
MTU = 1298
}
The problem is present on macOS Sequoia 15.2.
Is it a known issue? Did anyone else faced this issue?
Hi everyone,
We came an issue that, In some scenarios in our app we cannot fetch any resources from device (Photo and Contact).
One case we catched is putting app in background and spending time in other commonly used apps and coming back to our app cause this issue but there is a small chance that get this issue during using the application.
In cell, we are trying to fetch the image like this
imageFetchTask = Task {
let image = await CompositionRoot.shared.photosManager.image(requestType: .imageCollections, forId: photoAsset.photoId)
self.photoImageView.image(image)
}
and inner layers of this code we get the PHAsset and request image
PHAsset.firstAsset(for: id)
let manager = PHImageManager.default()
manager.requestImage(for: asset, targetSize: request.targetSize, contentMode: .aspectFill, options: request.options) { (image, info) in
continuation.resume(returning: image)
}
We figured out that issue not happening only in Photos also Contacts and
any web request. So any help according to this situation is well appreciated.
Thanks
Topic:
App & System Services
SubTopic:
General
Tags:
Contacts
PhotoKit
Background Tasks
Background Assets
I have an app written in swift.
It has multiple pods dependencies installed.
When the app is generated with Xcode 15.4 the size of app is ~148Mb
and when the same app is generated with Xcode 16.2 the size is ~246MB
When I extracted and analysed the app, it was observed that one of the framework installed via pods Dependencies("DocumentReaderCore") was consuming more size(42.9 MB vs 215 MB) the DocumentReaderCore present in the Payload/.app/Frameworks/DocumentReaderCore.framework/DocumentReaderCore was of type linux executable when generated using Xcode 15.4 vs the other was od document type and size was 215MB.
You are probably aware of the upcoming root certificate change for any servers you might have that you use to send push notifications by connection to APNs.
If you are not, here is the announcement.
We have been getting some questions about this, and understand not everyone is familiar with their server setup.
First, we would like to clarify that this is only a change to your server's certificate trust store. You do not need to update anything else, like your APNs push certificates, the build certificates and provisioning profiles for your team/app, and so on. All you need to do is to install the mentioned new root certificate to your push server's trust store.
If you are using a 3rd party push provider, it is them who will need to handle their servers. But you may want to double check with them nevertheless.
If you are managing your own push servers that connect to APNs directly, then it is your responsibility to download and install the root certificate mentioned in the above link on your server(s).
Unfortunately we cannot provide specific instructions on how to install this root certificate on every kind of server out there. Each server operating system/push server software will have different ways these root certificates are installed, which is out of scope of our support abilities.
If you are not sure how to do this, I would recommend you seek help for this from your server-side developers or server admins.
Or, if you don't have access to such resources, you can ask the support channels for your system the question: How do I install a root certificate?
We have setup a test server at 17.188.143.34:443 that you can use to try and send pushes to test whether your new root certificate is correctly installed.
An alternative way to test this would be, from a terminal prompt:
openssl s_client -connect 17.188.143.34:443 -servername api.sandbox.push.apple.com -verifyCAfile USERTrustRSACertificationAuthority.crt -showcerts
Change the parameter to the -verifyCAfile argument to point to your trust store, and it should allow you to validate
Sample return results would be:
Connecting to 17.188.143.34
CONNECTED(00000003)
depth=2 C=US, ST=New Jersey, L=Jersey City, O=The USERTRUST Network, CN=USERTrust RSA Certification Authority
verify return:1
depth=1 CN=Apple Public Server RSA CA 11 - G1, O=Apple Inc., ST=California, C=US
verify return:1
depth=0 C=US, ST=California, O=Apple Inc., CN=api.sandbox.push.apple.com
verify return:1
Argun Tekant /
DTS Engineer /
Core Technologies
Topic:
App & System Services
SubTopic:
Notifications
Tags:
APNS
User Notifications
PushKit
Push To Talk
I am trying to get universal links to work in our app Firefox iOS
The Problem:
I am not able to get universal links to work for our release app or beta app scheme locally or with a TestFlight build.
I am able to get it working on our development scheme with a locally hosted app site association file. I also was able to get it working using our development scheme but setting the bundle id to the release app bundle id. I also built a demo app with the release app id and the release app development certificate. It succeeded there as well.
Implementation Steps:
Added associated domains entitlement to the production and beta schemes for our main app target (No associated domains entitlements or capabilities added for any extensions)
Confirmed that the bundle ids associated with these schemes have the associated domains capability
Added applinks:blog.mozilla.org to associated domains list
Confirmed in code that user activities are being handled via SceneDelegate.swift
Steps to Debug:
I have gone through and validated every step in the provided Universal Link Debugging. All were successful:
Associated Domains Development -> Diagnostics: Opens Installed App
Validate AASA host and applinks match
curl -v https://blog.mozilla.org/.well-known/apple-app-site-association returns the expected json file
swcutil dl correctly downloads the AASA blob
swcutil verify succeeds
I have inspected the IPA of our beta build and confirmed the App ID and the associated domains is an entitlement.
I have looked at the console logs filtering by swcd. I am not seeing any errors and I see the download for the AASA file kick off:
Beginning data task AASA-4BABF039-3C69-4E36-AA4E-ECCDF3D14878 { domain: bl….mo….org, bytes: 0, route: cdn }
There is only one error that appears in the console but our app is not enterprise-managed so I assume this is normal.
Error getting enterprise-managed associated domains data. If this device is not enterprise-managed, this is normal: Error Domain=SWCErrorDomain Code=1701 "Failed to get associated domain data from ManagedConfiguration framework." UserInfo={NSDebugDescription=Failed to get associated domain data from ManagedConfiguration framework., Line=298, Function=<private>}
I have run Sysdiagnos and identified for our App ID:
Site/Fmwk Approval: approved
I am at a loss as to what is preventing universal links from working even though all validation steps pass.
We use network extension for the VPN connection implementation. In the network extension, we need to call a third-party library to do some check. Before the macOS is upgraded to 15.2, everything is fine. It just stop working after macOS is upgraded to 15.2.
I did some debugging, and looks like the api provided by the dylibs is blocked. One system log is shown suspiciously
Unable to create bundle at URL (<private>): unable to create file system representation of URL (13)
The background is that we did embed the third-party dylibs in the app resources folder and the app extension tries to dlopen the dylibs and call the functions. And actually we do not know how the dylibs are implemented. Since it was working with older macOS, we would like to see if there is any related change on os itself.
I have tried to change the places of dylibs, moving them from container app bundle resource folder to app extension resources folder, even the app group folder. Unfortunately it does not work either.
Do you guys have any opinions?
Topic:
App & System Services
SubTopic:
Core OS