How Transfer an iOS App to Other Developer Account
App transfer is fairly simple process but it’s not well known since we rarely transfer our apps. You can not find enough tutorials about the process because once we are done with it probably we won’t ever need it again. 😄
Dolap has been founded in 2016 and joined to Trendyol in 2018. Till last week we were operating on our own Apple Developer Account and App Store Connect account. Last week we have transferred Dolap iOS App to Trendyol’s account. In this article I’m going to tell you about some hidden secrets of app transfer which are not documented or you can only see along the process which I observed.
The official page for app transfer is this. Overview page gives you some important information about the process. We can finish transferring an app in 5 steps (although overview show 4 steps, I added one step to fix your development and app management issues 😂). I will add some inner steps to these main steps to walk you along the process.
Step 1: Verify that the app can be transferred
The app must meet specific criteria to be transferable. For example, at least one version of the app must have been released to the App Store. For more criteria, go to App transfer criteria.
- If you are using or have used any iCloud or Passbook entitlement you are free to be mad. You can not transfer your app. https://stackoverflow.com/a/19559979/697467.
- Anything related to TestFlight section in App Store Connect should be removed.
- Some tricky things can happen if you are using in-app purchase. If so please investigate it more. Since we don’t have in-app purchase I do not have valuable information about it.
Step 2: Back up all app information
Because an app is removed from your account after an app transfer, you should back up all information about the app before you transfer it.
I’ve backed up everything, screenshots(lots of 😄), keywords, description etc. But in the process I see that you do not need backup that much. You should be ok if you backup the things below. 🤞🏻
- You have to back up your reports. Because they will be lost when app is transferred.
- Support Url
- General App Information and App Review Information sections.
Step 3: Initiate the app transfer
The Account Holder user in your organization initiates the app transfer. Go to Initiate an app transfer.
For initiating app transfer you have login to App Store Connect with Account Holder role. Otherwise you can not see transfer option.
To start app transfer you need Apple ID and Team ID of the transferee account.
When starting app transfer you will see a screen something like above. You see that we have some information left on TestFlight section, so all the criteria was not met. After this screen you will enter Apple ID and Team ID. Process is done for the transferor account.
Step 4: Accept the app transfer
The Account Holder in the recipient organization accepts the app transfer. Go to Accept an app transfer.
This is an easy step, transferee account just accepts the request and fills the metadata with information provided by the transferor. (Backed up information in Step 3)
Although documentation says it can take up two business days, transfer completed in 15 minutes for our case.
Step 5: Some related changes about development and app management
Yes finally, I hope this step can provide some answers to your questions and solve your tricky problems.
I will go over a list of unrelated items. Some of these items can happen in your case and some of not.
- Devices are lost
Your test devices will not be transferred to your transferee account so you have add it manually again.
- Push Notifications
Push notifications will work as it is for your Production app. You don’t have to worry about it.
But if you are using build configurations like QA, Stage, etc. things are getting a little messy here. Because bundle ids for configurations other than Prod are not being transferred obviously. So you have delete to them from old account and create them again in the transferee account. A small hint; if you are using Automatically Manage Signing you can go over this process more smoothly.
Also you have to create new APNS certificates for this newly created bundle ids, give them to your backend guys and to third party push services to keep your push notifications working. 😥
- App Group (App Groups Entitlement)
We are using app groups because we have an iMessage app also. This was the hardest part for me in this whole process because I couldn’t find crumb of information about app groups and app transfer.
App groups are not transferred. In earlier versions of Apple Developer page you there was option for deleting app group as you can see in this stackoverflow thread. Right now there isn’t such option available.
So I had to create new app group name in Xcode’s capabilities section and uncheck the old one. In my case this solves my question. If you are facing the same thing please investigate more for better solutions.
- Developer Accounts, App Store Connect User
After transfer, all related developer accounts and App Store Connect accounts should be defined with same roles in the transferee account also.
- Universal Links (Deeplink) 🤦🏼♂️
If you are using Universal Links in your app you know about apple-app-site-association(AASA). In this file accepted url’s are defined as<TEAM ID><URL>
.
When transfer completed, your TEAM ID is changed to transferee account’s TEAM ID. So you have to change your TEAM ID in your AASA file also if you are using services line Branch.io you have to change it there too.
A strange note: Even though our deeplinks for our QA has stopped working. Somehow Production application is working fine. After I changed team id for QA app in AASA and Branch dashboard, problem is solved for QA.
For the Production app I’m thinking maybe deeplinks are working because current app in store is signed with the old apple developer account so it has the old team id. So now I’m waiting for next update. Will the deeplinks stop working?
This was my journey on app transfer. Different apps can have slight differences in transferring processes because of their capabilities. But overall this is how you transfer your app.
If you want contribute to my article please feel free to leave a response. I hope my experiences will be useful to you. Thanks for the reading.