рд╣рд╛рдп рд╕рдм рд▓реЛрдЧ
рдПрдХ рдЕрдЪреНрдЫрд╛ рдЦреЗрд▓ рдмрдирд╛рдирд╛ рд╕рднреА рдХрд╛рдо рд╕реЗ рджреВрд░ рд╣реИред рдПрдХ рддреИрдпрд╛рд░ рдЙрддреНрдкрд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЧреЗрдо рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдЯреВрд▓ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рдЯреНрд░реИрдХрд┐рдВрдЧ рд░реЗрдлрд░рд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдмреИрдирд░ рдЯреНрд╡рд┐рд╕реНрдЯ рдФрд░ рдСрдлрд╡реЗрд░рд▓, рдиреНрдпреВрдЬрд╝рд▓реЗрдЯрд░реНрд╕ рдХреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЕрдиреНрдп рдЕрдЪреНрдЫреЗ рдЧреЗрдо рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рд╕рд╣рдмрджреНрдз рдПрд╕рдбреАрдЖрд░, рдЖрджрд┐ред рдЖрджрд┐ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрд▓рд╡рд░ рдореЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рдХреМрди рд╕реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ iOS рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВред
рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореБрдЦреНрдп рд╡рд┐рдкрдгрди рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдХреБрдЫ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рдореВрд╣реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА рд╣реИ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рдЧрднрдЧ рд╕рднреА рдРрд╕реЗ рдПрд╕рдбреАрдХреЗ рдХреЛ рдЖрд╡реЗрджрди рдореЗрдВ рд╕рддреНрд░ рдЖрд░рдВрднреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: doFinishLaunchingWithOptions: рдпрд╛ applicationDidBecomeActive: рд╡рд┐рдзрд┐рдпрд╛рдБред рд╕рднреА рд╕реНрдерд╛рдкрд┐рдд рдЯреНрд░реИрдХрд░реНрд╕ рдХрд╛ рднреА рдЕрднреНрдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреБрд╢ рд╕реВрдЪрдирд╛рдПрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рд╣реЛрддреА рд╣реИрдВред
рдПрдХ рд╕рдлрд▓ рдЗрди-рдРрдк рдХреЗ рдмрд╛рдж рд░реЗрдлрд░рд▓ рдЯреНрд░реИрдХрд░реНрд╕ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рд╕реНрд╡рдпрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЖрдк рдЖрдБрдХрдбрд╝реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрдиреНрд╣реАрдВ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ "рдЕрдзрд┐рдХ рд╡рдЬрди" рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреНрд▓рд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред
рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпреЗ рдХрд╛рд░реНрдп рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ, рдЕрдВрддрд░ рдХреЗрд╡рд▓ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреА рдФрд░ рдЕрдиреНрдп рдПрдкрд┐рдХ рдореЗрдВ рд╣реИрдВред
IOS рдХреЗ рд▓рд┐рдП рдЧреЗрдордбреЗрд╡ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдмрд┐рдирд╛ рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдХреЗ - рдХрд╣реАрдВ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ (рдФрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рдЦреЗрд▓ рдкрд░ рд╕реАрдзреЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдХрд╛рдо рдХрд░реЗрдВ, рдФрд░ "рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдХрд┐рдЯ" рд╕реЗ рдкрд░реЗрд╢рд╛рди рди рд╣реЛрдВред рдЗрд╕реЗ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХрд╛рд╢рдХ рдЕрдкрдиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдПрд╕рдбреАрдХреЗ, рдлреНрд░реЗрдорд╡рд░реНрдХ рдЗрддреНрдпрд╛рджрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЕрд▓рд╛рд╡рд░ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред рд╣рдордиреЗ рдЕрд▓рд╡рд░ рдЖрдИрдУрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдкрдгрди рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ "рдереЛрдбрд╝рд╛ рдЬрд╛рджреВ рдХрд░рддрд╛ рд╣реИред"
"рдереЛрдбрд╝рд╛ рд╕рд╛ рдЬрд╛рджреВ" рдХрд╛ рдЙрддреНрддрд░ рдЕрджреНрднреБрдд рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд░рдирдЯрд╛рдЗрдо рдФрд░ рдЗрд╕рдХреЗ рдХреЛрдб рдорд┐рд╢реНрд░рдг рдХреНрд╖рдорддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрд╡реЗрджрди рдореЗрдВ рдХрдИ рдПрд╕рдбреАрдХреЗ рдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: didFinishLaunchingWithOptions: рд╡рд┐рдзрд┐, рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд▓рд┐рдЧреЗрдЯ рд╕реЗ рдЗрд╕ рдХреЙрд▓ рдХреЛ "рдЕрд╡рд░реЛрдзрди" рдХрд░рдиреЗ рдФрд░ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, UIApplication рдкрд░ рдПрдХ рд╢реНрд░реЗрдгреА рдмрдирд╛рдПрдВ, setDelegate рд╡рд┐рдзрд┐ рдХреЛ рдкрдХрдбрд╝реЗрдВ:
@interface UIApplication(AlawarFramework) @end @implementation UIApplication(AlawarFramework) + (void) load { method_exchangeImplementations(class_getInstanceMethod(self, @selector(setDelegate:)), class_getInstanceMethod(self, @selector(af_setDelegate:))); } - (void) af_setDelegate:(id<UIApplicationDelegate>)delegate { Method method = nil; method = class_getInstanceMethod([delegate class], @selector(application:didFinishLaunchingWithOptions:)); if (method) { class_addMethod([delegate class], @selector(application:AFDidFinishLaunchingWithOptions:), (IMP)AFdynamicDidFinishLaunching, "v@:::"); method_exchangeImplementations(class_getInstanceMethod([delegate class], @selector(application:didFinishLaunchingWithOptions:)), class_getInstanceMethod([delegate class], @selector(application:AFDidFinishLaunchingWithOptions:))); } else { class_addMethod([delegate class], @selector(application:didFinishLaunchingWithOptions:), (IMP)AFdynamicDidFinishLaunching, "v@:::"); }
рдЗрд╕реА рддрд░рд╣, рд╣рдо рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ ApplicationDidBecomeActive, рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдЖрджрд┐ред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ Xcode- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдВрдХрд░ рдлреНрд▓реИрдЧ -all_load рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрди-рдРрдк рдХреЗ рд╕рд╛рде рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╕реНрдерд┐рддрд┐, рд░реЗрдлрд░рд▓ рдЯреНрд░реИрдХрд░реНрд╕ рдФрд░ рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ рдЙрдирдХреА рдорд╛рдиреНрдпрддрд╛ рдФрд░ рдкрдВрдЬреАрдХрд░рдгред рдпрд╣рд╛рдВ рд╣рдордиреЗ рдПрдХ рдФрд░ рд╕рд╛рдЗрдб рдкреНрд░реЙрдмреНрд▓рдо рд╣рд▓ рдХреАред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рдРрдкреНрдкрд▓ рдЦрд╛рддреЗ рдХреЗ рддрд╣рдд рдФрд░ рдХреБрдЫ рдЗрди-рдРрдк рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЬрдм рдкреНрд░рдХрд╛рд╢рди рдФрд░ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рдХреНрдпреВрдП рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рддреЛ рджреВрд╕рд░реЗ рдЦрд╛рддреЗ рдФрд░ рдЕрдиреНрдп рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ StoreKit API рдкрд░ рдЕрдкрдиреЗ API "рд░реИрдкрд░" рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдФрд░ рднреБрдЧрддрд╛рди рд╕рддреНрдпрд╛рдкрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рджрд┐рдПред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рднреА рдЙрддреНрдкрд╛рдж рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбреЗрд╡рд▓рдкрд░ StoreKit рдХреЗ рд╕рдорд╛рди рдПрдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдЦрд░реАрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛, рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рддреНрдпрд╛рдкрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ, рдЖрджрд┐ред
рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЙрдкрдХрд░рдг рднреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред