Μεταφορά εφαρμογής σε άλλο λογαριασμό Apple Developer
Από Mehdi Azizi
Δημοσιεύτηκε στις , 9 λ.
Ο κάτοχος ξεκινά το App Transfer και ο παραλήπτης αποδέχεται μέσα σε 60 ημέρες. Η εφαρμογή κρατά κριτικές και Bundle ID. Προϋποθέσεις, βήματα, παγίδες.
Για να περάσεις μια εφαρμογή από έναν λογαριασμό Apple Developer σε άλλον, η Apple προσφέρει τη μεταφορά εφαρμογής (app transfer) μέσα στο App Store Connect. Ο κάτοχος του λογαριασμού που την παραχωρεί ξεκινά τη μεταφορά, ο κάτοχος του λογαριασμού που τη λαμβάνει την αποδέχεται μέσα σε 60 ημέρες και μετά η διαδικασία παίρνει έως δύο εργάσιμες ημέρες. Η εφαρμογή μένει διαθέσιμη προς πώληση, κρατά τις βαθμολογίες, τις κριτικές και το Bundle ID της, και οι χρήστες της συνεχίζουν να λαμβάνουν ενημερώσεις.
Ό,τι χαλάει, το προετοιμάζεις πριν πατήσεις το κουμπί: TestFlight, συνδρομές, Sign in with Apple, push notifications, κοινόχρηστο keychain. Δεν έχω μεταφέρει ακόμα εφαρμογή ο ίδιος. Ο οδηγός αυτός ακολουθεί τις σελίδες βοήθειας της Apple, όπως τις ξαναδιάβασα στις 3 Νοεμβρίου 2026, και η τελική λίστα είναι αυτή που θα εφάρμοζα στις δικές μου εφαρμογές, φτιαγμένες με Expo και RevenueCat.
Πότε μεταφέρεις μια εφαρμογή
Σύμφωνα με την παρουσίαση της μεταφοράς εφαρμογής, τη χρειάζεσαι όταν έχεις πουλήσει την εφαρμογή σε άλλον developer ή όταν θέλεις να τη μετακινήσεις σε άλλον λογαριασμό ή άλλον οργανισμό. Τυπικό παράδειγμα για έναν indie developer: μετάβαση από προσωπικό λογαριασμό στον λογαριασμό της εταιρείας του. Για να ανοίξεις αυτόν τον λογαριασμό, διάβασε πρώτα τον οδηγό για τον αριθμό D-U-N-S.
Η μεταφορά μετακινεί την εφαρμογή, όχι τον λογαριασμό σου. Κάθε εφαρμογή μεταφέρεται ξεχωριστά και φεύγει εντελώς από τον λογαριασμό σου μόλις ολοκληρωθεί η διαδικασία.
Οι εννέα προϋποθέσεις της Apple
Η σελίδα με τα κριτήρια μεταφοράς αναφέρει εννέα, με αυτή τη σειρά:
| Κριτήριο της Apple | Τι ελέγχεις |
|---|---|
| Κανένας από τους δύο λογαριασμούς δεν είναι σε αναμονή ή υπό αλλαγή, και οι δύο έχουν αποδεχτεί την τελευταία έκδοση των συμβάσεων επί πληρωμή και δωρεάν | Business, καρτέλα Agreements, και στις δύο πλευρές |
| Η εφαρμογή έχει τουλάχιστον μία έκδοση δημοσιευμένη στο App Store | Εφαρμογή που δεν κυκλοφόρησε ποτέ δεν μεταφέρεται |
| Η εφαρμογή δεν είναι σε προπαραγγελία σε καμία χώρα ή περιοχή | Η προπαραγγελία έχει τελειώσει ή αποσυρθεί |
| Η εφαρμογή δεν έχει κανένα από αυτά τα status: Processing for Distribution, Waiting for Review, In Review, Accepted, Pending Developer Release, Pending Apple Release | Η τελευταία σου έκδοση είναι διαθέσιμη προς πώληση |
| Οι αγορές εντός εφαρμογής έχουν ένα από αυτά τα status: Approved, Ready to Submit, Developer Removed from Sale, Rejected | Καμία αγορά εντός εφαρμογής σε έλεγχο ή ημιτελής |
| Τα πακέτα πόρων που φιλοξενεί η Apple δεν έχουν καμία έκδοση σε Waiting for Review ή In Review, στο TestFlight ή στο App Store | Τίποτα σε έλεγχο από αυτή την πλευρά |
| Κανένα αναγνωριστικό προϊόντος αγοράς εντός εφαρμογής δεν χρησιμοποιείται ήδη από εφαρμογή του παραλήπτη | Σύγκρινε τα αναγνωριστικά των δύο λογαριασμών |
| Εφαρμογή Mac που χρησιμοποίησε sandbox και μοιράζεται το Application Group Container Directory της με άλλες εφαρμογές Mac δεν μεταφέρεται | Μόνο ορισμένες εφαρμογές Mac |
| Εφαρμογή Apple Arcade δεν μεταφέρεται | Αφορά λίγα projects |
Περίμενε να είναι διαθέσιμη προς πώληση η τελευταία σου έκδοση πριν ξεκινήσεις τη μεταφορά.
Προετοιμασία της μεταφοράς
Αυτά τα τακτοποιείς πριν πατήσεις το κουμπί, σύμφωνα με τις σελίδες βοήθειας της Apple:
- Κράτα αντίγραφο από όλα. Η εφαρμογή φεύγει από τον λογαριασμό σου: κάνε εξαγωγή metadata, τιμών, ημερομηνιών διαθεσιμότητας, πωλήσεων και λήψεων.
- Κλείσε το TestFlight. Αφαίρεσε όλα τα builds και όλους τους testers, και άδειασε τα πεδία του Test Information σε κάθε γλώσσα. Το πώς δουλεύουν οι ομάδες εξηγείται στον οδηγό για το TestFlight.
- Άδειασε το Xcode Cloud και αφαίρεσε το entitlement App Replacement αν υπάρχει, με μια δημοσιευμένη ενημέρωση.
- Συνδρομές: μοιράσου το app-specific shared secret. Εφαρμογή που πουλά αυτόματα ανανεούμενες συνδρομές πρέπει να χρησιμοποιεί shared secret ειδικό για την εφαρμογή. Το δημιουργείς, το στέλνεις στον παραλήπτη και μετά ξεκινάς τη μεταφορά. Ο παραλήπτης ενημερώνει τους servers του πριν αποδεχτεί και δημιουργεί νέο secret μόλις ολοκληρωθεί η μεταφορά.
- Sign in with Apple: αποσύνδεσε το group και ετοίμασε τα αναγνωριστικά. Λεπτομέρειες πιο κάτω.
- Webhooks: αποφάσισε. Ακολουθούν την εφαρμογή. Διάγραψέ τα πριν, αν δεν θέλεις να λαμβάνεις πια events, ή άφησε τον παραλήπτη να τα ανακατευθύνει.
Δύο συνέπειες που πρέπει να ξέρεις για τα χρήματα. Σύμφωνα με τη σελίδα του Small Business Program, τα καθαρά έσοδα της εφαρμογής για το ημερολογιακό έτος αποδίδονται σε όλους τους λογαριασμούς που ξεκινούν ή αποδέχονται τη μεταφορά. Άρα το όριο του 1 εκατομμυρίου δολαρίων υπολογίζεται μαζί με αυτή την εφαρμογή, και στις δύο πλευρές: δες την προμήθεια 15 %. Και μετά τη μεταφορά δεν μπορεί να δημιουργηθεί πια κανένας promo code για την εφαρμογή: οι υπάρχοντες κωδικοί ισχύουν για τέσσερις εβδομάδες από τη δημιουργία τους.
Τα βήματα από την πλευρά του παραχωρούντος
Μόνο ο κάτοχος του λογαριασμού (Account Holder) μπορεί να ξεκινήσει τη μεταφορά. Χρειάζεται το Apple ID του κατόχου που λαμβάνει και το Team ID του λογαριασμού του. Σύμφωνα με τη βοήθεια για την έναρξη μεταφοράς:
- Στο Apps, διάλεξε την εφαρμογή.
- Στην πλαϊνή μπάρα, κάτω από το General, πάτα App information και κατέβα μέχρι το Additional Information.
- Πάτα Transfer App. Μπορεί να σου ζητηθεί κωδικός ελέγχου ταυτότητας δύο παραγόντων.
- Αν πληρούνται όλα τα κριτήρια, πάτα Continue. Αλλιώς, Cancel, και τακτοποίησε ό,τι λείπει.
- Συμπλήρωσε το Apple ID του κατόχου-παραλήπτη και το Team ID του, και μετά Continue.
- Διάβασε τους όρους, τσέκαρε το κουτάκι συμφωνίας και πάτα Request Transfer.
- Πάτα Done.
Η εφαρμογή κρατά το status της, με την ένδειξη Pending App Transfer επιπλέον. Σε αυτό το διάστημα δεν μπορείς πια να αλλάξεις metadata, τιμή, διαθεσιμότητα ή αγορές εντός εφαρμογής. Οι ανοιχτές συζητήσεις με το App Review κλείνουν.
Τα βήματα από την πλευρά του παραλήπτη
Μόνο ο κάτοχος του λογαριασμού που λαμβάνει μπορεί να αποδεχτεί, μέσα σε 60 ημέρες. Σύμφωνα με τη βοήθεια για την αποδοχή:
- Συνδέσου στο App Store Connect: μια ειδοποίηση αναφέρει την εφαρμογή προς μεταφορά.
- Άνοιξε το Business: η ειδοποίηση εμφανίζεται στο Agreements.
- Κάτω από το App Transfers, πάτα Review.
- Συμπλήρωσε το support URL, το marketing URL και το URL της πολιτικής απορρήτου αν η εφαρμογή είχε, καθώς και τις επαφές για το App Review και το App Store.
- Στο User Access, διάλεξε ποιος από την ομάδα σου βλέπει την εφαρμογή.
- Στο App privacy, κράτα ή ξαναφτιάξε τις απαντήσεις του προηγούμενου ιδιοκτήτη. Αν δεν υπάρχουν απαντήσεις, τις συμπληρώνεις πριν από την επόμενη έκδοση.
- Διάβασε τους όρους, τσέκαρε το κουτάκι συμφωνίας και πάτα Accept.
Η μεταφορά περνά σε Processing App Transfer, για έως δύο εργάσιμες ημέρες. Αν η εφαρμογή απαιτεί έγγραφα εξαγωγής, περνά από το Waiting for Export Compliance. Στο τέλος, ειδοποιούνται και οι δύο κάτοχοι και η εφαρμογή εξαφανίζεται από τον λογαριασμό του παραχωρούντος. Στη συνέχεια ο παραλήπτης δημιουργεί νέα provisioning profiles, συνδεδεμένα με το App ID της εφαρμογής και το distribution certificate της: δες certificates και profiles στο iOS.
Όσο το status είναι Waiting for Recipient, ο καθένας μπορεί να ακυρώσει: Cancel Transfer για τον παραχωρούντα, Decline για τον παραλήπτη, στην ενότητα App Transfers του Business.
Τι ακολουθεί την εφαρμογή και τι χαλάει
| Στοιχείο | Μετά τη μεταφορά | Τι κάνεις |
|---|---|---|
| Bundle ID και App ID | Ακολουθούν, ένα wildcard App ID γίνεται explicit | Τίποτα |
| Βαθμολογίες, κριτικές, ενημερώσεις | Ακολουθούν, η εφαρμογή μένει διαθέσιμη προς πώληση | Τίποτα |
| Αυτόματα ανανεούμενες συνδρομές | Απαιτούν app-specific shared secret | Secret που στέλνεται πριν και ξαναδημιουργείται μετά |
| iCloud | Δεδομένα, containers και key-value αναγνωριστικά ακολουθούν | Ενημέρωση των key-value αναγνωριστικών στα entitlements |
| Service ID του Sign in with Apple | Ακολουθεί, εκτός αν αφαιρέσεις τη σύνδεση πριν | Transfer identifiers προς ανταλλαγή μέσα σε 60 ημέρες |
| Webhooks | Ακολουθούν | Διαγραφή πριν ή ανακατεύθυνση μετά |
| Push notifications | Τα certificates ισχύουν μέχρι τη λήξη τους | APNs key του παραλήπτη, ενημερωμένοι servers |
| Κοινόχρηστο keychain | Δουλεύει μέχρι την επόμενη ενημέρωση | Το group ξαναδημιουργείται με το Team ID του παραλήπτη |
| App Groups | Η εφαρμογή μένει διαθέσιμη | Group διαγραμμένο στον παραχωρούντα, καταχωρημένο στον παραλήπτη |
| Apple Pay | Το merchant ID δεν ακολουθεί | Νέο merchant ID πριν από την επόμενη ενημέρωση |
| Κάρτες Wallet | Όσες ενημερώνει η εφαρμογή πρέπει να επανεκδοθούν | Νέο αναγνωριστικό |
| Promo codes | Κανένας νέος κωδικός | Οι παλιοί κωδικοί ισχύουν τέσσερις εβδομάδες |
| Πωλήσεις και πληρωμές | Ο παραχωρών κρατά τα πριν, ο παραλήπτης λαμβάνει τα μετά | Εξαγωγή πριν την έναρξη |
| App Analytics | Ο παραχωρών χάνει την πρόσβαση, ο παραλήπτης λαμβάνει το ιστορικό | Τίποτα |
| Nominations, ιστορικό bundles | Δεν ακολουθούν | Κατέγραψέ τα και στείλ' τα πριν την έναρξη |
Το keychain θέλει ιδιαίτερη προσοχή. Η Apple προειδοποιεί: μετά την ενημέρωση, η εφαρμογή δεν βρίσκει πια το token σύνδεσης που είναι αποθηκευμένο στο κοινόχρηστο keychain, και οι χρήστες πρέπει να συνδεθούν ξανά μία φορά. Αν η εφαρμογή σου μοιράζεται το keychain της με άλλη εφαρμογή ή με ένα extension, ενημέρωσε τους χρήστες σου πριν δημοσιεύσεις αυτή την ενημέρωση.
Για το Game Center, τα groups, οι συγχωνευμένοι πίνακες κατάταξης και οι κανόνες matchmaking πρέπει να ξαναστηθούν από τον παραλήπτη. Οι εφαρμογές Mac Catalyst μεταφέρονται σε δύο φάσεις, πρώτα η εφαρμογή iPad.
Sign in with Apple: τα transfer identifiers
Με το Sign in with Apple, το αναγνωριστικό κάθε χρήστη είναι μοναδικό για την ομάδα σου. Ο παραλήπτης δεν μπορεί να το ξαναχρησιμοποιήσει ως έχει. Η τεκμηρίωση της Apple για τη μεταφορά χρηστών προβλέπει τρία στάδια:
- Αποσύνδεσε τις εφαρμογές σου από το group. Εφαρμογή ομαδοποιημένη με άλλες για το Sign in with Apple δεν μεταφέρεται.
- Δημιούργησε ένα transfer identifier ανά χρήστη. Με ένα token που παίρνεις με το scope
user.migration, καλείς το endpointusermigrationinfoμε το αναγνωριστικό του χρήστη και το Team ID του παραλήπτη. Η απάντηση περιέχει έναtransfer_sub. - Στείλε μόνο τα transfer identifiers. Ούτε τα αναγνωριστικά της ομάδας σου, ούτε τις ιδιωτικές διευθύνσεις email.
Μπορείς να δημιουργήσεις αυτά τα αναγνωριστικά πριν από την αποδοχή ή έως 60 ημέρες μετά. Ο παραλήπτης έχει 60 ημέρες μετά την αποδοχή για να τα ανταλλάξει με τα δικά του αναγνωριστικά. Σχεδίασε αυτή την ανταλλαγή πριν ξεκινήσεις τη μεταφορά. Άλλη συνέπεια: αν ένας χρήστης δεν έχει καμία άλλη εφαρμογή σου, δεν μπορείς πια να του γράψεις στην ιδιωτική του διεύθυνση μετά τη μεταφορά. Οι κανόνες σύνδεσης βρίσκονται στο guideline 4.8.
Οι προθεσμίες που πρέπει να θυμάσαι
| Βήμα | Προθεσμία |
|---|---|
| Αποδοχή από τον παραλήπτη | 60 ημέρες μετά την έναρξη |
| Επεξεργασία μετά την αποδοχή | Έως δύο εργάσιμες ημέρες |
| Ανταλλαγή αναγνωριστικών Sign in with Apple | 60 ημέρες μετά την αποδοχή |
| Υπάρχοντες promo codes | Τέσσερις εβδομάδες από τη δημιουργία τους |
| APNs certificates της μεταφοράς | Μέχρι την ημερομηνία λήξης τους |
Η λίστα μου για μια εφαρμογή Expo με RevenueCat
Αυτά θα έλεγχα, με τη σειρά, για μία από τις εφαρμογές μου:
- Εξαγωγή πωλήσεων, λήψεων και analytics πριν την έναρξη.
- Αναμονή μέχρι η τελευταία έκδοση να είναι διαθέσιμη προς πώληση και οι αγορές εντός εφαρμογής να έχουν επιτρεπτό status.
- Κλείσιμο του TestFlight: builds, testers και Test Information.
- Αποστολή του app-specific shared secret, και μετά έναρξη της μεταφοράς.
- Από την πλευρά του παραλήπτη, μετά την αποδοχή: νέο shared secret, καταχωρημένο σε κάθε υπηρεσία που επαληθεύει συνδρομές, μαζί και το RevenueCat. Τα keys για αγορές εντός εφαρμογής δημιουργούνται στο Users and Access, καρτέλα Integrations, και κατεβαίνουν μόνο μία φορά, σύμφωνα με τη βοήθεια του App Store Connect.
- Έλεγχος της διεύθυνσης των server notifications στη σελίδα της εφαρμογής. Η σελίδα της Apple για τη μεταφορά δεν το αναφέρει: έλεγξέ το αντί να το υποθέσεις.
- Νέα profiles και APNs key στον λογαριασμό του παραλήπτη. Για εφαρμογή Expo, τα βήματα είναι στο push certificate APNs με Expo.
- Δημοσίευση ενημέρωσης υπογεγραμμένης από τον νέο λογαριασμό, με προειδοποίηση για επανασύνδεση αν το keychain είναι κοινόχρηστο.
Δημοσίευση χωρίς να χάσεις ό,τι δουλεύει
Το iOS & Android Kit ξεκινά από τον αρχικό κώδικα των εφαρμογών μου και ακολουθεί τέσσερα βήματα μέχρι το App Store, με τον δικό σου ρυθμό. Όλη η διαδικασία είναι στη σελίδα δημοσίευση εφαρμογής στο App Store.
Πριν αλλάξεις οτιδήποτε, κάνε τη δωρεάν διάγνωση: βάζει τα βήματα στη σωστή σειρά και σου στέλνει το checklist μου κατά των απορρίψεων της Apple.
Συχνές ερωτήσεις
Πόσο διαρκεί μια μεταφορά εφαρμογής στο App Store;
Ο παραλήπτης έχει 60 ημέρες για να αποδεχτεί. Μετά την αποδοχή, η Apple αναφέρει έως δύο εργάσιμες ημέρες επεξεργασίας. Αν η εφαρμογή απαιτεί έγγραφα εξαγωγής, προστίθεται ένα βήμα ελέγχου.
Εξαφανίζεται η εφαρμογή από το App Store κατά τη μεταφορά;
Όχι. Η εφαρμογή μένει διαθέσιμη προς πώληση κατά τη διάρκεια και μετά τη μεταφορά. Κρατά τις βαθμολογίες, τις κριτικές και το Bundle ID της, και οι χρήστες της συνεχίζουν να λαμβάνουν ενημερώσεις.
Κρατούν οι συνδρομητές τη συνδρομή τους μετά από μεταφορά;
Η Apple δεν περιγράφει καμία διακοπή για τους συνδρομητές. Η μόνη της απαίτηση αφορά το app-specific shared secret: ο παραχωρών το στέλνει πριν, ο παραλήπτης ενημερώνει τους servers του και μετά δημιουργεί νέο μετά τη μεταφορά.
Μπορείς να μεταφέρεις εφαρμογή που δεν έχει δημοσιευτεί ποτέ;
Όχι. Η εφαρμογή πρέπει να έχει τουλάχιστον μία έκδοση δημοσιευμένη στο App Store. Επίσης δεν πρέπει να είναι σε προπαραγγελία ούτε σε έλεγχο.
Ποιος μπορεί να ξεκινήσει και να αποδεχτεί μια μεταφορά εφαρμογής;
Μόνο οι κάτοχοι των λογαριασμών, που λέγονται Account Holder. Ο παραχωρών χρειάζεται το Apple ID του κατόχου-παραλήπτη και το Team ID του λογαριασμού του.
Μπορείς να ακυρώσεις μια μεταφορά εφαρμογής;
Ναι, όσο το status είναι Waiting for Recipient. Ο παραχωρών πατά Cancel Transfer και ο παραλήπτης Decline, στην ενότητα App Transfers του Business. Αν δεν υπάρξει απάντηση, η μεταφορά λήγει μετά από 60 ημέρες.

