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

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

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

</plist>


13. ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ вашСго профиля ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ прямо Π² Ρ„Π°ΠΉΠ» Entitlements.plist, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ содСрТимоС выглядСло Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:


<plist version="1.0">

<dict>

<key>application-identifier</key>

<string>F3FU372W5M.com.pixolity.ios.cookbook.PushNotificationApp</string>

<key>aps-environment</key>

<string>development</string>

<key>get-task-allow</key>

<true/>

<key>keychain-access-groups</key>

<array>

<string>F3FU372W5M.*</string>

</array>

</dict>

</plist>

ЗначСния, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² рассматриваСмых здСсь листингах, относятся ΠΊ профилям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ создал я. Π’ вашСм ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния (App ID). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ шаги, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ вашСго прилоТСния ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ. ΠŸΠΎΡ‚ΠΎΠΌ Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ· своСго профиля ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΈΡ… Π² Ρ„Π°ΠΉΠ» Entitlements.plist вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

14. Π”Π°Π»Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² настройки сборки вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Code Signing Entitlements (Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для подписания ΠΊΠΎΠ΄Π°) Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ $(SRCROOT)/$(TARGET_NAME)/Entitlements.plist (Ссли создали Ρ„Π°ΠΉΠ» Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°) ΠΈΠ»ΠΈ $(SRCROOT)/Entitlements.plist (Ссли создали Ρ„Π°ΠΉΠ» Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΌ Π² сСбя вСсь исходный ΠΊΠΎΠ΄). Если Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, просто ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΎΠ±Π° этих значСния, ΠΏΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ…. Если Xcode сообщит, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ» Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈ ΠΎΠ½ΠΎ сработаСт. Настройка сборки Code Signing Entitlements (Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для подписания ΠΊΠΎΠ΄Π°) Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ указания ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ, ΠΈΠ΄ΡƒΡ‰Π΅Π³ΠΎ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΎΡ‚ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° исходного ΠΊΠΎΠ΄Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ помСститС Ρ„Π°ΠΉΠ» Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π²Π°ΠΌ потрСбуСтся Π²Ρ‹ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ этот ΠΏΡƒΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π² это ΠΏΠΎΠ»Π΅.

15. Π‘ΠΎΠ±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Xcode Π½Π΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ошибок. Если ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ сообщСниС ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ошибкС, Ρ‚ΠΎ, вСроятно, Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π°Π΄Π°Π»ΠΈ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π»ΠΈΠ±ΠΎ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π² настройках сборки Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для подписания ΠΊΠΎΠ΄Π°.

16. Π’ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅ вашСго прилоТСния Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ registerForRemoteNotificationTypes:, относящийся ΠΊ классу UIApplication, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ значСния UIRemoteNotificationTypeAlert, UIRemoteNotificationTypeBadge ΠΈ UIRemoteNotificationTypeSound, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅:


β€” (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


[[UIApplication sharedApplication] registerForRemoteNotificationTypes:

UIRemoteNotificationTypeAlert |

UIRemoteNotificationTypeBadge |

UIRemoteNotificationTypeSound];


self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}


Π’Π°ΠΊ Π²Ρ‹ зарСгистрируСтС вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для получСния ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ увСдомлСния ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ с прСдупрСТдСниями, измСнСния Π½ΠΎΠΌΠ΅Ρ€Π° ярлыка вашСго прилоТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π²ΡƒΠΊΠΈ. Пока Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² эти подробности. ΠŸΡ€ΠΎΡΡ‚ΠΎ зарСгистрируйтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для получСния ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°Π½Π΅Π΅. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ это сдСлаСтС, iOS ΠΎΡ‚ΠΎΡˆΠ»Π΅Ρ‚ запрос ΠΎ рСгистрации ΠΊ APNS. ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Ρ‚ΡŒ, iOS попросит Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для получСния ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² iOS ΠΏΡ€ΠΈ этом запросС, ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 15.7.


Рис. 15.7. iOS Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ запрос ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ


17. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ application: didRegisterForRemoteNotificationsWithDeviceToken: Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° вашСго прилоТСния. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся, ΠΊΠΎΠ³Π΄Π° iOS удаСтся ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ устройство Π² APNS ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΌΡƒ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€. Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ дСйствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ прилоТСния, установлСнного ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ устройствС.

18. Π”Π°Π»Π΅Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ application: didFailToRegisterForRemoteNotificationsWithError: Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° вашСго прилоТСния. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся, Ссли iOS Π½Π΅ удаСтся Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для получСния ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ваш ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ настроСн Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ устройство Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΊ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ didFailToRegisterForRemoteNotificationsWithError этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ Ρ‚ΠΈΠΏΠ° NSError. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ.

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

Π Π°Π·Π΄Π΅Π» 15.0.

15.8. Доставка ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

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

ВрСбуСтся ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡƒΡˆ-увСдомлСния Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ устройства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зарСгистрированы для получСния Ρ‚Π°ΠΊΠΈΡ… ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ.

РСшСниС

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ собрали ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ этих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (см. Ρ€Π°Π·Π΄Π΅Π» 15.7). Π—Π°Ρ‚Π΅ΠΌ сгСнСрируйтС SSL-сСртификаты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ вашими Π²Π΅Π±-сСрвисами для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π½Π° устройства. Π—Π°Ρ‚Π΅ΠΌ создайтС простой Π²Π΅Π±-сСрвис для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π½Π° зарСгистрированныС устройства.

Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» β€” ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π° 15.7. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π² Π½Π΅ΠΌ Ρ€Π°Π·Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°.

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

1. Π’ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ†Π΅Π½Ρ‚Ρ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для iOS.

2. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» Certificates, Identifiers & Profiles (Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚Ρ‹, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ), располоТСнный справа.

3. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (App ID) Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ вашСго прилоТСния, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ этот ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Settings (Настройки), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 15.8.


Рис. 15.8. ИзмСнСниС настроСк ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° прилоТСния


4. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ настроСк, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ Push Notifications (ΠŸΡƒΡˆ-увСдомлСния), Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π» Development SSL Certificate (SSL-сСртификат для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ) ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Create Certificate (Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ сСртификат) (рис. 15.9). Π”Π°Π»Π΅Π΅ слСдуйтС указаниям Apple ΠΏΠΎ созданию сСртификата. Пока ΠΌΡ‹ создаСм SSL-сСртификат для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС нас интСрСсуСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. ПозТС, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² App Store, просто ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ процСсс ΠΈ создайтС SSL-сСртификаты для распространСния (Distribution).


Рис. 15.9. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ SSL-сСртификата, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΏΡƒΡˆ-увСдомлСниями ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния


5. ΠšΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сСртификат Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ² (рис. 15.10), скачайтС Π΅Π³ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈ Π΄Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° Π½Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π²Π°ΡˆΡƒ связку ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.


Рис. 15.10. SSL-сСртификат для ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ с APNS Π½Π° этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния Π³ΠΎΡ‚ΠΎΠ² ΠΊ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΡŽ


6. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ Keychain Access (Доступ ΠΊ связкС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ) Π½Π° OS X ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ связкС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Login (Ссли эта связка ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π·Π°Π΄Π°Π½Π° Ρƒ вас ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ My Certificates (Мои сСртификаты) Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‚ сСртификат, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π² связку ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΈ раскройтС Π΅Π³ΠΎ, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² Π½Π° малСнькой ΠΊΠ½ΠΎΠΏΠΊΠ΅ со стрСлкой слСва. Π’Π°ΠΊ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ассоциированный с этим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ (рис. 15.11).


Рис. 15.11. Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡƒΡˆ-увСдомлСниями Π½Π° этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π΅Π³ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡


7. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° сСртификатС ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΈ экспортируйтС Π΅Π³ΠΎ ΠΊΠ°ΠΊ. cer-сСртификат (Π° Π½Π΅ ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ». p12). НазовитС Π΅Π³ΠΎ PushCertificate.cer.

8. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ ΠΈ экспортируйтС Π΅Π³ΠΎ ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ». p12 (Π° Π½Π΅ ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ» сСртификата). НазовитС Π΅Π³ΠΎ PushKey.p12. Π—Π΄Π΅ΡΡŒ потрСбуСтся ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ впослСдствии смоТСтС Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ.


ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ дальнСйший ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» этого Ρ€Π°Π·Π΄Π΅Π»Π°, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ использованию PHP. ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ этот язык для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π½Π° нашС устройство простого ΠΏΡƒΡˆ-увСдомлСния. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ 15.7 ΠΌΡ‹ ΡƒΠΆΠ΅ настроили ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π² этом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ настройка использования PHP Π½Π° сСрвСрС Apache Π½Π΅ относится ΠΊ Ρ‚Π΅ΠΌΠ°ΠΌ этой ΠΊΠ½ΠΈΠ³ΠΈ, ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ MAMP. MAMP установит Ρƒ вас Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Apache ΠΈ PHP, Ссли Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ сдСлали этого. На сайтС MAMP Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ инструкции ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ шаги потрСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. Когда Π²Ρ‹ установитС MAMP, ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ со всСми вашими PHP-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ адрСсу /Applications/MAMP/htdocs/. Если ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ установкС этот ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ измСнится, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ MAMP, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» Preferences (Настройки), Π° ΠΏΠΎΡ‚ΠΎΠΌ β€” ΠΊ Apache. Π’Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Ρ‚Π°ΠΌ ΠΈ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Apache.