Skip to content

Commit 1e8e846

Browse files
committed
Added en article and fixed other.
1 parent 32a27bb commit 1e8e846

5 files changed

+188
-11
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
You want to add a developer to the account so that they can upload apps. If you have a company account, everything works out of the box.
2+
3+
But if you have an individual account, a third-party developer will be able to upload applications only with a special profile.
4+
5+
> It's not safe to pass your Apple ID username-password, don't do that
6+
7+
Сертификаты можно сделать вручную или через API. В этой статье разберем ручной способ.
8+
9+
Step by step what we are going to do:
10+
- First, request a signature for the certificate
11+
- Create the certificate
12+
- Combine this certificate with the key
13+
- Register the app (you may already have it registered).
14+
- Create a profile based on the certificate — it is the one we need to upload app
15+
16+
# Certificate Request
17+
18+
We make a special request for a certificate — this is a file with the extension `.certSigningRequest`.
19+
20+
Open *Keychain Access* and create the file `CertificateSigningRequest.certSigningRequest`:
21+
22+
![Inquiry at the certification center](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/keychain-request.png)
23+
24+
Enter your email, name and select *Saved to disk*. In the next window, just save the file:
25+
26+
![Save the certificate request](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/keychain-sert-info.png?v=2)
27+
28+
You'll have a file, it'll still come in handy:
29+
30+
![Ready `.certSigningRequest` file](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/keychain-sert-created.png?v=2)
31+
32+
> If the account holder doesn't have macOS, the request-file is made by the developer and sent to the account holder
33+
34+
# Making a Certificate
35+
36+
The certificate confirms that the app is yours. The extension of the certificate file is `.cer`.
37+
38+
Open the Certificates tab in *Developer Account*:
39+
40+
![Certificate tab](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/main-sert.png)
41+
42+
To make a new certificate, click the plus sign:
43+
44+
![Adding a Certificate](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/add-sert.png)
45+
46+
Select *Apple Distribution* and click *Continue*:
47+
48+
![Apple Distribution](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/new-sert.png)
49+
50+
This page will ask for the `.certSigningRequest` certificate request file we made above. Select the file:
51+
52+
![Add `.certSigningRequest`.](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/select-new-sert.png)
53+
54+
The certificate is ready — download it, it will still come in handy:
55+
56+
![Download the certificate](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/download-sert.png)
57+
58+
# Merge certificate and key
59+
60+
Next we need a file with the extension `.p12`. It stores the certificate-key mapping.
61+
62+
Double-click on the `distribution.cer` file and it will open *Keychain Access*.
63+
64+
> If nothing happens, just search for the last downloaded *Apple Distribution* certificate by date. The expiration date will be one year from now
65+
66+
![Apple Distribution Certificate](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/distribution-sert.png)
67+
68+
Expand the drop-down box (to the left of the certificate), highlight the certificate and private key. Next, right-click and select `Export 2 items...`.
69+
70+
![Export Certificate with key](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/export-distribution-sert.png)
71+
72+
Save the file:
73+
74+
![Name for the Certificate](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/create-sert-p12.png)
75+
76+
Set a password for the certificate, you can leave it blank:
77+
78+
![Password for Certificate](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/sert-p12-non-pass.png)
79+
80+
It will ask for your mac password - enter it and click *Always Allow*:
81+
82+
![Enter your mac's password](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/sert-p12-system-pass.png)
83+
84+
Get the file `Certificates.p12`:
85+
86+
![Certificate `.p12'.](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/save-sert-p12.png)
87+
88+
# Register the App
89+
90+
> If you already have an application, skip this step
91+
92+
The `App ID` is a unique identifier for an app. It links apps to Apple services such as Push Notifications, iCloud, Game Center, etc.
93+
94+
Go to *Developer Account* under the *Identifiers* tab and click the plus sign:
95+
96+
![Identifiers Tab](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/identifiers.png)
97+
98+
Select *App IDs*, then *App*:
99+
100+
![App IDs & App](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/register-identifier-app-id.png)
101+
102+
Here in *Description* enter the name of the app, and in *Bundle ID* enter the bundle. `Explicit` - used to sign only one application. `Wildcard` - used to sign multiple apps.
103+
104+
> Learn more about Explicit and Wildcard [at link](https://developer.apple.com/library/archive/qa/qa1713/_index.html):
105+
106+
![App ID registration](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/register-app-id.png)
107+
108+
When you have filled in the fields, click *Register*:
109+
110+
> If you get an error, check the Bundle ID field
111+
112+
![Registering an App ID](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/end-register-app-id.png)
113+
114+
The *Identifiers* page will display the ID of the new app:
115+
116+
![Application Identifier](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/identifiers-list.png)
117+
118+
# Provisioning Profile
119+
120+
The `Provisioning Profile' ties everything together: Apple Developer Account, App ID, certificates, and devices.
121+
122+
This is a file with the extension `.mobileprovision`.
123+
124+
Go to the *Profiles* tab, click the *Generate a profile* button:
125+
126+
![Profiles Tab](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/profiles.png)
127+
128+
Select *App Store Connect*:
129+
130+
![App Store Connect](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/new-profile.png)
131+
132+
In `App ID` select the desired `Bundle ID` from the list:
133+
134+
![Select App ID](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/generate-profile-app-id.png)
135+
136+
Select the newly created certificate (check the date when it expires):
137+
138+
![Adding a certificate](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/generate-profile-select-sert.png)
139+
140+
Fill in the *Provisioning Profile Name* and click *Generate*:
141+
142+
![Name for Provisioning Profile](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/generate-profile-name.png)
143+
144+
All that's left is to download the file:
145+
146+
![Downloading Provisioning Profile](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/download-profile.png)
147+
148+
We get a file with your name and extension `.mobileprovision`:
149+
150+
![Provision Profile](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/created-profile.png)
151+
152+
# Transfer files to the developer
153+
154+
Pass the `.p12` file and `Provision Profile` to the developer. Next, the developer needs to double-click the `.p12` file or import it into *Keychain Access*:
155+
156+
![Import `.p12`](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/add-p12.png)
157+
158+
Now the developer goes to Xcode-project - Project Settings and selects the target. On the *Signing & Capabilities* tab disable `Automatically manage signing`, select Team ID and import Provisioning Profile:
159+
160+
![Importing a Provision Profile](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/add-profile-xcode.png)
161+
162+
Done! The developer will be able to upload apps to an individual account.
163+
164+
> Repeat the steps only if the Profile is changed. It does not need to be repeated for each app

Diff for: en/tutorials/meta/tutorials.json

+12
Original file line numberDiff line numberDiff line change
@@ -189,5 +189,17 @@
189189
"google_structured_images": [],
190190
"updated_date": "15.05.2024",
191191
"added_date": "15.05.2024"
192+
},
193+
"cert-and-profile-for-personal-developer-account": {
194+
"title": "How to upload an app to an individual developer account",
195+
"description": "In this article we will make the certificate and profile manually step by step - so the developer, who was added to the idnidivisual account, will be able to upload a build",
196+
"categories": ["development", "app-store-connect"],
197+
"author": "sparrowcode",
198+
"editors": [],
199+
"keywords": ["certificate", "profile", "p12", "provision profile", "apple distribution"],
200+
"graph_image": "https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/main_page_certificates.png",
201+
"google_structured_images": [],
202+
"updated_date": "08.10.2024",
203+
"added_date": "08.10.2024"
192204
}
193205
}

Diff for: ru/tutorials/cert-and-profile-for-personal-developer-account.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
Вы хотите добавить разработчика в аккаунт, чтобы он мог выгружать приложения. Если у вас аккаунт компании (юр. лицо), то всё работает из коробки.
22

3-
Но если вы владелец индивидуального аккаунта (физ. лицо), то сторонний разработчик не сможет выгрузить билд. Для этого владельцу такого аккаунта нужно сделать сертификаты.
3+
Но если у вас индивидуальный аккаунт (физ. лицо), то сторонний разработчик сможет выгружать приложения только со специальным профайлом.
44

55
> Передавать логин-пароль от вашего Apple ID небезопасно, не делайте так
66
77
Сертификаты можно сделать вручную или через API. В этой статье разберем ручной способ.
88

9-
Будем делать по шагам:
9+
По шагам, что будем делать:
1010
- Сначала запрос на подпись для сертификата
11-
- Создадим сертификат
11+
- Создадим сам сертификат
1212
- Объединим этот сертификат с ключом
13-
- Регистрируем приложение (если ещё нет)
14-
- На основе сертификата сделаем профайл — именно он нужен, чтобы выгружать приложения
13+
- Регистрируем приложение (возможно, оно у вас уже зарегано)
14+
- Делаем профайл на основе сертификата — именно он нужен, чтобы выгружать приложения
1515

