IOS 13 рдореЗрдВ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди

IOS рдФрд░ MacOS рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡рд░реНрд╖ рдХреА рдореБрдЦреНрдп рдШрдЯрдирд╛, WWDC, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде рдЙрджреНрдпреЛрдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рдкреНрд░рд╕рдиреНрди рдХрд░рддреА рд╣реИ, рдлреНрд░реЗрдорд╡рд░реНрдХ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ - рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ рд╡рд░реНрд╖ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдерд╛ рдФрд░ рд╕рдХреНрд░рд┐рдп рдЪрд░реНрдЪрд╛ рдХрд╛ рд╡рд┐рд╖рдп iOS, рдФрд░ SwiftUI, рдФрд░ iPadOS OS рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдерд╛ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЦреБрдж-рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛-рдХреНрдпрд╛-рдЙрдкрдХрд░рдг рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕реЗ рд╡рд┐рд╖рдп рдереЗ рдЬреЛ рдХрдо рдХрд╡рд░ рдХрд┐рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрдо рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рдерд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рдХреЛ рдЫреБрдЖ рдЧрдпрд╛ рдерд╛ред

рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ


рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХреНрдпрд╛ рд╣реИ, рдЖрдЗрдП рд╕рдордЭрд╛рддреЗ рд╣реИрдВ: рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреБрдЫ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрдм рд╡рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рд╕реНрдХреНрд░реАрди рдкрд░ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реЛ (рдпрд╛рдиреА, рдпрд╣ рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рдирд╣реАрдВ рд╣реИ) ред

рдЫрд╡рд┐

рдпрд╣ рддрд╕реНрд╡реАрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рддреА рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдХрд┐рди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд░рд╣ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реЗ рджреВрд╕рд░реЗ рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╕рддреНрд░ рдореЗрдВ рдРрдкреНрдкрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдВрд╕рд╛рдзрди рдЦрдкрдд рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЬрдм рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдКрд░реНрдЬрд╛ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдпрд╣ рд╕реАрдзреЗ рд░рд┐рдкреЛрд░реНрдЯ рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

WWDC рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рдХреНрддрд╛рдУрдВ рдиреЗ рдЙрд╕реА рдЪреАрдЬрд╝ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬреЛ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рдерд╛ - рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдФрд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬреЛ рд╡рд╣рд╛рдВ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдЫрд╡рд┐

рд╣рдо рд╡рд┐рдХрд╛рд╕ рдХреЗ рдХрд░реАрдм рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЬрдм рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рджрд░реНрд╢рди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рддреЛ Apple рдХреЗ рд▓рд┐рдП 3 рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ:

  • рд╢рдХреНрддрд┐
  • рдЙрддреНрдкрд╛рджрдХрддрд╛
  • рдЧреЛрдкрдиреАрдпрддрд╛

рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рдпрджрд┐ рдХреЛрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рд░реНрдп рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рддрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реЛред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЕрддреНрдпрдзрд┐рдХ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╕рд╛рдзрди рд╕реАрдорд╛ рд░рдЦреА рдЧрдИ рд╣реИред рдпрджрд┐ рдпреЗ рд╕реАрдорд╛рдПрдВ рдкрд╛рд░ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди Apple рджреНрд╡рд╛рд░рд╛ рдЬрдмрд░рди рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдЧреЗ рдХреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрдЧрд╛ред рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдХрдВрдкрдиреА рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреА рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ) рдХреНрдпрд╛ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рд╡реИрд╕реЗ, рдЗрди рдПрдкреАрдЖрдИ рдХреА рд╕реВрдЪреА рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдереА - рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ рд╕рдореАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХреА, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЙрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред

рд╣рд╛рдВ, рдФрд░ рд╕рддреНрд░ рдореЗрдВ рд╣реА, Apple рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдореИрд╕реЗрдВрдЬрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрджрд╛рд╣рд░рдг (WWDC рдХреЗ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрд╡рд▓реЛрдХрди рджрд┐рдЦрд╛рдпрд╛ред

BackgroundTasks


рдЗрд╕ рд╡рд░реНрд╖ рдХреА рд▓рдЧрднрдЧ рдЖрдзреА рд░рд┐рдкреЛрд░реНрдЯ рдЗрд╕ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред

рдЗрд╕ рдирд╡реАрдирддрд╛ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ 2 рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдп:

  • рдРрдк рд░рд┐рдлреНрд░реЗрд╢ рдЯрд╛рд╕реНрдХ
  • рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯрд╛рд╕реНрдХ

рдРрдк рд░рд┐рдлреНрд░реЗрд╢ рдЯрд╛рд╕реНрдХ


рдмреАрдЬреА рдРрдк рд░рд┐рдлреНрд░реЗрд╢ рдЯрд╛рд╕реНрдХ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЯрд╛рд╕реНрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЪреАрдЬ рдЬреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдмрд╣реБрдд рдЦрд╛рд╕ рдмрдирд╛рддреА рд╣реИ рд╡рд╣ рд╣реИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ред iOS рд╕реАрдЦрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рддрдиреА рдмрд╛рд░ рдФрд░ рдХрд┐рд╕ рд╕рдордп рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдРрд╕реЗ рд╕рдордп рдореЗрдВ BGAppRefreshTask рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред

рдЫрд╡рд┐

рд╣рд╛рдВ, рдпрд╣ 30 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ - рдУрдПрд╕ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдмрдЪрд╛ рд╣реБрдЖ рдпрд╣ рдлреАрдЪрд░ рдмрд╣реБрдд рдЕрдкреНрд░рд┐рдп рд╣реИред

рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

import UIKit import BackgroundTasks @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { BGTaskScheduler.shared.register( forTaskWithIdentifier: "pl.snowdog.example.refresh", using: DispatchQueue.global() ) { task in self.handleAppRefresh(task) } return true } private func handleAppRefresh(_ task: BGTask) { let queue = OperationQueue() queue.maxConcurrentOperationCount = 1 let appRefreshOperation = AppRefreshOperation() queue.addOperation(appRefreshOperation) task.expirationHandler = { queue.cancelAllOperations() } let lastOperation = queue.operations.last lastOperation?.completionBlock = { task.setTaskCompleted(success: !(lastOperation?.isCancelled ?? false)) } scheduleAppRefresh() } } 

