I have drag-and-drop functionality in the macOS app built with SwiftUI.
Since macOS 15 there is an issue with it, because as I found out, the completion block of loadObject method on NSItemProvider is not called until dropExited delegate method is called (see simplified code example below).
It causes very strange behavior in my app, for one of the most important features, and I am looking for a way to fix it as soon as possible.
Is anyone seeing the same issue?
I saw there was a bug with drag and drop on iOS 18, which seems to be fixed in 18.1. Anyone from Apple can say anything about this change in behaviour?
@Observable // Because it is injected via environment.
final class DragAndDropDelegate<T: Codable>: DropDelegate {
func dropEntered(info: DropInfo) {
// Is called as expected.
guard
let itemProvider = info.itemProviders(for: [UTType.data]).first
else { return }
itemProvider.loadObject(ofClass: DraggableObject<T>.self) { [weak self] (object, error) in
// This is only called after dropExited delegate method is called !!!
// Before macOS 15.0 it is called quickly after the loadObject method invokation.
asyncOnMainThread {
guard
let self,
let draggableObject = object as? DraggableObject<T>
else { return }
self.onEnter?(draggableObject.object, info.location)
}
}
}
func dropExited(info: DropInfo) {
// Is called as expected.
}
}
Post
Replies
Boosts
Views
Activity
Hi,
I could not find it in the official documentation, so I assume it is not ready yet.
I wonder if there is any other way to create campaign links and get analytics on them programmatically.
Otherwise, what is the right place to submit a request for it? Or perhaps it is on the horizon already?
All of a sudden my app started getting this CloudKit error, and it happens to a lot of users. I had no changes to cloud sync for months and really surprised by seeing this. What confuses me even more, is that there is no information on the web about this kind of error. I have no idea what causes it and how to solve it. Would love to get any feedback from the CloudKit engineer.
Client went away before operation 27761871408C460A could be validated; failing
{
"NSUnderlyingError": "<CKUnderlyingError 0x600002573f30: \"ClientInternalError\" (2005); \"Client went away before operation 27761871408C460A could be validated; failing\">",
"CKErrorDescription": "Client went away before operation 27761871408C460A could be validated; failing",
"NSDebugDescription": "CKInternalErrorDomain: 2005",
"NSLocalizedDescription": "Client went away before operation 27761871408C460A could be validated; failing"
}
Seems to happen only on macOS.
Hi,
I developed a utility app that allows monitoring system activity and usage. It is a sandboxed app distributed via the Mac App Store. Because in the sandbox I cannot fetch enough data about system activity (like processor temperature, fans, etc.), I developed a little Helper app (non-sandboxed), which currently is distributed via my website, and to enable extra features it provides, the user is asked to download and install it manually (it installs itself as a daemon).
I'm looking for ways to improve the user experience. Ideally, it would be a button inside the main app, which would download and install the helper app, without asking the user to do more than pressing a button.
As far as I understand, in the previous versions of macOS, it would be possible with privileged helpers and SMJobBless, but those are deprecated APIs now.
Another way I tried, is simply downloading the installer app from the website, but opening it programmatically from the main app is tricky since it cannot remove it from the quarantine, in other words, it fails with "operation not permitted".
Any advice is appreciated!
I have a macOS app that embeds a helper app in its bundle. That helper app is started by the main app, and from then on it runs independently.
I noticed that after updating the main app from the Mac App Store, while the helper app is running, it is not auto-restarted, unlike the main app.
What is the correct way to handle this?
The main app's bundle looks like this:
Main.app
- Contents
- MacOS
- Main
- Helper.app
I recently changed the architecture of my app by moving some of the logic into a helper app, which is embedded together with the main app.
The main app's bundle looks like this:
Main.app
- Contents
- MacOS
- Main
- Helper.app
It all works fine during development, and I could successfully archive and notarize it. However, when I try to launch the notarized version of the helper app, it fails with the signing issues.
failed to fetch
Main.app/Contents/MacOS/Helper.app/Contents/_CodeSignature/CodeRequirements-1 error=-10
I have tried a few things, but could not find any working solution. Any help is appreciated!
Hi folks,
I'm trying to build communication between the main app and its helper via inter-process communication.
I found here that it is possible if the apps are in the same app group. But I really cannot make it work, and cannot understand what I do wrong. It works all good if I add com.apple.security.temporary-exception.mach-lookup.global-name entitlement, so the setup seems to be correct? Where should I look to fix it? Also because having that entitlement means that it is gonna be tricky to get through the App Review.
I have an app that is distributed through the Mac App Store, and so is sandboxed. I need to fetch processor temperature, so some of its new features function correctly. Since fetching temperature is not possible in a sandboxed app, I was looking for a workaround. One idea that I'm investigating right now is having a helper app, which would not be sandboxed, be distributed separately, but be installed from the main app as a helper tool.
Is that possible? Is that gonna pass the App Store review?