1616
# Запрос сертификата
1717

18-
Сначала сделаем специальный запрос на сертификат — это файл с расширением `.certSigningRequest`.
18+
Делаем специальный запрос на сертификат — это файл с расширением `.certSigningRequest`.
1919

2020
Открываем *Keychain Access* и создаём файл `CertificateSigningRequest.certSigningRequest`:
2121

@@ -155,10 +155,10 @@
155155

156156
![Импортируем `.p12`](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/add-p12.png)
157157

158-
Теперь разработчик идет в Xcode-проект — Project Settings и выбирает таргет. На вкладке *Signing & Capabilities* отключаем `Automatically manage signing`, выбираем нужный Team ID и импортируем Provisioning Profile:
158+
Теперь разработчик идет в Xcode-проект — Project Settings и выбирает таргет. На вкладке *Signing & Capabilities* отключаем `Automatically manage signing`, выбираем Team ID и импортируем Provisioning Profile:
159159

160160
![Импортируем Provision Profile](https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/add-profile-xcode.png)
161161

162-
Готово! Теперь разработчик сможет выгружать приложения на индивидуальный аккаунт.
162+
Готово! Разработчик сможет выгружать приложения на индивидуальный аккаунт.
163163

164-
> Инструкцию не нужно повторять для каждого приложения, а только если меняется Profile
164+
> Инструкцию повторять только если меняется Profile. Для каждого приложения повторять не нужно

Diff for: ru/tutorials/meta/tutorials.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@
293293
"keywords": ["certificate", "profile", "p12", "provision profile", "apple distribution"],
294294
"graph_image": "https://cdn.sparrowcode.io/tutorials/cert-and-profile-for-personal-developer-account/main_page_certificates.png",
295295
"google_structured_images": [],
296-
"updated_date": "29.07.2024",
296+
"updated_date": "08.10.2024",
297297
"added_date": "29.07.2024"
298298
}
299299
}

Diff for: ru/tutorials/pay-for-apple-developer-account-from-ru.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ Apple Developer Program можно оплатить картой Visa и Masterc
7878
- **Интеза**: 0% за зачисление. Открывают при личном присутствии
7979
- **Юникредитбанк**: 0% за зачисление. Если открыть счет в офисе, ставят в очередь из-за тех.проблем и приглашают позже, но открывают быстро по биометрии
8080
- **Москоммерцбанк**: 5% за зачисление USD. Хранение 1%, минимум $100 в сутки. Открывают при личном присутствии
81-
- **Райффайзенбанк**: 50% за зачисление, 50% минимум $1000, макс. $10000. Хранение 0.5%, минимум $10 на остаток $10.000-100.000. Открывают при личном присутствии
81+
- **Райффайзенбанк RUB**: без комиссии. Не забывайте поставить выплату в рублях в App Store Connect
82+
- **Райффайзенбанк USD**: 50% за зачисление, 50% минимум $1000, макс. $10000. Хранение 0.5%, минимум $10 на остаток $10.000-100.000. Открывают при личном присутствии
8283

8384
Условия быстро меняются, если у вас информация — [напишите мне](https://t.me/ivanvorobei)

0 commit comments

Comments
 (0)