หนึ่งในระบบการสื่อสารระหว่างกระบวนการใน MacOS คือ XPC ชั้นของระบบนี้ได้รับการพัฒนาสำหรับการสื่อสารระหว่างกระบวนการตามการถ่ายโอนโครงสร้าง plist โดยใช้ libSystem และ launchd ในความเป็นจริงมันเป็นอินเตอร์เฟซที่ช่วยให้กระบวนการจัดการผ่านการแลกเปลี่ยนของโครงสร้างเช่นพจนานุกรม เนื่องจากพันธุกรรม, iOS 5 มีกลไกนี้เช่นกัน
คุณอาจเข้าใจสิ่งที่ฉันหมายถึงโดยการแนะนำนี้ ใช่มีบริการระบบใน iOS ที่มีเครื่องมือสำหรับการสื่อสาร XPC และฉันต้องการเป็นตัวอย่างการทำงานกับ daemon สำหรับการส่ง SMS อย่างไรก็ตามควรกล่าวว่าความสามารถนี้ได้รับการแก้ไขใน iOS 6 แต่เกี่ยวข้องกับ iOS 5.0—5.1.1 ไม่จำเป็นต้อง Jailbreak, Private Framework และเครื่องมือผิดกฎหมายอื่น ๆ เฉพาะชุดไฟล์ส่วนหัวจากไดเร็กทอรี / usr / include / xpc / * เท่านั้นที่จำเป็น
หนึ่งในองค์ประกอบสำหรับการส่ง SMS ใน iOS คือบริการระบบ 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 แล้ว