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

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

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

РСшСниС

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ для получСния ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ NSUserDefaultsDidChangeNotification.

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

Π’ прилоТСниях, написанных для iOS, Ρ„Π°ΠΉΠ» ΠΏΠ°ΠΊΠ΅Ρ‚Π° настроСк ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдоставлСн ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ для внСсСния собствСнных настроСк. Π­Ρ‚ΠΈ настройки Π±ΡƒΠ΄ΡƒΡ‚ доступны ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ (Settings) Π½Π° устройствС. Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, создадим ΠΏΠ°ΠΊΠ΅Ρ‚ с настройками.

1. Π’ Xcode Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ File β€” New File (Π€Π°ΠΉΠ» β€” Новый Ρ„Π°ΠΉΠ»).

2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ слСва Π·Π°Π΄Π°Π½Π° катСгория iOS.

3. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ Resources (РСсурсы).

4. Π’ качСствС Ρ‚ΠΈΠΏΠ° Ρ„Π°ΠΉΠ»Π° ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ настроСк (Settings Bundle), Π° ΠΏΠΎΡ‚ΠΎΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Next (Π”Π°Π»Π΅Π΅).

5. ΠΠ°Π·ΠΎΠ²ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Settings.bundle.

6. ΠΠ°ΠΆΠΌΠΈΡ‚Π΅ Save (Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ).


Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π² Xcode Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Settings.bundle. ΠžΡΡ‚Π°Π²ΡŒΡ‚Π΅ этот Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, Π½Π΅ вноситС Π² Π½Π΅Π³ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Home (Π”ΠΎΠΌΠΎΠΉ) ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Settings (Настройки). Если Π²Ρ‹ Π½Π°Π·ΠΎΠ²Π΅Ρ‚Π΅ своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ foo, Ρ‚ΠΎ Π² ΠΎΠΊΠ½Π΅ настроСк, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π½Π° рис. 15.4, Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Foo. (МоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ я Π½Π°Π·Π²Π°Π» Handling local System Notifications, это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° рисункС.)


Рис. 15.4. ΠŸΠ°ΠΊΠ΅Ρ‚ Settings.bundle отобраТаСтся Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Settings (Настройки) Π² симуляторС iOS


Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ΠΈΠΌΠ΅Π½ΠΈ прилоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ настройки Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Нас интСрСсуСт, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ вносит измСнСния Π² эти настройки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ нСобходимости ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС прилоТСния.

Π”Π°Π»Π΅Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ Π² Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅ нашСго прилоТСния увСдомлСния NSUserDefaultsDidChangeNotification. Когда ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΌΡ‹, само собой, ΡƒΠ΄Π°Π»ΠΈΠΌ Π΄Π΅Π»Π΅Π³Π°Ρ‚ ΠΈΠ· Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ адрСсатов ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ:


#import Β«AppDelegate.hΒ»


@implementation AppDelegate


β€” (void) handleSettingsChanged:(NSNotification *)paramNotification{


NSLog(@"Settings changed");

NSLog(@"Notification Object = %@", paramNotification.object);


}

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

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


[[NSNotificationCenter defaultCenter]

addObserver: self

selector:@selector(settingsChanged:)

name: NSUserDefaultsDidChangeNotification

object: nil];


return YES;

}


β€” (void)applicationWillTerminate:(UIApplication *)application{

[[NSNotificationCenter defaultCenter] removeObserver: self];

}

@end


А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих настроСк, ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Когда Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅, ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ β€” ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ доставлСно ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ NSUserDefaultsDidChangeNotification. ΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹ΠΉ ΠΊ этому ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡŽ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ NSUserDefaults ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ настройки вашСго прилоТСния user defaults.

15.7. Настройка прилоТСния для получСния ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ

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

ВрСбуСтся ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сСрвСр ΠΌΠΎΠ³ ΠΏΠΎ своСй ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ увСдомлСния Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ устройства.

РСшСниС

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги.

1. ΠΠ°ΡΡ‚Ρ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для вашСго прилоТСния, Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² Π² Π½Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ получСния ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ.

2. Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ зарСгистрируйтС устройство для получСния ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ для этого прилоТСния.

3. Π’ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ устройства для вашСго прилоТСния ΠΈ ΠΎΡ‚ΠΎΡˆΠ»ΠΈΡ‚Π΅ этот ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° сСрвСр.

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, примСняСмом для внСсСния настроСк ΠΈ рСгистрации вашСго прилоТСния для получСния ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ. Π‘Π΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, этим вопросам Π±ΡƒΠ΄Π΅Ρ‚ посвящСн ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π».

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

