MacOS의 프로세스 간 통신 시스템 중 하나는 XPC입니다. 이 시스템 계층은 libSystem을 사용하여 plist 구조의 전송을 기반으로 프로세스 간 통신을 위해 개발되었으며 시작되었습니다. 실제로 사전과 같은 구조의 교환을 통해 프로세스를 관리 할 수있는 인터페이스입니다. 유전성으로 인해 iOS 5에도이 메커니즘이 있습니다.
이 소개의 의미를 이미 이해했을 것입니다. 그러나 iOS에는 XPC 통신 도구가 포함 된 시스템 서비스가 있습니다. 그리고 SMS 전송을위한 데몬으로 작업을 보여주고 싶습니다. 그러나이 기능은 iOS 6에서 고정되어 있지만 iOS 5.0-5.1.1과 관련이 있습니다. 탈옥, 개인 프레임 워크 및 기타 불법 도구는 악용 될 필요가 없습니다. / usr / include / xpc / * 디렉토리의 헤더 파일 세트 만 필요합니다.
iOS에서 SMS를 전송하기위한 요소 중 하나는 시스템 서비스 com.apple.chatkit입니다.이 작업에는 짧은 문자 메시지 생성, 관리 및 전송이 포함됩니다. 쉽게 제어 할 수 있도록 공개적으로 사용 가능한 통신 포트 com.apple.chatkit.clientcomposeserver.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);
이제 XPC 연결 myConnection이 SMS 전송 서비스로 설정되었습니다. 그러나 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. More on this later.
NSLog(@"Received a message event!");
});
xpc_connection_resume(myConnection);
연결이 활성화되었습니다. 현재 iOS 6은 전화 로그에 이러한 유형의 통신이 금지되었다는 메시지를 표시합니다. 이제 메시지 전송에 필요한 데이터로 xpc_dictionary와 비슷한 사전을 생성해야합니다.
NSArray *recipient = [NSArray arrayWithObjects:@"+7 (90*) 000-00-00", nil];
NSData *ser_rec = [NSPropertyListSerialization dataWithPropertyList:recipient 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(@"The message has been successfully delivered");
});
그게 다야. SMS를 보냈습니다.