5. Π ΠΎΠ±Π»Π°ΡΡΠΈ App Services (Π‘Π΅ΡΠ²ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ) ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ»Π°ΠΆΠΎΠΊ Data Protection (ΠΠ°ΡΠΈΡΠ° Π΄Π°Π½Π½ΡΡ ) ΠΈ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²ΡΠ±ΡΠ°Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Complete Protection (ΠΠΎΠ»Π½Π°Ρ Π·Π°ΡΠΈΡΠ°). ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΡΡΠ°Π²ΡΡΠ΅ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
6. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π² ΠΎΠ±Π»Π°ΡΡΠΈ App ID Suffix (Π‘ΡΡΡΠΈΠΊΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ) ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΡΠ»Π°ΠΆΠΎΠΊ Explicit App ID (Π―Π²Π½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ), ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ Π² ΠΏΠΎΠ»Π΅ Bundle ID (ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ°) ΠΈΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΠ° Ρ ΡΠΎΡΠΊΠΎΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΈΠΌΡ com.NAME.ios.cookbook.SecurityApp, Π³Π΄Π΅ NAME β Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΠΉΡΠ΅ Π΅Π³ΠΎ! Π ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ com.pixolity.ios.cookbook.SecurityApp, Π½ΠΎ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ, ΡΡΠΎ Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
7. ΠΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΡΠΈ ΡΠ°Π³ΠΈ, Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Continue (ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ).
8. Π’Π΅ΠΏΠ΅ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π°ΠΏΡΠΎΡΠΈΡ Ρ Π²Π°Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π·Π°Π΄Π°Π½Π½ΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΊΠ°ΠΊ Π½Π° ΡΠΈΡ. 8.4.
Π ΠΈΡ. 8.4. ΠΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ App ID ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
9. ΠΠΎΠ³Π΄Π° Π·Π°ΠΊΠΎΠ½ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Submit (ΠΡΠΏΡΠ°Π²ΠΈΡΡ), ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ID ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ! Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ Π΅ΡΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π― ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ Ad Hoc ΠΈ App Store ΠΎΡΡΠ°Π²Π»ΡΡ Π²Π°ΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½. ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ΅Π»Π΅ΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
1. Π ΠΎΠ±Π»Π°ΡΡΠΈ Certificates, Identifiers & Profiles (Π‘Π΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈ) ΠΏΠΎΡΡΠ°Π»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΎΠ±Π»Π°ΡΡΡ Development (Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°) Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Provisioning Profiles (ΠΡΠΎΡΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ). ΠΠ°ΡΠ΅ΠΌ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ +.
2. Π ΠΎΡΠΊΡΡΠ²ΡΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Development (Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°) ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ»Π°ΠΆΠΎΠΊ iOS App Development (Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ iOS) ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Continue (ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ).
3. ΠΠΎΠ³Π΄Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (App ID), Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠΎΡ App ID, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅. Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ App ID, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π½Π° ΡΠΈΡ. 8.5. Π‘Π΄Π΅Π»Π°Π² Π²ΡΠ±ΠΎΡ, Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Continue (ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ).
Π ΠΈΡ. 8.5. ΠΡΠ±ΠΎΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π΄Π»Ρ ΡΠ΅Π»Π΅ΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ)
4. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ (-Ρ) ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ²ΡΠ·Π°ΡΡ Π²Π°Ρ ΠΏΡΠΎΡΠΈΠ»Ρ. ΠΠ°ΡΠ΅ΠΌ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Continue (ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ).
5. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΡΠΎΠΉΡΡΠ², Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²Π°Ρ ΠΏΡΠΎΡΠΈΠ»Ρ (ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ Development ΠΈ Ad Hoc, Π½ΠΎ Π½Π΅ Π΄Π»Ρ App Store) ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Continue (ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ).
6. ΠΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΊΡΠ°Π½Π΅ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡ Π²Π°Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΈΠ»Ρ. ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΈΠ· Security App Dev Profile, Π° ΠΏΠΎΡΠΎΠΌ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Generate (Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ), ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
7. Π’Π΅ΠΏΠ΅ΡΡ Π²Π°Ρ ΠΏΡΠΎΡΠΈΠ»Ρ Π³ΠΎΡΠΎΠ² ΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ (ΡΠΈΡ. 8.6). ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Download (ΠΠ°Π³ΡΡΠ·ΠΈΡΡ), ΡΡΠΎΠ±Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ.
Π ΠΈΡ. 8.6. ΠΡΠΎΡΠΈΠ»Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ ΠΈ Π³ΠΎΡΠΎΠ² ΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠ΅
8. ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΈΡΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠΈΠ»Ρ Π² iTunes. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ Ρ Π΅Π³ΠΎ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ~/Library/MobileDevice/Provisioning Profiles/. ΠΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ iOS-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠΎΡΡΠΎ Π΄Π²Π°ΠΆΠ΄Ρ ΡΠ΅Π»ΠΊΠ½ΡΠ² Π½Π° Π½Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ. Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ ΡΠ΅Π»ΡΠΊΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. ΠΠΎ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ SHA1-Ρ Π΅ΡΠ΅ΠΌ ΠΏΡΠΎΡΠΈΠ»Ρ. ΠΡΠ»ΠΈ ΠΏΠΎΠ·ΠΆΠ΅ Π²Ρ ΠΎΡΠΊΡΠΎΠ΅ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΡΠΎ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΠΈΠ»Ρ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½. ΠΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π²ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈ ΠΈ Π²ΡΡΡΠ½ΡΡΡ ΠΈΡ ΠΈΠΌΠ΅Π½Π°. ΠΠΎΡΡΠΎΠΌΡ Ρ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΡΠΌ ΡΠ΅Π»ΡΠΊΠΎΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ. ΠΡΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°ΡΡ ΠΈΡ Π² iTunes ΠΈΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ Π²ΡΡΠ°Π²Π»ΡΡΡ Π² Π΄Π°Π½Π½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³.
ΠΠ»Π΅ΡΡΡΡΠ΅. ΠΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ±ΡΠ°Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΈΠ»Ρ Π΄Π»Ρ ΡΡ Π΅ΠΌΡ Debug (ΠΡΠ»Π°Π΄ΠΊΠ°). ΠΠ°ΡΠ΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ Ad Hoc ΠΈ App Store, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π½ΡΠΆΠ½ΡΠΌΠΈ ΠΏΡΠΎΡΠΈΠ»ΡΠΌΠΈ Π΄Π»Ρ ΡΡ Π΅ΠΌΡ Release (ΠΡΠΏΡΡΠΊ).
Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π²Π°ΠΌΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΡΠ»Π°Π΄ΠΊΡ Π²Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Ρ iOS ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ²ΡΠ·ΠΊΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π» 8.0.
8.2. Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΡΠ²ΡΠ·ΠΊΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ²ΡΠ·ΠΊΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Π½ΠΎ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Security (ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ). ΠΠ°ΡΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ SecItemAdd Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΠ²ΡΠ·ΠΊΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
API ΡΠ²ΡΠ·ΠΊΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ iOS ΠΈ OS X Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ C. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Ρ Π½Π°Ρ Π½Π΅Ρ ΠΌΠΎΡΡΠΈΠΊΠ° ΠΊ Objective-C ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ» Π±Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ API Π½Π° C. ΠΠΎΡΡΠΎΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΈΠΌΠΈ API Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ. ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠΈΡ API Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π°ΠΏΡΠΎΡΡ, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΊ API ΡΠ²ΡΠ·ΠΊΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ Π² ΡΠ»ΠΎΠ²Π°ΡΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠΈΡΡ Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΠ²ΡΠ·ΠΊΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , ΡΠΎ Π²Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΠ΅ ΡΡΠΎΡ Π·Π°ΠΏΡΠΎΡ Π² ΡΠ»ΠΎΠ²Π°ΡΡ (Π° Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π·Π°ΠΏΡΠΎΡΠΎΠΌ β Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ Ρ ΡΠ°Π½ΠΈΡΡ, ΠΊΠ»ΡΡ ΠΊ ΡΡΠΈΠΌ Π΄Π°Π½Π½ΡΠΌ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Ρ. Π΄.). ΠΡΠΎΡ ΡΠ»ΠΎΠ²Π°ΡΡ Π²Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΠΊ API, ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ SecItemAdd. Π§ΡΠΎΠ±Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π² ΡΠ²ΡΠ·ΠΊΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ:
β’ kSecClass β ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΡΠΎΠΊ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°Π΄Π°Π΅ΡΡΡ kSecClassGenericPassword;
β’ kSecAttrService β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΡΠΎΠΊΡ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΡΠ° ΡΡΡΠΎΠΊΠ° β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ;
β’ kSecAttrAccount β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ°, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ ΠΊΠ»ΡΡ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ. ΠΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½Π°Ρ ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ ΡΠΌΡΡΠ» Π΄Π»Ρ Π²Π°Ρ ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ;
β’ kSecValueData β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ NSData, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΊΠ»ΡΡΡ (kSecAttrAccount).
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ SecItemAdd ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΈΠΏΡ OSStatus. Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ SecBase.h SDK. ΠΠΎΡΡΠΎΠΌΡ, Π½Π°Ρ ΠΎΠ΄ΡΡΡ Π² Xcode, ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ Command+Shift+O, Π²Π²Π΅Π΄ΠΈΡΠ΅ SecBase.h ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π½Π°ΠΉΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ errSecSuccess. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ errSecSuccess Π² ΠΏΠ΅ΡΠ΅ΡΠ½Π΅, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Ρ Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ OSStatus:
enum
{
errSecSuccess = 0,
errSecUnimplemented = -4,
errSecParam = -50,
errSecAllocate = -108,
errSecNotAvailable = -25291,
errSecDuplicateItem = -25299,
errSecItemNotFound = -25300,
errSecInteractionNotAllowed = -25308,
errSecDecode = -26275,
errSecAuthFailed = -25293,
};
ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ SecItemAdd Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ errSecSuccess. ΠΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠ΅ ΠΎΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ. ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΠΌ ΠΈΠ·ΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΈ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ²ΡΠ·ΠΊΡ ΠΊΠ»ΡΡΠ΅ΠΉ:
#import Β«AppDelegate.hΒ»
#import <Security/Security.h>
@implementation AppDelegate
β (BOOL) application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSString *key = @"Full Name";
NSString *value = @"Steve Jobs";
NSData *valueData = [value dataUsingEncoding: NSUTF8StringEncoding];
NSString *service = [[NSBundle mainBundle] bundleIdentifier];
NSDictionary *secItem = @{
(__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword,
(__bridge id)kSecAttrService: service,
(__bridge id)kSecAttrAccount: key,
(__bridge id)kSecValueData: valueData,
};
CFTypeRef result = NULL;
OSStatus status = SecItemAdd((__bridge CFDictionaryRef)secItem, &result);
if (status == errSecSuccess){
NSLog(@"Successfully stored the value");
} else {
NSLog(@"Failed to store the value with code: %ld", (long)status);
}
self.window = [[UIWindow alloc]
initWithFrame: [[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π²ΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΡΠΈΠ»Ρ) Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ SecItemAdd Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ errSecSuccess. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ errSecDuplicateItem. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ iOS ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π²Π°ΠΌ, ΡΡΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΠΌΠ΅ΡΡΠ΅Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΡΡΠΎΠ³ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π² ΡΠ²ΡΠ·ΠΊΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΠΌΠ΅ΡΡΠ΅Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π»ΡΠ·Ρ. ΠΠΎ Π²ΠΎΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈΠΌΠ΅ΡΡΠ΅Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅. Π ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ, ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅.