рдЖрдИрдУрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рднрд╛рдЬрди рдФрд░ рдП / рдмреА рдкрд░реАрдХреНрд╖рдг рдЬрд▓реНрджреА рдФрд░ рд╕рд╕реНрддреЗ рдореЗрдВ рдХреИрд╕реЗ рдХрд░реЗрдВ

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

рдПрдмреА рдкрд░реАрдХреНрд╖рдг рдХреНрдпреЛрдВ? рдмрд┐рдХреНрд░реА рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХреИрд╕реЗ рдХрд░реЗрдВ рдкрд░ рдЕрдкрдиреА рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдХреМрди рд╕рд╛ рдмреИрдирд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдмреЗрдЪрддрд╛ рд╣реИ - рдПрдХ рдмрд┐рд▓реНрд▓реА рдпрд╛ рдПрдХ рдХреБрддреНрддреЗ рдХреЗ рд╕рд╛рде? рд╣рдо рджрд░реНрд╢рдХреЛрдВ рдХреЛ рджреЛ рд╕рдорд╛рди рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдХреБрддреНрддреЗ рдХреЛред рд╣рдо рдмрд┐рдХреНрд░реА рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ, рдПрдХ рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд┐рдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред

рдмрд╛рдЬрд╛рд░ рдкрд░ рддреИрдпрд╛рд░ рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВ рдЬреЛ рдЖрд╡рд╛рдЬ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдореИрдВ рдпрд╣рд╛рдВ рдореВрд▓реНрдп рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдЕрдЧрд░ рдпрд╣ рд╕рд╕реНрддрд╛ рд╣реЛрддрд╛ рддреЛ рдореИрдВ рдЦрд╝реБрд╢реА рд╕реЗ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ред рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рд╕рдорд╛рди рд╕рд╕реНрддреЗ рдпрд╛ рдореБрдлреНрдд рд╕рд┐рд╕реНрдЯрдо рдЬрд╛рдирддреЗ рд╣реИрдВред

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

рд╡рд┐рдиреНрдпрд╛рд╕



рд╣рдо рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди" ("рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди") рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВрдЧреЗ - рдХреНрдпрд╛ рдФрд░ рдХрд┐рд╕рдХреЛ рджрд┐рдЦрд╛рдирд╛ рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХ рд╕реНрдерд┐рд░ JSON рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреБрдЫ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреЛрдИ рднреА рд╕рд╛рдЗрдЯ рдХрд░реЗрдЧреА)ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд▓реЙрдиреНрдЪ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, NSURLConnection рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред

рдЖрдЧреЗ, рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдмреИрдирд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдкрд╣рд▓реВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрдЯрди рдХреЗ рд░рдВрдЧреЛрдВ рддрдХред рд╣рдорд╛рд░рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

{ "banners": [ { "if": "$user_type == 'geek'", "link": "http://habrahabr.ru", "image": "habrahabr.jpg" }, { "if": "$user_type == 'has_money'", "link": "http://buyall.com", "image": "buyall.jpg" } ]} 


рдпрд╣рд╛рдБ, рд╕реНрдкрд╖реНрдЯ "рдЫрд╡рд┐" рдФрд░ "рд▓рд┐рдВрдХ" рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреИрдирд░ рдореЗрдВ рдПрдХ "рдпрджрд┐" рдлрд╝реАрд▓реНрдб рднреА рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдмреИрдирд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред

рдореИрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рддрд╛рдХрд┐ рд╣рдореЗрд╢рд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╣реЛред рдпрд╣ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреБрдЫ рдореБрд╢реНрдХрд┐рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рди рдХрд░реЗрдВред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд░



рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдмреИрдирд░ рдореЗрдВ "рдпрджрд┐" рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдмрд╕ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 - (void)onProductBought:(NSString*)productId { // ,     NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; [defaults setBool:YES forKey:productId]; [defaults synchronize]; } - (NSDictionary*)userVars { //     NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; NSMutableDictionary* vars = [NSMutableDictionary new]; for (NSString* productId in PRODUCT_IDS) { vars[productId] = [NSNumber numberWithBool:[defaults boolForKey:productId]]; } return vars; } 


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

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдкрд░, рд╣рдо AB рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмреВрд▓рд┐рдпрди рд╡реИрд░рд┐рдПрдмрд▓ рднреА рдмрдирд╛рддреЗ рд╣реИрдВ:

 - (void)onAppStarted { NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; if (![defaults objectForKey:@"install_date"]) { [defaults setObject:[NSDate date] forKey:@"install_date"]; [defaults setBool:(arc4random() % 2) == 0 forKey:@"test_a"]; [defaults setBool:(arc4random() % 2) == 0 forKey:@"test_b"]; [defaults setBool:(arc4random() % 2) == 0 forKey:@"test_c"]; [defaults synchronize]; } } 


рддреАрди рдЪрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рддреАрди рд╕реНрд╡рддрдВрддреНрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЪрд░ рдмреИрдирд░ (рдиреАрд▓рд╛ рдпрд╛ рд▓рд╛рд▓) рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рджреВрд╕рд░рд╛ рдмреИрдирд░ рдкрд╛рда (рд╕рдлреЗрдж рдпрд╛ рдХрд╛рд▓рд╛) рдХреЗ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣реИ, рдФрд░ рддреАрд╕рд░рд╛ рдмреИрдирд░ рдкрд╛рда рдХреЗ рд▓рд┐рдП рд╣реА рд╣реИ (рддрдЯрд╕реНрде рдпрд╛ рдЪреМрдВрдХрд╛рдиреЗ рд╡рд╛рд▓рд╛)ред

рдЪрд░ рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ



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

рдирддреАрдЬрддрди, рд▓рдЪреАрд▓реА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


рдРрд╕реЗ рднрд╛рд╡реЛрдВ рдХреА рдЧрдгрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ:

 - (BOOL)evaluatePredicate:(NSString*)predicateStr { NSDictionary* userVars = [self userVars]; @try { NSPredicate* predicate = [NSPredicate predicateWithFormat:predicateStr]; return [predicate evaluateWithObject:nil substitutionVariables:userVars]; } @catch (NSException *exception) { NSLog(@"Exception! %@", exception); return NO; } } 


рдмреИрдирд░ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ "рдЕрдЧрд░" рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрджрд┐ рд╢рд░реНрдд рдкреВрд░реА рд╣реЛрддреА рд╣реИ, рддреЛ рдореИрдВ рдмреИрдирд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВред

рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдХреА рдкреНрд░рдгрд╛рд▓реА



рдПрдмреА рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдлреНрд░реА рдлреНрд▓рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╕рд╛рдорд╛рдиреНрдп рдХреЗ рдмрдЬрд╛рдп:

 [Flurry logEvent:@тАЭPRODUCT_BOUGHTтАЭ withParameters:@{ @тАЭproduct_idтАЭ: productId } ]; 


рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

 [Flurry logEvent:@тАЭPRODUCT_BOUGHTтАЭ withParameters:[self paramsWithUserVars:@{ @тАЭproduct_idтАЭ: productId }] ]; - (void)paramsWithUserVars:(NSDictionary*)params { NSMutableDictionary* newParams = [[NSMutableDictionary alloc] initWithDictionary:params]; NSDictionary* userVars = [self userVars]; for (NSString* var in userVars) { newParams[var] = userVars[var]; } return newParams; } 


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

рд╕реВрдЪрдирд╛рдПрдВ рдкреБрд╢ рдХрд░реЗрдВ



рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдЯреВрд▓ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рд╣реИред рд╣рдо рдЙрдирдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЬрди рднреА рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдкреБрд╢ рдХреЛ рдирд╛рд░рд╛рдЬрд╝ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ "рдЦрд░реАрджреЗрдВ" рдЬреЛ рдкрд╣рд▓реЗ рд╣реА рдЦрд░реАрдж рдЪреБрдХреЗ рд╣реИрдВред

рд╢рд╣рд░реА рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рдзрдХреНрдХрд╛ рд╕рдорд╛рдзрд╛рди рд╢рд╣рд░реА рд╣рд╡рд╛рдИ рдкреЛрдд (рдпреВрдП) рд╣реИред рдпрд╣ рдкреНрд░рддрд┐ рдорд╛рд╣ 1 рдорд┐рд▓рд┐рдпрди рдкреБрд╢-рдЕрдк рддрдХ рдореБрдлреНрдд рд╣реИ, рдЬреЛ рдХрд┐ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╣реИред рдпреВрдП рдореЗрдВ рдПрдХ рдЯреИрдЧ рдФрд░ рд╕реЗрдЧрдореЗрдВрдЯ рддрдВрддреНрд░ рд╣реИред рдЯреИрдЧ рдПрдХ рд▓реЗрдмрд▓ (рд▓рд╛рдЗрди) рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рд╕реЗрдЧрдореЗрдВрдЯ рдЖрдкрдХреЛ рдЯреИрдЧ рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдФрд░ рдХреЗрд╡рд▓ рджрд┐рдП рдЧрдП рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ рдкреБрд╢ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЯреИрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдХреЗрд╡рд▓ рдПрдХ рдЕрд▓рдЧ рд░реВрдк рдореЗрдВред {@ "Product_id": 1} рдХреЗ рдмрдЬрд╛рдп @ "product_id_1" рд╣реЛрдЧрд╛ред

 NSMutableArray* pushTags = [NSMutableArray new]; NSDictionary* userVars = [self userVars]; for (NSString* var in userVars) { NSString* tag = [NSString stringWithFormat:@"%@_%@", var, userVars[var]]; [pushTags addObject:tag]; } [UAPush shared].tags = pushTags; [[UAPush shared] updateRegistration]; 


рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЪрд░ рдХреЛ UA рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдореЙрдирд┐рдЯрд░ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдиреБрднрд╛рдЧ рдСрдбрд┐рдпрдВрд╕> рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ UA рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЖрдЧреЗ, рдЖрдк рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм-рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИред рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, UA рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдХреЗ рдЕрдиреБрдорд╛рдирд┐рдд рджрд░реНрд╢рдХреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛ред

рдЖрдк рдпреВрдП рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╕реАрдзреЗ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдкреБрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдпрд╣ рднреБрдЧрддрд╛рди рд╕реЗрд╡рд╛ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдХрд░реНрд▓ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдПрдХ рдЫреЛрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗ:

 #      APP_AUTH=<App Key>:<App Master Secret> #   PUSH_MESSAGE='"aps":{"alert":" !","sound":"default"},"banner":"welcome.jpg"' #     (   id ) curl -X GET -u "$APP_AUTH" -H 'Content-Type: application/json' https://go.urbanairship.com/api/segments/ #     curl -X POST -u "$APP_AUTH" -H 'Content-Type: application/json' -d '{"segments":["$SEGMENT_ID"],"ios":{$PUSH_MESSAGE}}' https://go.urbanairship.com/api/push/segments 


рдПрдХ рдЦрдВрдб рдкрд░ рдПрдХ рдзрдХреНрдХрд╛ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЬрд╛рдБрдЪрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдБ:

 curl -X POST -u "$APP_AUTH" -H 'Content-Type: application/json' -d '{"device_tokens":["$TEST_DEVICE_TOKEN"],$PUSH_MESSAGE}' https://go.urbanairship.com/api/push/ 


рдирд┐рд╖реНрдХрд░реНрд╖



рд╡рд░реНрдгрд┐рдд рдкреНрд░рдгрд╛рд▓реА рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдХрднреА-рдХрднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ (300,000 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ - рдареАрдХ) рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдХрд░рддреА рд╣реИред рдЖрдк рдЗрд╕реЗ рдПрдХ рджрд┐рди рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде, рдпрд╣ рдирд┐рд╡реЗрд╢ рдмрд╣реБрдд рдЬрд▓реНрджреА рднреБрдЧрддрд╛рди рдХрд░реЗрдЧрд╛ред рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреИрд╕реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЬрд╣рд╛рдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ)ред рдЬрдм рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓реЗрддреА рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рд╕реЗ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдВ рджреЗрддрд╛ рд╣реВрдВ!

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


All Articles