ΠŸΡƒΡˆ-увСдомлСния ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ увСдомлСния Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π΄Π°ΠΆΠ΅ Ссли вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€ΠΈ поступлСнии увСдомлСния. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ увСдомлСния Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ самим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΡƒΡˆ-увСдомлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° сСрвСрС ΠΈ ΠΎΡ‚ΡΡ‹Π»Π°ΡŽΡ‚ΡΡ с Π½Π΅Π³ΠΎ Π² Apple, Π° Apple сама Ρ€Π°Π·Π΄Π°Π΅Ρ‚ эти увСдомлСния Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ устройства, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, поэтому сами составляСм ΠΏΡƒΡˆ-увСдомлСния ΠΈ отправляСм ΠΈΡ… Π½Π° сСрвСры APNS (Apple Push Notifications Services). Π—Π°Ρ‚Π΅ΠΌ APNS пытаСтся Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ наши ΠΏΡƒΡˆ-увСдомлСния ΠΏΠΎ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ Π½Π° устройства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зарСгистрированы для получСния Ρ‚Π°ΠΊΠΈΡ… ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для iOS ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΡƒΡˆ-увСдомлСния, Ρƒ Π½Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ получСния ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ настроили Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ваши сСртификаты для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ распространСния прилоТСния. Π§Ρ‚ΠΎΠ±Ρ‹ автоматичСски ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСртификаты, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½ΠΎΠ²ΠΎΠΉ настройкой Accounts (Π£Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ записи), появившСйся Π² Xcode. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» Xcode Preferences (Настройки), Π² Π½Π΅ΠΌ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Accounts (Π£Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ записи). Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² список ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй ваш ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Apple ID, Π° Π΄Π°Π»Π΅Π΅ Xcode сконфигурируСт сСртификаты Π·Π° вас.

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

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

3. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Identifiers (Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹) создайтС для сСбя Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ App ID. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ Explicit App ID (явный ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ com.pixolity.ios.cookbook.PushNotificationApp. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: это имя построСно ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ записи Π΄ΠΎΠΌΠ΅Π½Π° Π² стилС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π²Ρ‹Π±Ρ€Π°Π» для этого прилоТСния. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния Π² стилС ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ записи Π΄ΠΎΠΌΠ΅Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π²Π°ΠΌ ΠΈ вашСй ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ.

4. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ App Services (БСрвисы прилоТСния) Π½Π° страницС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° прилоТСния ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ установили Ρ„Π»Π°ΠΆΠΎΠΊ для ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ (Push Notifications) (рис. 15.5).


Рис. 15.5. Активизация ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ для App ID


5. ΠšΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вас устроит конфигурация ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° прилоТСния (рис. 15.6), ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ваш App ID Π² Apple.


Рис. 15.6. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° прилоТСния с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΡƒΡˆ-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ


6. ΠŸΠΎΡΠ»Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ настроитС всС Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° прилоТСния, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» Provisioning Profiles (ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ) вашСго iOS-ΠΏΠΎΡ€Ρ‚Π°Π»Π°.

7. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Development). ПозТС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ β€” Ad Hoc ΠΈ App Store, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ± этом Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ. Когда Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² App Store, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ этому ΡˆΠ°Π³Ρƒ ΠΈ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Ad Hoc ΠΈ App Store.

8. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния связан с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ сгСнСрировали Ρ€Π°Π½Π΅Π΅. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ вопрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρƒ вас попытаСтся Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ систСма ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ профиля ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

9. ΠšΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ², скачайтС Π΅Π³ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ iTunes Π½Π° своСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈ установкС профиля Π½Π΅ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠ² Π½Π° Π½Π΅ΠΌ. ΠŸΡ€ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ имя Ρ„Π°ΠΉΠ»Π° установлСнного профиля Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½ΠΎ ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Ρ…Π΅Ρˆ-ΠΈΠΌΠ΅Π½Π΅ΠΌ MD5, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ» ΠΎΡ‡Π΅Π½ΡŒ слоТно ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° дискС. Если Π²Ρ‹ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π² iTunes, Ρ‚ΠΎ iTunes установит ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ΄ Π΅Π³ΠΎ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.

10. Π’ Xcode Π² настройках сборки вашСго прилоТСния просто Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ сборку Π² соотвСтствии с Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ (схСма Development) Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ этот ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² схСмС Release (Π Π΅Π»ΠΈΠ·) ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ App Store ΠΈΠ»ΠΈ Ad Hoc, созданиСм ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°ΠΉΠΌΠ΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠ·ΠΆΠ΅.

11. ΠŸΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ ваш ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ для OS X β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² TextEdit. НайдитС Π² Ρ„Π°ΠΉΠ»Π΅ профиля ΠΊΠ»ΡŽΡ‡ Entitlements. Π’Π΅ΡΡŒ этот Ρ€Π°Π·Π΄Π΅Π» ΠΌΠΎΠ΅Π³ΠΎ профиля ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ выглядит Ρ‚Π°ΠΊ:


<key>Entitlements</key>

<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>


12. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ PLIST-Ρ„Π°ΠΉΠ» для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Xcode, Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ этот Ρ„Π°ΠΉΠ» Entitlements.plist. Π’ Xcode Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° этом Ρ„Π°ΠΉΠ»Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Open As (ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ) ΠΈ Π΄Π°Π»Π΅Π΅ Source Code (Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄). Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ вашСго Ρ„Π°ΠΉΠ»Π° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:


<plist version="1.0">

<dict/>

</plist>