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

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

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

8. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ App Services (БСрвисы прилоТСния) Π½Π° этой страницС Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π»Π°ΠΆΠΎΠΊ Passbook. Π’Π°ΠΊ Π²Ρ‹ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ доступ ΠΊ ΠΊΠ½ΠΈΠ³Π΅ Ρ‚Π°Π»ΠΎΠ½ΠΎΠ² Passbook.

9. ΠšΠΎΠ³Π΄Π° сдСлаСтС это, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Continue (ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ). На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ экранС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ откроСтся ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ (рис. 19.19), Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ всС значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π²Π΅Π»ΠΈ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ страницС. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΈΡ… Π΅Ρ‰Π΅ Ρ€Π°Π· Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ, Ссли вас всС устроит, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Submit (ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ).


Рис. 19.19. ΠžΠ±Π·ΠΎΡ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° прилоТСния (App ID) ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π΅Π³ΠΎ с Passbook


10. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ использованиС Ρ‚Π°Π»ΠΎΠ½ΠΎΠ² для Π΄Π°Π½Π½ΠΎΠ³ΠΎ App ID, создадим ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π» Provisioning Profiles (ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ) Ρ€Π°Π·Π΄Π΅Π»Π° iOS Provisioning Profile (ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ iOS).

11. ΠœΡ‹ собираСмся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π° Π½Π΅ Ad Hoc (Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ сборка). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ Provisioning (Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ) Ρ€Π°Π·Π΄Π΅Π»Π° Development (Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°) Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ +.

12. ΠžΡ‚кроСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ экран. На Π½Π΅ΠΌ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ элСмСнт iOS App Development (Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прилоТСния для iOS) ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Continue (ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ).

13. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния (App ID) для вашСго профиля. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния, созданный Π²Π°ΠΌΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅ Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Continue (ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ) (рис. 19.20).


Рис. 19.20. Π’Ρ‹Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° прилоТСния для Π½ΠΎΠ²ΠΎΠ³ΠΎ профиля ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, создаваСмого для Ρ†Π΅Π»Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ


14. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ список доступных сСртификатов для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Ρƒ вас Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько сСртификатов, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ принято Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ всСго с ΠΎΠ΄Π½ΠΈΠΌ сСртификатом, Π½ΠΎ Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅, Π³Π΄Π΅ трудится ΠΌΠ½ΠΎΠ³ΠΎ программистов, Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ свой сСртификат Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ассоциирован сразу с нСсколькими сСртификатами. Π‘Π΄Π΅Π»Π°Π² Π²Ρ‹Π±ΠΎΡ€, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Continue (ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ).

15. Π”Π°Π»Π΅Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ список зарСгистрированных устройств. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· Π½Π΅Π³ΠΎ Ρ‚Π΅ устройства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ваш ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ. Π‘Π΄Π΅Π»Π°Π² это, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Continue (ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ).

16. ΠΠ° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ экранС систСма запросит Ρƒ вас ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя профиля. Π”Π°ΠΉΡ‚Π΅ Π΅ΠΌΡƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ имя, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Generate (Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ).

