Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 83

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

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 сообщаСт Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ нСльзя ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ контСкстС строгих Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ бСзопасности, примСняСмых Π² связкС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСльзя. Но Π²ΠΎΡ‚ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅. О Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ это дСлаСтся, рассказано Π΄Π°Π»Π΅Π΅ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅.