Hi,
I am trying to develop MacOS application which will be connecting to USB devices and should be available in AppStore.
So it must be Sandbox and probably I've to use permission com.apple.security.device.usb.
I've following requirements:
I need to detect USB devices with file system
I need to have ability to upload & download files from this device
I need to read device serial number
I wonder if I can use IOKit for this and it will be compliant with AppStore rules or not?
Mac App Store
RSS for tagThe Mac App Store allows users around the world to discover and download your macOS apps.
Posts under Mac App Store tag
63 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
I'm running into issues creating a valid .pkg file for Transporter.app. I'm building an Electron app for the Mac App Store. I have a working build that's live, but I've encountered issues on x86 architectures.
The delivery process fails with the following error:
Asset validation failed (90981)
Invalid bundle. The “com.XXXX.***.pkg/Payload/XXXX.app” bundle supports arm64 but not Intel-based Mac computers. Your build must include the x86_64 architecture to support Intel-based Mac computers. For details, view: https://developer.apple.com/documentation/xcode/building_a_universal_macos_binary. (ID: 56e46e1a-6e77-4468-80e6-249ec8990fa8)
My build script that creates the .app and code signs the application uses the productbuild utility to create the .pkg. This is the command:
productbuild --sign "$INSTALLER_KEY" --product "./build/requirements.plist" --component "$APP_PATH" /Applications "$RESULT_PATH"
From my research, I would have assumed that the requirements property list was all that I would need to specify for the .pkg. This is this contents of /build/requirements.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>arch</key>
<array>
<string>arm64</string>
</array>
</dict>
</plist>
The application included in the .pkg is correctly built for arm64 and I've verified this with:
lipo -archs /Path/To/XXXX.app/Contents/MacOS/XXXX
arm64
Other research ha led me to solutions via Xcode, but as stated at the beginning I'm using Electron.
Any suggestions or insights would be very beneficial.
We are a team of beginner developers, and we recently published our game (made in Unity) on the App Store for both macOS and iOS. It was live for about 15 days until three days ago, when we received a notice from Apple that our account had been flagged for removal.
The email mentioned that our game violates section 3.2(f) of the Apple Developer Program License Agreement.
We've been trying to identify the issue since then, but we're not involved in any fraudulent activities.
Any guidance on how to resolve this would be a huge help. Thanks.
Hello!
I encountered an issue while packaging and uploading the project to the Mac store. I received an email stating:
ITMS-90296: App Sandbox not enabled - The following executors must include the 'com. apple. security. app sandbox' entitlement with a Boolean value of true in the entitlement property list: [[com. electron. iflyrecclient. pkg/Payload/iFlytek Listen. app/Contents/MacOS/iFlytek Listen]] Refer to App Sandbox page at https://developer.apple.com/documentation/security/app_sandbox for more information on sandboxing your app.
Though you are not required to fix the following issues, we wanted to make you aware of them:
ITMS-90886: 'Cannot be used with TestFlight because the signature for the bundle at' iFlytek hears. app 'is missing an application identifier but has an application identifier in the provisioning profile for the bundle.' Bundles with application identifiers in the provisioning profile are expected to have the same identifier signed into the bundle in order to be eligible for TestFlight.'
But in my memory, the sandbox was set to true. I have also tried the methods in the forum, but they have not been resolved,I hope you can help me see what happened. Here are the specific situations I developed,
This project is built and developed using electron9;
The entire project was not developed using Xcode;
The specific process of packaging into pkg is as follows:
Step 1: Use an electron packager to package the app file
Step 2: Use electron/osx sign to sign the entire app file (with options such as entitlement and provisioning profile configured)
Step 3: Use the productbuild -- component Yourappname. app/Applications -- sign "3rd Party Mac Developer Installer: *** *** (XXXXXXXXXX)" Yourappname. pkg command to generate the pkg package
Step 4: Upload to transporter
The above operations were executed normally, and after the second step of signing, using the codesign dvvv -- entities -provided on the official website to query also showed that the sandbox was true. However, after the upload was successful, you will receive an email showing an issue, and the corresponding uploaded version cannot be found on the app connect website
Hope to receive your answer. Wishing you good health and smooth work!
PS: When generating the app, there is no sandbox related configuration in Info.Plist in the app content package. Is this normal? I checked the info.Plist of Google Chrome, Sogou Input Method and other software, and there is no sandbox configuration. Moreover, I tried manually adding it and then packaging it, but also encountered the same email problem.
This bundle is invalid. Unable to load ‘Info.plist’ for bundle at path: ‘My App.app/Contents/Library/Spotlight/MyApp-SpotlightIndex.mdimporter’..
This mdimporter is embedded in my app with a Copy step in Build Phases and when I Archive the compiled app, I get that error when I try to Validate. The app works OK, the mdimporter Spotlight works OK, all runs fine. But the Validate on the Archive does not work, it fails with that error.
I have 6 Mac App Store apps. They're all upfront paid, with no IAP, and they've all used the same on-device Mac App Store receipt validation code for years, which returns 173 in main() if there's not a valid receipt. Incidentally, the apps are entirely Objective-C.
I've just learned that if I compile an app with Xcode 16 and the macOS 15 SDK, I get the alert "exit(173) Not Available" when the app returns 173 on macOS 15 Sequoia. The rest of the alert text says, "The exit(173) API is no longer available. You can use Transaction.all or AppTransaction.shared to verify in-app purchases instead."
I have several questions:
Why was this done?
Where is this behavior change documented?
What are my options, given the above description of my apps?
I have got from App Review Team this same feedback during several months:
Guideline 2.1 - Performance - App Completeness
We are unable to complete the review of your app because one or more of your in-app purchase products have not been submitted for review.
Next Steps
To resolve this issue, please be sure to take action and submit your in-app purchases and upload a new binary in App Store Connect so we can proceed with our review.
I am unable to understand and implement what is meant by the feedback:
… take action …
What "action" to take?
… submit your in-app purchases …
How to "submit in-app purchases"? I know how to submit my app but how "submitting in-app purchases”?
My app contains no separate in-app purchases but several pathways through the app. The app's code contains three flags that act as signposts on user’s way through the app (Basic, Standard, Premium). The signposts are not extra content and features distributed on the App Store. They are existing parts in the app from the very beginning. They are activated according to the model user chooses (Basic, Standard, Premium) and loads down from the App Store.
I try to solve the problem since several months - without success. Links offer no solution. Links say what one can do but not how to do it. What is missing are a couple of lines of code I can adapt and integrate into my app's Objective-C code.
Best regards
gefa
Hello,
I have a customer who keeps getting an "app is damaged" error for a freshly downloaded app from the Mac App Store.
The logs show the following lines:
standard 12:58:40.390872+0200 storeuid Receipt Validation (at.EternalStorms.Yoink)
Signature Check: PASS
Bundle ID Check: PASS
Bundle Version Check: PASS
GUID Check: PASS
Expiration Check: PASS
standard 12:58:40.391649+0200 storelegacy StoreLegacy: Failed to perform in-line receipt renewal for application at path /Applications/Yoink.app : '(null)'
The Mac in question is running macOS 12 Monterey - curiously, the customer has another Mac with that same system version and there it works just fine.
What can be done to make this work again?
Thank you,
– Matthias
Hello,
I'd like to find out if macOS Sequoia's MAC Address randomization affects the data (specifically, MAC addresses) we receive from I/O Kit.
For context, I'd like to find out if it affects my Mac App Store receipt validation code in any way.
Thank you,
– Matthias
Hello,
I hope to find out more about how AppTransaction works on macOS, specifically about its internet connection requirements: if I use this to validate that the app is a legit purchase from the Mac App Store, I would not want it to have an always-on requirement just to validate.
Does AppTransaction require the user to always be online for AppTransaction.shared ?
When an app is downloaded from the Mac App Store, is the data needed for AppTransaction automatically embedded during that download, or is that data downloaded upon first launch of the app, therefore requiring an internet connection at launch time?
Once the data/receipt has been downloaded by AppTransaction, is it cached until the app's next update, or is it cleared at some time during the version's life and needs to be re-downloaded, therefore requiring an internet connection at launch?
Where is that receipt/data stored?
Also, if you don't mind me sneaking in this non-related but sort of related question, in terms of receipt validation:
Does macOS Sequoia's MAC address rotation feature affect receipt validation in any way when using IOKit?
Thank you kindly,
– Matthias
Hi,
I've recently observed a sudden increase in support requests for one of my apps on the Mac App Store, reporting the error " is damaged and can't be opened. Please re-download it from the Mac App Store", all on different systems: macOS 12, macOS 13, and macOS 15 Sequoia.
Re-downloading does not resolve the issue most of the time.
One user reported that being connected to the internet resolved it - perhaps this is an OCSP issue again?
I myself cannot reproduce this issue.
Has there been a change in code-signing recently? Have some certificates changed? Anything else I should be aware of?
What is the best course of action to have users take who experience this, when re-downloading the app from the Mac App Store does not work?
Thank you,
– Matthias
Hello everyone,
Ever since installing macOS 15.1 beta 5 on this M1 13’’ MacBook Pro, I have been unable to install or update any application from the Mac App Store. I keep getting the following error: “The file “preflight.pfpkg” doesn’t exist.””. The same machine was fine with 15.0 Sequoia and the problem happens regardless of the region setting of the machine.
The machine has at least 148 GB of free disk space on the SSD. The same app I was trying to install from the MAS app I could install from the provider’s website (WhatsApp in this case, but I have tried with other apps too).
Has anyone noticed it before?
Raised the following Feedback ID if it can help: FB15296904
Kind Regards,
Goffredo
My app, which has been on the Mac App Store for many years, has an update being blocked by App review. The only change made is a bug fix (documented in the release notes).
First rejection:
Said I was using an entitlement I didn't need.
My response: I explained the feature that required the entitlement.
App goes back in review and gets rejected again for completely different reasons. They don't want me to write files in my App Sandbox container and instead write them in a more traditional user facing location (like in the Documents folder). They keep sending me a link to the "App Sandbox Design Guide" in the Documentation Archive (which appears to redirect to a different page?) and are quoting a section that is nowhere to be found in the link they send me (on the page I'm redirected to). I keep explaining to them that I cannot write outside my sandbox container and that this isn't my choice.
And they keep rejecting my app and sending me a broken link to the "App Sandbox design guide." It isn't my fault that I have to write to my sandboxed container by default or have a non-functioning app.
In any case, I don't understand why a bug fix update is being held up and I'm getting some vague instructions about possibly having to design some long winded explanation to the user in some ridiculously complicated onboarding process about choosing a folder in a save panel, why you have to choose the folder in the save panel (because I need your permission), OR just quit the app you just bought because it'll otherwise do nothing if you don't choose a folder in the save panel. Users got enough panels to deal with. At the very least App review shouldn't send me broken links from the Documentation Archive.
So I'm using my sandbox container by default (because by default I cannot do anything else). I've been doing this for a long time and I don't understand why it is suddenly a problem. What is my sandboxed container for if I can't write to it?
If documentation such as the "App Sandbox Design Guide" is still relevant and important why is it being archived anyway ? The link redirects I cannot find the section the reviewer is citing in the provided link.
I don't mind being asked to do something to improve the app but I've wasted a lot of time trying to satisfy app review in the past only to misinterpret what they actually are asking me to do causing more wasted time and energy and not getting a whole lot in return.
And I don't think it's fair to block a bug fix update.
Apple provides a way for the app developer to migrate app data from previous locations to the Mac App Store app container folder, see Migrating your app’s files to its App Sandbox container.
My question is, it seems this feature only allows us to migrate or move the existing app files into the sandbox folder, however, I'd like to "copy" these files instead of "move" them.
Instead of using the "Move" key in the plist file, I have already tried "Copy" key and it didn't work.
On my dev machine, I built my app to the 'dist' folder, the app was signed in either a 'Development' provision profile, or a 'Distribution' provision profile.
I then published the app to Mac App Store and it is alive. When I tried to install the app, I noticed that Mac App Store may install my app to my 'dist' folder (i.e. the build folder) instead of 'Applications' folder.
Is there a way to make sure that the app will always be installed to the 'Applications' folder?
Testing on a non-dev machine seems to be working fine.
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 am currently running MacOS 12.7.6 version and this is the last update on my machine, and swift playgrounds is not downloading in it, so I want its older version, I think I need Swift Playgrounds 4.1, so please give me a solution.
Thank you so much!
In Xcode -> Product -> Archive
"ValidateApp" button tell: Your app successfully passed all validation checks
and "Distribute" button tell: App upload complete
After 5 working days App Store Connect -> Apps -> MyAppl always show "1.0 Prepare for Submission"
What can I do now ?
"Certificates, Identifiers & Profiles" have two "Developer ID Installer" certificates,
two "Development" certificates and two "Mac Installer Distribution" certificates.
Is it a problem ?
How to delete duplicated certificates ?
How to fix it ?
Can I submit an Mac application to Apple Store with old OS:
Big Sure ?
Ventura ?
I currently have a paid app in the Mac App Store and am about to release a freemium version - free with three auto-renewing subscriptions.
Is there a way to set things up in App Store Connect such that this next release of my app becomes free at the point when it goes live? I need to synchronise the changeover.
I've read posts suggesting you just set the price to zero, but that doesn't synchronise the change (as far as I can tell).
Thanks in advance.
UPDATE: I see you can schedule a price change. Is the answer to not auto-release the app when it's approved, and to then coordinate its release date with the scheduled price change?