Mac App Store possibility to allow free download of paid app - macos

I am having an application which I will be putting into the Mac App Store soon.
It will be a paid application.
It is my first app I'm transmitting, so please excuse my lack of knowledge so far.
I have some guys that helped me a lot during the development with testing and stuff.
As some kind of reward we arranged that each of them will get his version of the app for free.
The thing is that I did not think of code signing and security stuff in the beginning and now I'm having a bit of a dilemma.
I could of course give them a non-code-signed version of the app, but I do not want to have another development branch for these versions in case of future updates.
Is there any possibility for them to download the app from the App Store legally with some kind of "voucher"?

For each version of your app that you submit to the app store, you can generate 50 promo codes, which can be redeemed in iTunes
Note: promo codes expire after 30 days. I usually only generate 10 at a time, keep them safely stored in a text file with the date of generation, and delete them after sending to an individual.
To create promo codes:
1) In iTunes Connect, click "Manage your Applications"
2) Click the app
3) Click "View Details"
4) Click "Promo Codes"
For my Mac store app, I only have Release builds code signed (and sandboxed as well). Debug builds are not code signed / not sandboxed and have a "Beta" attached to the bundle ID (thus avoiding issues with non-sandbox and sandbox versions of the same bundle ID). I can then quickly give out betas to testers.

Yes, it's possible. On iTunes Connect you can create promo codes which these testers can "redeem" to get a full copy of your app on the Mac App Store.
Look for this button:

Related

How to upload to Apple's My Apps from a Xamarin project

I specifically need help getting the app build into my apps. I am so new to the MAC ecosystem. I need to get my app build from my windows 10 box (parallels) running VS2017/Xamarin Forms project uploaded to My Apps. What i have found is helpful if you are using xcode on the mac.
I have read tons of pages and help files and with all of that what I have includes:
created an app in VS2017/Xamarin that runs happily on the emulator from the MAC (MacBook Pro)
purchased the app dev subcription from apple
created a Production certificate (I don't need this yet but I was in there so...)
created a Development certificate
created a key pair from the Dev cert (that show up in the keychain)
created an App Group
created my app's placeholder under My Apps on App Store Connect
added my iPhone to devices via connecting to the Mac getting the UDID from iTunes
created a development provisioning profile for my iPhone (Not sure how this helps my testflight plight)
Assumptions
You must submit for review the same way for both TestFlight and Prod release to the actual store.
You don't need to open the app in xcode outside Xamarin
There is a tool or concept I am missing out on.
For development outside of Xcode, you will want to use Apple's Application Loader App to upload your app to App Store Connect.
As I said in comment to Matt below his correct answer to my actual question above, I needed to get the project right to get to that point.
Here are the more intimate details for the lurkers. I hope this helps some of you.
I was getting, or trying, to get all of this in place manually instead of letting VS do it's work getting this stuff together while I got to coding. FastLane FTW
Open the account management window, go to Tools > Options > Xamarin > Apple Accounts
Add your AppleID
Click on your appleID
Click the add button
Select your id in the lower text area
then add your distro cert. As is proper you deploy to TestFlight as a prod release.
Then get over to to your iOS project properties:
Make sure that your project is outputting an IPA. (Not Beer ;) )
These are my settings that worked. There could be other configurations that work as well.
I never get the automatic provisioning to work. And while this bundle signing settings look like it will not work, it does. I have received my apple approval for beta and users are in testflight.
Also, make sure you update the version of the app in the plist for subsequent releases. This change is not carried through from the AssemblyInfo.cs as one might expect. viola.
If you see this during debug make sure your debug version has Developer (Automatic) set for your debug settings.
FWIW - My VS2017:
While this does not perfectly match the info # https://learn.microsoft.com/en-us/xamarin/cross-platform/macios/apple-account-management?tabs=windows it worked for me. That page was key to the solution and deserves citing. Your mileage may vary.
If I missed something please reach out and I will update this.