17. ΠšΠΎΠ³Π΄Π° ваш ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ сгСнСрирован, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Download (Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° вашС устройство (рис. 19.21). ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ этот ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π² iTunes, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° вашСм устройствС.


Рис. 19.21. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ Passbook Π³ΠΎΡ‚ΠΎΠ² ΠΊ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΡŽ

БущСствуСт нСсколько способов установки профиля ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС OS X. Π‘Π°ΠΌΡ‹ΠΉ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΈ быстрый способ β€” просто ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π² iTunes. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, воспользовавшись Xcode. Какой Π±Ρ‹ способ Π²Ρ‹ Π½ΠΈ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ, Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС Π½Π΅ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ Π² Ρ…ΠΎΠ΄Π΅ Π΅Π³ΠΎ установки. Π’ случаС Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Ρ‰Π΅Π»Ρ‡ΠΊΠ° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ установится Π½Π° дискС ΠΏΠΎΠ΄ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅Π²Ρ€Π°Π·ΡƒΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΈ ΠΏΠΎΠ·ΠΆΠ΅ Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ слоТно Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ срСди мноТСства Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°ΡΠΎΡ€ΡΡ‚ΡŒ диск, ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ iTunes ΠΈΠ»ΠΈ Xcode для установки ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ВсС ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, установлСнныС Ρƒ вас Π½Π° дискС, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ ~/Library/MobileDevice/Provisioning Profiles/.

18. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Xcode. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Build Settings (Настройки сборки) Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданный ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… сборок (Debug-only). Π’ΠΎ ΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ для ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сборок (Ad Hoc), Π½ΠΎ Π² схСмС Release (Π Π΅Π»ΠΈΠ·) Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Build Settings (Настройки сборки).

19. Π’ Xcode рядом с Π²ΠΊΠ»Π°Π΄ΠΊΠΎΠΉ Build Settings (Настройки сборки) Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Capabilities (ВозмоТности), Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Ρ‚Π°ΠΌ элСмСнт Passbook ΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ On (Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ) (рис. 19.22).


Рис. 19.22. Активизация Passbook Π² Xcode


20. ΠšΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ для Passbook Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ On (Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ), Xcode свяТСтся с Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° всС доступныС для вас ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠ° Ρ‚Π°Π»ΠΎΠ½Π°. Π’ спискС (рис. 19.23) Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ° Ρ‚Π°Π»ΠΎΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ создали Ρ€Π°Π½Π΅Π΅ Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅.


Рис. 19.23. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Ρ‚ΠΈΠΏΠ° Ρ‚Π°Π»ΠΎΠ½Π° Π² Xcode.


Π’ΠΎΡ‚ ΠΌΡ‹ ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ настройку Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Pass Kit! ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ Ρ‚Π°Π»ΠΎΠ½Π°ΠΌ, располоТСнным Π½Π° устройствС. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ описано Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 19.9.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π Π°Π·Π΄Π΅Π»Ρ‹ 19.6 ΠΈ 19.7.

19.9. ВзаимодСйствиС с Passbook с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ программирования

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ВрСбуСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Ρ‚Π°Π»ΠΎΠ½Π°ΠΌΠΈ, установлСнными Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ устройствС.

РСшСниС

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ PassKit.framework ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ PKPassLibrary, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ вас Ρ‚Π°Π»ΠΎΠ½Ρ‹. Π’Π°Π»ΠΎΠ½Ρ‹ относятся ΠΊ Ρ‚ΠΈΠΏΡƒ PKPass. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот класс, Π²Ρ‹ смоТСтС ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π°Π»ΠΎΠ½Π°Ρ….

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Для чтСния этого Ρ€Π°Π·Π΄Π΅Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» 19.8 ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π² Xcode ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ для iOS, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для доступа ΠΊ вашим Ρ‚Π°Π»ΠΎΠ½Π°ΠΌ, располоТСнным Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Passbook.

Apple прСдоставила для iOS-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ PassKit.framework. Π­Ρ‚ΠΎΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ позволяСт Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Ρ‚Π°Π»ΠΎΠ½Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ установил Π½Π° своСм устройствС (устройствах). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ новСйшСго компилятора LLVM, Π²Π°ΠΌ всСго лишь потрСбуСтся ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:


#import Β«AppDelegate.hΒ»

#import <PassKit/PassKit.h>


<# ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ вашСго ΠΊΠΎΠ΄Π° находится здСсь #>


Π”Π°Π»Π΅Π΅ потрСбуСтся ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ свойство Ρ‚ΠΈΠΏΠ° PKPassLibrary Π² Ρ„Π°ΠΉΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° нашСго прилоТСния. Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ класс ΠΈΠ· Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° PassKit.framework позволяСт Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Ρ‚Π°Π»ΠΎΠ½Π°ΠΌΠΈ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° устройство. Для считывания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ отправляСтся ΠΏΠΎΠ΅Π·Π΄, ΠΈ Π³ΠΎΡ€ΠΎΠ΄ отправлСния, Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° pass.json, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ создали Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 19.2. Π˜Ρ‚Π°ΠΊ, объявим ΠΈ эти ΠΊΠ»ΡŽΡ‡ΠΈ, Ρ‚ΠΎΠΆΠ΅ Π² Ρ„Π°ΠΉΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° прилоТСния:


#import Β«AppDelegate.hΒ»

#import <PassKit/PassKit.h>

@interface AppDelegate ()

@property (nonatomic, strong) PKPassLibrary *passLibrary;

@end


NSString *PassIdentifier = @"pass.pixolity.testingpasskit";

NSString *PassSerialNumber = @"p69f2J";


NSString *DepartureKey = @"departure";

NSString *DeparturePlatformKey = @"departurePlatform";

NSString *Arrival = @"arrival";

NSString *ArrivalPlatform = @"arrivalPlatform";


@implementation AppDelegate


<# ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ вашСго ΠΊΠΎΠ΄Π° находится здСсь #>


Π’Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎ! Написав этот ΠΊΠΎΠ΄, Π²Ρ‹ тСорСтичСски ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ доступа ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Passbook, располоТСнной Π½Π° устройствС. Но ΠΏΠΎΠ³ΠΎΠ΄ΠΈΡ‚Π΅: Π° Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π½Π° устройствС Π½Π΅ установлСна эта Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°? Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, имССтся Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Passbook Π½Π° устройствС. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса isPassLibraryAvailable, относящийся ΠΊ классу PKPassLibrary.

Π”Π°Π»Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свойство passLibrary Ρ‚ΠΈΠΏΠ° PKPassLibrary, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ относящимся ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Ρ‚Π°Π»ΠΎΠ½ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ экзСмпляра passWithPassTypeIdentifier: serialNumber:, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ искомый Ρ‚Π°Π»ΠΎΠ½. Π’ΠΎΡ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ понятно, ΠΏΠΎΡ‡Π΅ΠΌΡƒ срСди Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, относящихся ΠΊ Ρ‚Π°Π»ΠΎΠ½Ρƒ, ΠΌΡ‹, Π² частности, опрСдСляли ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°Π»ΠΎΠ½Π° ΠΈ Π΅Π³ΠΎ сСрийный Π½ΠΎΠΌΠ΅Ρ€. Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° PKPass, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°ΡˆΠ΅ΠΌΡƒ Ρ‚Π°Π»ΠΎΠ½Ρƒ. ИмСя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚Π°Π»ΠΎΠ½Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ значСния Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами.

ΠšΠ»ΡŽΡ‡ΠΈ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π² частности Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ сСрийный Π½ΠΎΠΌΠ΅Ρ€, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° свойства. Apple Π΄Π΅Π»Π°Π΅Ρ‚ это Π·Π° вас Π² классС PKPass. Однако Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ значСниям Π²Π½ΡƒΡ‚Ρ€ΠΈ primaryFields ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… мСстах, Ρ‚ΠΎ потрСбуСтся Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ экзСмпляра localizedValueForFieldKey:, относящимся ΠΊ классу PKPass. ΠœΡ‹ сообщаСм этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ наши ΠΊΠ»ΡŽΡ‡ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ значСния, ассоциированныС с этими ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ. Π”Π°Π»Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ нСбольшой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Ρ‚Π°Π»ΠΎΠ½Π°, созданного Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 19.2: Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠ΄ΠΎΡ€ΠΎΠΆΠ½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Код взят ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° нашСго прилоТСния.

#import Β«AppDelegate.hΒ»

#import <PassKit/PassKit.h>


@interface AppDelegate ()

@property (nonatomic, strong) PKPassLibrary *passLibrary;

@end

NSString *PassIdentifier = @"pass.pixolity.testingpasskit";