рдЖрдкрдХреА рдЯреЙрд░реНрдЪ рдПрд╕рдПрдордПрд╕ рднреЗрдЬ рд╕рдХрддреА рд╣реИ: рдЕрдкрдиреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ iOS 6 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдХрд╛рд░рдг



рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдИрдУрдПрд╕ 5 рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдФрд░ рд╣рдо рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА crumbs рдПрдХрддреНрд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд╣рдо рдмрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рдЖрд╡реЗрджрди рд╕реЗ рдПрд╕рдПрдордПрд╕ рднреЗрдЬрддреЗ рд╣реИрдВред



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

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

рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╣реА рд╕рдордЭ рдЧрдП рдереЗ рдХрд┐ рдореИрдВ рдЗрд╕ рдкрд░рд┐рдЪрдп рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд╣рд╛рдВ, iOS рдореЗрдВ рдРрд╕реА рд╕рд┐рд╕реНрдЯрдо рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ XPC рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╣реИрдВред рдФрд░ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдореЙрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЖрдИрдУрдПрд╕ 6 рдореЗрдВ рдмрдВрдж рд╣реИ , рд▓реЗрдХрд┐рди рдЖрдИрдУрдПрд╕ 5.0-5.1.1 рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЬреЗрд▓рдмреНрд░реЗрдХ, рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рдЕрдиреНрдп рдЕрд╡реИрдз рд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ MacOS рдкрд░ / usr / рд╢рд╛рдорд┐рд▓ / xpc / * рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЪрд╛рд╣рд┐рдПред

IOS рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ, рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ com.apple.chatkit рд╕рд┐рд╕реНрдЯрдо рд╕реЗрд╡рд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЧрдарди, рдкреНрд░рдмрдВрдзрди рдФрд░ рд▓рдШреБ рдкрд╛рда рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╣реИрдВред рдкреНрд░рдмрдВрдзрди рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдЪрд╛рд░ рдкреЛрд░реНрдЯ com.apple.chatkit.clientcomposeerver.xpc рд╣реИред XPC рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦ рдФрд░ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред



рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред

xpc_connection_t myconnection; dispatch_queue_t queue = dispatch_queue_create("com.apple.chatkit.clientcomposeserver.xpc", DISPATCH_QUEUE_CONCURRENT); myconnection = xpc_connection_create_mach_service("com.apple.chatkit.clientcomposeserver.xpc", queue, XPC_CONNECTION_MACH_SERVICE_PRIVILEGED); 


рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрд╕рдПрдордПрд╕ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП myconnection рдХрд╛ XPC рдХрдиреЗрдХреНрд╢рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, XPC рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрд╢рди "рдЬрдореЗ рд╣реБрдП" рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЗрд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдФрд░ рдЪрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

 xpc_connection_set_event_handler(myconnection, ^(xpc_object_t event) { xpc_type_t xtype = xpc_get_type(event); if(XPC_TYPE_ERROR == xtype) { NSLog(@"XPC sandbox connection error: %s\n", xpc_dictionary_get_string(event, XPC_ERROR_KEY_DESCRIPTION)); } // Always set an event handler. NSLog(@"Received an message event!"); }); xpc_connection_resume(myconnection); 


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

 NSArray *receipements = [NSArray arrayWithObjects:@"+7 (90*) 000-00-00", nil]; NSData *ser_rec = [NSPropertyListSerialization dataWithPropertyList:receipements format:200 options:0 error:NULL]; xpc_object_t mydict = xpc_dictionary_create(0, 0, 0); xpc_dictionary_set_int64(mydict, "message-type", 0); xpc_dictionary_set_data(mydict, "recipients", [ser_rec bytes], [ser_rec length]); xpc_dictionary_set_string(mydict, "text", "hello from your application!"); 


рдЫреЛрдЯреЗ рдЕрд╡рд╢реЗрд╖: XPC рдкреЛрд░реНрдЯ рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

 xpc_connection_send_message(myconnection, mydict); xpc_connection_send_barrier(myconnection, ^{ NSLog(@"Message has been successfully delievered"); }); 


рдзреНрд╡рдирд┐ рдиреЗ рдПрд╕рдПрдордПрд╕ рдХреЛ рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рднреЗрдЬрд╛ред
рдЗрд╕рд▓рд┐рдП, iOS 6 рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдереАред IOS 6 рдореЗрдВ, Apple рдиреЗ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рдд рдЬреЛрдбрд╝реА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╕реЗ рдЗрд╕ рд╕реЗрд╡рд╛ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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


All Articles