macOS In-App Purchase in sandbox environment not authorised

I'm trying to get In-App Purchases (IAPs) working in a macOS app using the same Swift code, sandbox testers, and iTunes Connect account that I used for my iOS app. However, I can't get it to work. I'm using macOS High Sierra 10.13.6.
Open app
Apple's IAP testing recommendations are found here:
On a development macOS device, sign out of the Mac App Store. Then build your app in Xcode and launch it from the Finder.
If the text “[Environment: Sandbox]” doesn’t appear, you’re using the production environment. Make sure you’re running a development-signed build of your app. Production-signed builds use the production environment.
I have followed these steps by signing out of the Mac App Store, and building my app – signed for development – then launching it from the Finder. This means I don't get debug logs, unfortunately.
Navigate to table of products in-app
Here's my table of products:
I can buy a product by pressing the "Free" button or the "£4.99" button.
Attempt to buy product by pressing "Free"
After a short wait, brings up this popup saying 'Sign-in required'. I sign in using one of my sandbox testers (note: I have tried five different test accounts now, all of which worked on an iOS app under the same iTunes Connect account), registered with email addresses that aren't Apple IDs:
Having selected 'Buy', a short wait after that, this next popup appears:
After selecting 'Cancel' (as recommended here), after a short wait, the next popup appears:
You are not authorized to make purchases of this InApp in Sandbox at this time.
[Environment: Sandbox]
So I'm not sure whether it logged me in or not, and I assume that my purchase has failed (my table UI doesn't update to say 'purchased'). Note that I have also tried pressing 'Change Store' here, and it still fails ultimately.
Attempt to buy product by pressing "Free" again
This time, I'm not prompted to log in; I'm instead asked immediately whether I'd like to purchase the product. I click 'Confirm'.
However, now the purchase transaction never completes:
What might I be doing wrong? Do I need to log out of anything (e.g. iCloud) in Settings > Internet Accounts too?
Seems lame, but I eventually solved this by making new Sandbox tester accounts (tip: this time, I configured them as being US-based to avoid the complication of switching stores during the payment flow).
I think the problem was that I hadn't verified the Sandbox tester accounts I'd been using. This is either because Apple's email asking me to verify/activate the Sandbox tester accounts got sorted into my junk mail and missed completely, or because their backend had been having problems when I did click the link in their emails (I experienced both of these behaviours).

iTunes Connect and Xcode 8: your app has changed to invalid binary

Last week, with Xcode 7, I was able to upload without any issue. But today I am getting the message your app has changed to invalid binary.
I have seen that now with Xcode 8 a new icon 20x20 2x and 3x is added. I added one, but still getting the error.
Does anyone had similar problem?
Сheck your email!
In my case, I wasted a lot of time because I did not check my email. When you get such an error, Apple sends you an email with it's description.
For example, this is what Apple sent me:
"This app attempts to access privacy-sensitive data without a usage
description. The app's Info.plist must contain an
NSCameraUsageDescription key with a string value explaining to the
user how the app uses this data."
After days of wrestling with the same problem I finally got my app successfully submitted, but only after being on the phone with Apple Developer support.
A couple of things to keep in mind:
Make sure you set the Info.plist description keys for any entitlements. This is necessary for iOS apps. Mine was a macOS app, so this didn't apply.
Head over to iTunes Connect, and recreate all your provisioning profiles and code signing certificates if you're not 100% sure that they're valid. You can do it for both Developer and Distribution.
In Xcode, turn off automatic code signing for your app, and any build targets (you can try automatic code signing in Xcode after completing steps #2 and #4 but that wasn't what worked for me).
Go to Xcode preferences, and click your development team, and in the sheet that comes up, you should see some "Download" buttons beside the newly created (in iTunes Connect) code signing certificates and provisioning profiles. Click them all. And so you don't get confused in step #5, delete all the other stale provisioning profiles and code signing identities for this app.
In Build Settings for each of your targets, make sure that the Release build setting for code signing, and provision profile are set to the above newly created code signing certificate and provisioning profile.
Bump your build number.
Deep clean your project (Option-Shift-Command-K).
Archive build your app.
In the Organizer that opens up, select the newly archived app, and validate (it always validated, but I still would get Invalid Binary later).
Export the build and select the option "Save for Mac App Store Deployment" or similar.
When prompted, use the same Provisioning Profiles you used previously and save.
Open the .pkg in Application Loader which you can launch from Xcode > Open Developer Tool > Application Loader menu.
I was't getting any emails on the Invalid Binary issue. Instead, I was lucky enough to have set up my iPad with iTunes Connect, and so, like clock-work, I was getting notifications within a couple minutes of uploading the app: "Your app ... has changed to Invalid Binary."
If you don't get one of these Invalid Binary notifications, that's a good sign. Another 10-15 minutes later, I checked the iTunes Connect portal, and I could finally add the uploaded build and submit for review.
After a while of searching, as a last-ditch effort I added every possible 'NS...UsageDescription into each of my target's Info.plist and this seems to have worked. After process of elimination, I deduced that it was either the NSAppleMusicUsageDescription or the NSFaceIDUsageDescription key-string pair that was preventing the upload from being successful so I just added them even though I don't use either in my project. I have also read on some other threads that something with a new version of Xcode required them to have the NSAppleMusicUsageDescription even though they didn't use anything related to Apple Music.

Xcode 5 - What should I change on development version of my app, before uploading to store

My app is ready to upload. Everything works fine in development side. I wonder what I should change (about SSL or something else) before uploading to store?
This is a complex topic and we may not be able to answer this in once sentence.
For submission you may need a Distribution Profile from the Apple Dev Center. Depending on the functionality you're using in your app, and depending on if it's an iOS or Mac App, you may be able to use the provisioning profile Xcode has generated for you. You can set this under Build Settings - Code Signing - Provisioning Profile.
You also need to setup your app in iTunes Connect so you can submit it (this includes screenshots, App Store Category, description, etc).
To check if the submission will be successful, head over to Product - Archive, and from the screen that opens hit "Validate". This will tell you if you're missing anything.
Take a look at the App Distribution Guide for details on how to submit an app to the App Store. There's a whole chapter on Push Notifications in there too which deserve special attention: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/SubmittingYourApp/SubmittingYourApp.html
Those technicalities aside, make sure that any NSLog and NSAssert statements that you may have used while developing are removed or not compiled before submission.

You have no eligible Bundle IDs for Mac OS X apps. Register one here

I get the error in iTunes Connect when I select:
Manage Your Applications > Add New App > Mac OSX App
You have no eligible Bundle IDs for macOS apps. Register one here.
When I click on the "register" link, it shows one App ID that I have set up. All of the lights are yellow because my app does not use iCloud, Game Center or Push Notification.
Why is it not finding this App ID, or is there something I can do to "correct" it?
When I go to "Contracts, Tax and Banking", both Mac OS X Free and Mac OS X Paid Applications agreements are listed under "Contracts in Effect".
It seems to me that I have satisfied all prerequisites. What else is there?
Log out of iTunes Connect and log back in fixed it for me.
This just happened to me (though the error was updated to "macOS apps" - which I'm including here for future solution seekers)
You have no eligible Bundle IDs for macOS apps
It seems that for some reason Mac apps have their own section in the developer portal: switch to it before creating the App ID and it'll appear immediately in AppStoreConnect.
This issue appears to have reoccured again during the during the first week of January 2020.
This time, it was likely due to an error in the App Store Connect backend where it was not able to fetch the registered bundle ID from Apple Developer backend.
The same was reported to Apple by many developers (including myself) and the fix was applied by Apple on the backend servers.
A relevant discussion on the Apple Developer Forums can be found here:
https://forums.developer.apple.com/thread/127608
The Bundle ID needs to be different than the iOS version of the same app.

Resources