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

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

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

[self endBackgroundTask];

}];


}


Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ (Completion Handler) Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ endBackgroundTask Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° прилоТСния. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ написали ΠΌΡ‹ сами, ΠΈ выглядит ΠΎΠ½ Ρ‚Π°ΠΊ:


β€” (void) endBackgroundTask{

dispatch_queue_t mainQueue = dispatch_get_main_queue();


__weak AppDelegate *weakSelf = self;

dispatch_async(mainQueue, ^(void) {

AppDelegate

*strongSelf = weakSelf;

if (strongSelf!= nil){

[strongSelf.myTimer invalidate];

[[UIApplication sharedApplication]

endBackgroundTask: self.backgroundTaskIdentifier];

strongSelf.backgroundTaskIdentifier = UIBackgroundTaskInvalid;

}


});


}


Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»Π°Π΄ΠΈΡ‚ΡŒ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ долгосрочной Π·Π°Π΄Π°Ρ‡ΠΈ:

β€’ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ½ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΠ· Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Core Foundation ΠΈΠ»ΠΈ созданы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GCD;

β€’ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ„ΠΎΠ½ΠΎΠ²ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, Π²Ρ‹Π·Π²Π°Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ endBackgroundTask: класса UIApplication;

β€’ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΊΠ°ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΡƒΡŽ, присвоив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ UIBackgroundTaskInvalid ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ.

И послСднСС, Π½ΠΎ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΠΎΠ΅. Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, Π° долгосрочная Π·Π°Π΄Π°Ρ‡Π° всС Π΅Ρ‰Π΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΎΡ‚ Π½Π΅Π΅ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ:


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


if (self.backgroundTaskIdentifier!= UIBackgroundTaskInvalid){

[self endBackgroundTask];

}


}


Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, ΠΌΡ‹ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя Π½Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ долгосрочной Π·Π°Π΄Π°Ρ‡ΠΈ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для выполнСния ΠΊΠΎΠ΄Π° нашСго Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°). Π’ Ρ‚ΠΎ врСмя ΠΌΡ‹ рСгулярно считываСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства backgroundTimeRemaining экзСмпляра класса UIApplication ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° консоль. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ экзСмпляра beginBackgroundTaskWithExpirationHandler:, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ относится ΠΊ классу UIApplication, ΠΌΡ‹ записали ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ прямо ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ закончится Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ долгосрочной Π·Π°Π΄Π°Ρ‡ΠΈ. (Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это происходит Π·Π° 5–10 сСкунд Π΄ΠΎ истСчСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ.) Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ, Π²Ρ‹Π·Π²Π°Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра endBackgroundTask:, относящийся ΠΊ классу UIApplication.

Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΎ Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ ΠΈ запросило Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя Π½Π° исполнСниС ΠΊΠΎΠ΄Π° Π΅Ρ‰Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ врСмя истСкло, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Β«ΠΎΠΆΠΈΠ²ΠΈΡ‚ΡŒΒ» ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ. Если Π΄ΠΎ этого Π²Ρ‹ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄ΠΎΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π· для этого ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½ΠΎ Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π΄ΠΎΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° экзСмпляра endBackgroundTask:, относящСгося ΠΊ классу UIApplication.

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

Π Π°Π·Π΄Π΅Π» 14.1.

14.3. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ возмоТностСй Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ обновлСния Π² прилоТСния

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

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

РСшСниС

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ обновлСния (background fetch).

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

МногиС прилоТСния, Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠ΅ Π½Π° Ρ€Ρ‹Π½ΠΎΠΊ App Store, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ возмоТностями соСдинСния с Ρ‚Π΅ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌΠΈ сСрвСрами. НСкоторыС Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ с сСрвСра Π΄Π°Π½Π½Ρ‹Π΅ для обновлСния, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ‚ΡΡ‹Π»Π°ΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π° сСрвСр ΠΈ Ρ‚. Π΄. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² iOS сущСствовал лишь ΠΎΠ΄ΠΈΠ½ способ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Β«Π·Π°Π½ΡΡ‚ΡŒΒ» Ρƒ iOS Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (ΠΎΠ± этом ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 14.2), ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΎ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ это врСмя Π½Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Но Ρ‚Π°ΠΊΠΎΠΉ способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ. БущСствуСт ΠΈ пассивный способ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ просто «сидит», Π° iOS сама выдСляСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π˜Ρ‚Π°ΠΊ, Π²Π°ΠΌ трСбуСтся просто ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Ρ‚ΡŒ систСмС iOS Ρ€Π°Π·Π±ΡƒΠ΄ΠΈΡ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ спокойный ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ этом происходит Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

