We have a valid DUNS number for our organization, now a subsidiary developed an app and they want to publish it using their apple developer account (unrelated to ours) but they can't because we own the main DUNS.
We must share the DUNS with them? Is it enough? Is it the correct behaviour?
The subsidiary must have access to our account to publish the app? (We don't want)
Post
Replies
Boosts
Views
Activity
I'm maintaining a very old Obj-c app using the very useful FSCopyObjectAsync
and FSMoveObjectAsync APIs to make async copy with progress info
(including the throughput)
Now I must drop compatibility with 10.9 and I
would to replace these APIs (consider they are no longer available with
Swift), but Apple deprecated them without a replacement, any hints?
I found the C API copyfile, it doesn't return the throughput and the fixed read buffer size (65k) is ridicolous because copy is very slow compared to FSCopyObjectAsync.
I would avoid to fork copyfile...
Do you know some other more Apple-like API similar to FSCopyObjectAsync?
I need to read the tags assigned to a file, if I use the code shown below on cli tools projects everything works fine, the identical code executed from sandboxed apps returns only the first element
NSDictionary<NSURLResourceKey, id>* dict = [[NSURL fileURLWithPath:@"absolute_file_path"] resourceValuesForKeys:@[NSURLTagNamesKey] error:nil];
NSLog(@"Result %@", dict);
The same with swift, running the code from playground the result is correct, running it from swift sandboxed app only the first element is returned
Is this a bug?
My sandboxed app contains a command line tool (CLT) sandoboxed, too.
App and CLT have the same Team and Bundle Identifier.
The CLT sends an apple script message to the app using SBApplication:applicationWithBundleIdentifier
First strange behaviour - Running app from XCode (Product -> Run)
If I launch the app from XCode (for debug purpose) and the CLT from terminal window I obtain the error
failed to get scripting definition from .../Library/Developer/Xcode/DerivedData/.../Build/Products/Debug/my.app; it may not be scriptable
If I run the app from Finder (double click it) and the CLT from terminal window everything works fine
Obviously both App and CLT launched are the same, the CLT is inside the Contents/Resources's App directory
Why launching from XCode doesn't work????
Second strange behaviour - Running app from another computer
The app must be distributed from Mac App Store but for test purpose I notarize and copy it to other computers.
If I launch the notarized app from /Applications everything works fine
If I launch the notarized app from another path (e.g. /Users/dave/My.app) the command line tool bundle identifier is nil
Is this the normal behaviour?
My sandboxed app contains a command line tool (CLT) also sandboxed.
The command line tool sends an Apple Event to the app but this works only if the CLT entitlements contains
<key>com.apple.security.temporary-exception.apple-events</key>
<array>
<string>com.my-app-bundle-id</string>
</array>
The CLT and bundle ids are identical, the team id is identical, too
I can't find where the error is hidden, may you help me?
The app is distributed via the Mac App Store
I show below the plist and entitlements
App entitlement
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.application-groups</key>
<array>
<string>$(TeamIdentifierPrefix)com.appgroup.myapp</string>
</array>
<key>com.apple.security.files.bookmarks.app-scope</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>
App plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>myapp</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>myext</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>my</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/octet-stream</string>
</array>
<key>CFBundleTypeName</key>
<string>myapp</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSTypeIsPackage</key>
<false/>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>NSDocumentClass</key>
<string>VDDocument</string>
<key>NSPersistentStoreTypeKey</key>
<string>Binary</string>
</dict>
</array>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleHelpBookFolder</key>
<string>myappHelp</string>
<key>CFBundleHelpBookName</key>
<string>com.myapp.help</string>
<key>CFBundleIconFile</key>
<string>my.icns</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.1.0</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key>
<string>2010, myapp.com</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
</dict>
</plist>
Command line tool plist
<?xml version="1.0" encoding="UTF-8"?>
		<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
		<plist version="1.0">
				<dict>
						<key>CFBundleDevelopmentRegion</key>
						<string>English</string>
						<key>CFBundleIdentifier</key>
						<string>com.myapp.myclt</string>
						<key>CFBundleInfoDictionaryVersion</key>
						<string>6.0</string>
						<key>CFBundleName</key>
						<string>codesign</string>
						<key>CFBundleVersion</key>
						<string>1.2</string>
						<key>NSAppleEventsUsageDescription</key>
						<string>Please give my command line tool access to my app</string>
				</dict>
		</plist>
Command line tool entitlement
		<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
		<key>com.apple.security.app-sandbox</key>
		<true/>
		<key>com.apple.security.application-groups</key>
		<array>
				<string>$(TeamIdentifierPrefix)com.appgroup.myapp</string>
		</array>
		<key>com.apple.security.automation.apple-events</key>
		<true/>
		<key>com.apple.security.temporary-exception.apple-events</key>
		<array>
				<string>com.myapp</string>
		</array>
</dict>
</plist>
I've a fully functional command line tool (CLT) communicating with its own sandboxed App.
The CLT sends messages to the App and waits until the app closes.
Now I need to migrate to NSXPCConnection and I started to study the AppSandboxLoginItemXPCDemo - https://developer.apple.com/library/archive/samplecode/AppSandboxLoginItemXPCDemo/Introduction/Intro.html#//apple_ref/doc/uid/DTS40012292
The sample works fine so I added a new CLT target to the project but it can't communicate with the helper (I added plist and entitlements to sandbox it)
So now I have two questions
how can I configure the CLT to communicate with the helper?
how the helper can communicate with the App (the helper is the client and the app is the server)?
Today I discovered very old code no longer works as expected on Catalina.
The following code
let url = URL(fileURLWithPath: "/dir1/dir2/path_to_some_folder_or_file")
NSWorkspace.shared.activateFileViewerSelecting([url])
On Catalina opens Finder but the selected item is dir2 (the parent folder) on Mojave and older versions correctly the selected item is the the last component path_to_some_folder_or_file
I discovered other apps have the same problem (Trasmission torrent client)
Any hints?