рдХрдИ рдмрд┐рдВрджреБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рд░реЛрдХрдиреЗ рдФрд░ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • рдХрд╛рд░реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ (рдПрдХреНрд╕рдкрд╛рдпрд░рд╣реИрдВрдбрд▓рд░) рдкрд░ рд╕рдорд╛рдкреНрддрд┐ рд╣реИрдВрдбрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рд╕рдордп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
  • рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛрддреЗ рд╣реА setTaskCompleted рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • BGTaskScheduler рдПрдХ рдореБрдЦреНрдп рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдХрд╛рдо рдХреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯрд╛рд╕реНрдХ


рдПрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд╣реИрдХ рдмреАрдЬреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯрд╛рд╕реНрдХ рд╣реИред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдордПрд▓ рдореЙрдбрд▓ рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдлрд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Apple рдХрд╛ рд╡рд╛рджрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХрдИ рдорд┐рдирдЯреЛрдВ рдХрд╛ рд╕рдордп рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдЬреЛ рдХрд┐ рднрд╛рд░реА рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╡рд╛рдЪрд╛рд░ рд╣реИ рдЬреЛ 30 рд╕реЗрдХрдВрдб рдХреЗ рджреБрдЦреА рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдлрд┐рд░ рд╕реЗ:

 import UIKit import BackgroundTasks @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { BGTaskScheduler.shared.register( forTaskWithIdentifier: "pl.snowdog.example.train", using: DispatchQueue.global() ) { task in self.handleMLTrain(task) } return true } private func scheduleMLTrain() { do { let request = BGProcessingTaskRequest(identifier: "pl.snowdog.example.train") request.requiresExternalPower = true request.requiresNetworkConnectivity = true try BGTaskScheduler.shared.submit(request) } catch { print(error) } } } 

рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ:

  • requiesExternalPower рдПрдХ рдмреВрд▓рд┐рдпрди рдореВрд▓реНрдп рд╣реИ рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐ рд╕реНрд░реЛрдд рд╕реЗ рдЬреБрдбрд╝рд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрд╛ рдирд╣реАрдВред
  • рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди - рдПрдХ рдмреВрд▓рд┐рдпрди рдорд╛рди рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдбрд┐рдмрдЧрд┐рдВрдЧ


рдпрд╣рд╛рдБ рднреА, рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд╣реИред рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдФрд░ рдЙрд╕ рд╕рдордп рдХреЗ рдмреАрдЪ рдХреА рджреЗрд░реА рдЬрдм рд╕рд┐рд╕реНрдЯрдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХрдИ рдШрдВрдЯреЗ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдирд┐рдЬреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЪрдпрдирд┐рдд рд╕рдордпрд░реЗрдЦрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдорд╛рдкрди рдХреЛ рдмрд╛рдзреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбреАрдмрдЧрд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдХреЗрд╡рд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

  • рдХрд╛рд░реНрдп рд▓реЙрдиреНрдЪ:

     e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateLaunchForTaskWithIdentifier:@"TASK_IDENTIFIER"] 
  • рдЬрдмрд░рди рдХрд╛рд░реНрдп рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдорд╛рдкреНрддрд┐:

     e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateExpirationForTaskWithIdentifier:@"TASK_IDENTIFIER"] 

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ


рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЯрд╛рд╕реНрдХ рдЖрдкрдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЗ 13 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд╕реЗ, рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рд░реВрдкрд░реЗрдЦрд╛ рдЕрднреА рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛрдЧреАред рдЙрдкрд░реЛрдХреНрдд рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдХрд╛рдлреА рддрд╛рд░реНрдХрд┐рдХ рд╣реИред

рдореИрдВ рдбрдмреНрд▓реНрдпреВрдбрдмреНрд▓реНрдпреВрдбреАрд╕реА рд╕реЗ рдПрдХ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрдиреЗ рдХреА рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рд╡рд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВред

Source: https://habr.com/ru/post/hi466857/


All Articles