НапримСр, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Twitter. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Π²ΠΈΡ‚Ρ‹. Π”ΠΎ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ это ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ лишь ΠΎΠ΄Π½ΠΈΠΌ способом: ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ списка Ρ‚Π²ΠΈΡ‚ΠΎΠ². Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ систСма iOS ΠΌΠΎΠΆΠ΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π²ΠΈΡ‚Ρ‚Π΅Ρ€Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅ΠΌΡƒ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π»Π΅Π½Ρ‚Ρƒ сообщСний. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚Π²ΠΈΡ‚Ρ‹ Π½Π° экранС ΡƒΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ обновлСния, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Capabilities (ВозмоТности) Π² настройках вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π° Π² области Background Modes (Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹) ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π»Π°ΠΆΠΎΠΊ Background fetch (Π€ΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅) (рис. 14.1).


Рис. 14.1. Активизация Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ обновлСния Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ


ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ обновлСния двумя способами. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, iOS Π±ΡƒΠ΄ΠΈΡ‚ Π΅Π³ΠΎ ΠΈ ΠΏΡ€ΠΈΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ для обновлСния. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Π΅ Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ ΠΈ iOS Π±ΡƒΠ΄ΠΈΡ‚ Π΅Π³ΠΎ (ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅) ΠΈ ΠΏΡ€ΠΈΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ обновлСния. Но ΠΊΠ°ΠΊ iOS ΡƒΠ·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ слСдуСт Ρ€Π°Π·Π±ΡƒΠ΄ΠΈΡ‚ΡŒ, Π° ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ? Π’ этом систСмС Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠΎΡ‡ΡŒ программист.

Для этого Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра setMinimumBackgroundFetchInterval:, относящийся ΠΊ классу UIApplication. Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΈ частота, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ iOS Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡƒΠ΄ΠΈΡ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ ΠΏΡ€ΠΈΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для обновлСния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это свойство ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ UIApplicationBackgroundFetchIntervalNever. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ iOS Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Но Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого свойства ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, сообщив количСство сСкунд, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», Π»ΠΈΠ±ΠΎ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ UIApplicationBackgroundFetchIntervalMinimum, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ iOS Π±ΡƒΠ΄Π΅Ρ‚ Β«ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ усилия» β€” Π±ΡƒΠ΄ΠΈΡ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ.


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

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


[application setMinimumBackgroundFetchInterval:

UIApplicationBackgroundFetchIntervalMinimum];


return YES;

}


Π‘Π΄Π΅Π»Π°Π² это, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра application: performFetchWithCompletionHandler, относящийся ΠΊ Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρƒ вашСго прилоТСния. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ performFetchWithCompletionHandler: этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Π±Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Π’ΠΎΠΎΠ±Ρ‰Π΅ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся Π² Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅ прилоТСния, ΠΊΠΎΠ³Π΄Π° iOS ΠΏΡ€ΠΈΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ для обновлСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π°ΠΌ придСтся ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° это ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ всС Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΎ. Π‘Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ потрСбуСтся Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° UIBackgroundFetchResult:


typedef NS_ENUM(NSUInteger, UIBackgroundFetchResult) {

UIBackgroundFetchResultNewData,

UIBackgroundFetchResultNoData,

UIBackgroundFetchResultFailed

} NS_ENUM_AVAILABLE_IOS(7_0);


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

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ собираСмся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ с сСрвСра новости. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ слишком слоТным сСрвСрным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΌΡ‹ просто сымитируСм сСрвСрныС Π²Ρ‹Π·ΠΎΠ²Ρ‹. Π‘Π½Π°Ρ‡Π°Π»Π° создадим класс NewsItem, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π² качСствС свойств Π΄Π°Ρ‚Ρƒ ΠΈ тСкст: