Deploying apps to Apple’s B2B App Store.
All of us have heard of the App Store. However, what is this B2B App Store?
Did you know that there are different categories within the App Store in terms of app distribution? Let me jot them down for you.
The Public or Consumer App Store
The public app store is accessible by each and every person that owns an iOS device and hence developers were only able to build applications that were generic across businesses.
The Custom (B2B) App Store
This is essentially a private App Store, where you determine the audience who can purchase your app. It allows yo to provide specific features, branding, or other customisation. They are not exposed to the public App Store and only visible to the organisations you allow.
The apps that we normally build are B2C apps where businesses or individuals deploy their apps to the general public(the consumer). The process of public app deployment is quite well documented. However, I faced difficulties while trying to find well documented articles for custom app deployment and hence, I am penning down this article.
Personal motive behind Custom App development and deployment:-
I recently had to deliver a personalised app to a particular group of people. It was an app for an event and it contained social media like features, event itineraries and many more. I faced an issue while deploying the app to the App Store. The app got rejected by the 4.2 guideline — “We found that the usefulness of your app is limited because it seems to be intended for a small, or niche, set of users”. There was no such issue while uploading to the Play Store.
How did I overcome this issue?
The different approaches that I came across:-
- Use an MDM(Mobile device management) server where devices are registered manually. I didn’t move forward with this because I would have to manually add all devices and keep track of all devices where this app would be installed. Access to UUIDs would be required. This is unnecessary and not automated. (Assuming that I am enrolled into the Apple Developer Program)
- Ad hoc distribution. This wouldn’t solve my issue either because ad hoc deployment should also be used for internal testing purposes. The devices should be registered using their UUIDs before one can install and run the app on those devices. Also, the maximum number of devices that can be registered is 100. (Assuming that I am enrolled into the Apple Developer Program)
- Enrol into the Apple Enterprise Program. The Apple Developer Enterprise Program is only for the internal use and distribution of proprietary apps in specific use cases that are not adequately addressed with public apps on the App Store, custom apps through Apple Business Manager or Ad Hoc distribution, or beta testing through TestFlight. https://developer.apple.com/programs/enterprise/. My requirements didn’t fit the eligibility criteria either.
- The final approach → Transform my account with Apple Business Manager and deploy a Custom App. Users then will be able to redeem the app using a link/code.
What is the Apple Business Manager?
Apple Business Manager is a web-based portal that helps you deploy iPhone, iPad, Mac and Apple TV. And you can easily provide employees with access to Apple services, set up device enrolment, and distribute apps, books and software — all from one place. It allows us to enrol devices so that they can be set up automatically with mobile device management (MDM). It also streamlines and customises the setup process for employees.
Difference in steps when compared with normal deployment:-
- While uploading your archive, select the ‘App Store’ option only and not ad hoc, enterprise or development. Upload your app to the app store.
- You can then log in through https://appstoreconnect.apple.com/. Select the custom app option in the ‘Pricing and Availability’ section. You can also define a price for your app. I set it up as free. You also have to add an organisation ID when you select the private distribution option.
- After this, log in to apple business manager and there you can see your uploaded app in the ‘Custom Apps’ section. Remember that Custom Apps also go through the same review process as public apps. Hence, you have to wait until your app is ready for sale after passing the review process.
- You also need to add in your billing information in the billing section. This is because of the ‘pricing’ factor on the custom apps. Even if, your app is free, you will still have to add the payment information.
- Select your app under the ‘Custom App’ section and there you can find the ‘Redemption Codes’ option under ‘Buy Licenses’. I will suggest you to go through with this option because we want to eliminate the problems of MDM and manually entering UUIDs completely.
- Here, you can select the number of redemption codes you want to buy. You can perform the purchasing operation multiple times. After buying, you will get an option to download the codes. The codes will be present in an excel sheet. You can use these codes and proprietary processes to enable your client’s employees to access your application. The codes are accompanied by an iTunes link too.
- The end user either opens the link on the device, or uses the redemption code in the App Store using the “Redeem Gift Card or Code” button.
UPDATE as of 4th of May, 2022
There are cons to the entire process of using redemption codes to provide the app to the end users as well.
- Updating a Custom App:- The app once downloaded can’t be updated as of now. Apple hasn’t provided us a way to do so despite repeated requests.
- Distributing to foreign countries:- The redemption codes are equivalent to gifts and Apple does not allow sending such gifts to users outside of the native country where the app is being deployed.
Overcoming the cons:-
- Updating a Custom App
One can take the Codepush route.
CodePush is an App Center cloud service that enables React Native developers to deploy mobile app updates directly to their users’ devices. It works by acting as a central repository that developers can publish certain updates to (for example, JS, HTML, CSS and image changes), and apps can query for updates from (using the provided client SDKs).
There’s a drawback to this as well. If a new package is added, it can’t be pushed through Codepush. A new deployment will have to be done.
I still found one way of working around this problem too. This involves having good knowledge of website development. I created a product page for my app. The webpage contained two buttons for downloading the app — one for Play Store and another for App Store. The Play Store button would simply redirect to the play store app page. The tricky part was what I wanted to do with the ‘Get on the App Store’ button.
Clicking on the button would open a new iTunes link every time. I also made sure that the same link or code wasn’t repeated. The next time, the app is updated and a new version comes up on the B2B App Store, a new set of redemption codes are generated and updated in your private database for reference.
2. Distributing to foreign countries
The app I was working on had a global user base and I received a complaint during the testing phase that the app was not available outside the India App Store. This was a disaster as there wasn’t much time left before the deadline. The Apple docs had not mentioned anything like that explicitly and I was raging from within as to why there wasn’t any mention of that. Hastily, I started going through questions earlier asked and fortunately I found one solution on one of the threads.
Unlisted App Distribution
This is what saved me from the blushes. Unlisted apps are apps that aren’t suited for public distribution as unlisted on the App Store, discoverable only with a direct link. Unlisted apps don’t appear in any App Store categories, recommendations, charts, search results, or other listings.
One needs to apply for a link to the unlisted app through the following link. The form requires the app name and the id for which the link has been requested and the reason as to why an unlisted app link has been requested for. Before submitting the form, the app should be archived as usual and the build should be submitted for review. If a private app has already been submitted and approved, do not use that id and name in the request form. Create a new app record and perform the usual steps of uploading and sending for review. Make sure that the distribution method is set to public.
Concluding thoughts ….
The pros of using a custom app is plenty because:-
- Harnessing the power of custom apps does not require extra charge as the basic ‘Apple Developer Program’ is enough.
- We do not need to enrol into the very costly ‘Apple Enterprise Program’.
- We can completely eliminate the process of manual MDM using UUIDs and allow any user having access to the code use the app.
Thus, one can either take the custom app route when they are creating paid apps for a particular organisation within the native country or take the unlisted app route if there is a global user base. Remember that the unlisted apps are submitted to the Public App Store and not the Custom App Store.
Thanks for reading!!
These are my opinions. You are always welcome to have your own and cross question me. After all, that’s the essence of learning!