إرسال الرسائل النصية القصيرة (SMS) باستخدام Swift (iOS/macOS): واجهة برمجة تطبيقات مكتبة MessageUI
في تطوير التطبيقات المحمولة الحديثة، تظل إمكانية إرسال الرسائل النصية القصيرة مباشرة من التطبيق ميزة مطلوبة. على منصات Apple (iOS وmacOS)، يقوم المكتبة المدمجة MessageUI.framework بحل هذه المهمة. توفر واجهة سهلة الاستخدام لإنشاء وإرسال الرسائل النصية دون الحاجة إلى خدمات خارجية. في هذه المقالة، سنشرح بالتفصيل كيفية استخدام واجهة برمجة تطبيقات MessageUI لإرسال الرسائل النصية القصيرة باستخدام Swift، وسنستعرض أمثلة على الكود، ومعالجة الأخطاء، وخصائص العمل على الأجهزة المختلفة.
ما هو MessageUI.framework؟
MessageUI هو إطار عمل نظامي من Apple يسمح للتطبيقات بالتكامل مع تطبيق "الرسائل" المدمج. الفئة الرئيسية للعمل مع الرسائل النصية القصيرة هي MFMessageComposeViewController. توفر وحدة تحكم واجهة مستخدم جاهزة لإنشاء وإرسال الرسائل. من المهم ملاحظة أن واجهة برمجة التطبيقات هذه تعمل فقط على الأجهزة الحقيقية المزودة ببطاقة SIM نشطة (لنظام iOS) أو على أجهزة Mac التي تم إعداد iMessage عليها (macOS 10.15+). الوظيفة غير متاحة على المحاكي.
تحضير المشروع
لاستخدام MessageUI، يجب:
- إضافة إطار العمل
MessageUIإلى المشروع (عادة ما يكون موجودًا بالفعل في المكتبة القياسية). - إضافة الاستيراد في الملف الذي سيتم فيه استدعاء الإرسال:
import MessageUI. - التأكد من أن الجهاز يمكنه إرسال الرسائل النصية القصيرة - التحقق عبر
MFMessageComposeViewController.canSendText().
مثال أساسي لإرسال رسالة نصية قصيرة
لنلقِ نظرة على مثال بسيط: إنشاء وحدة التحكم، تعيين المستلم والنص، ثم عرضها.
import UIKitimport MessageUI
class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {
@IBAction func sendSMSTapped(_ sender: UIButton) { // التحقق مما إذا كان الجهاز يمكنه إرسال الرسائل النصية القصيرة guard MFMessageComposeViewController.canSendText() else { print("الجهاز لا يدعم إرسال الرسائل النصية القصيرة") return }
// إنشاء مثيل لوحدة التحكم let messageVC = MFMessageComposeViewController() messageVC.messageComposeDelegate = self
// تعيين المستلم messageVC.recipients = ["+79991234567"]
// تعيين نص الرسالة messageVC.body = "مرحباً! هذه رسالة اختبار من تطبيقي."
// عرض وحدة التحكم present(messageVC, animated: true, completion: nil) }
// MARK: - MFMessageComposeViewControllerDelegate func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { // إغلاق وحدة التحكم بعد الإرسال/الإلغاء dismiss(animated: true, completion: nil)
// معالجة النتيجة switch result { case .sent: print("تم إرسال الرسالة بنجاح") case .cancelled: print("تم إلغاء الإرسال من قبل المستخدم") case .failed: print("حدث خطأ أثناء إرسال الرسالة") @unknown default: print("نتيجة غير معروفة") } }}في هذا الكود، نقوم بـ:
- التحقق من إمكانية الإرسال باستخدام
canSendText(). - إنشاء
MFMessageComposeViewControllerوتكوين المستلمين ونص الرسالة. - تعيين المفوض (
messageComposeDelegate) لمعالجة النتيجة. - في طريقة المفوض، نعالج أربع نتائج محتملة: تم الإرسال، تم الإلغاء، خطأ، حالة غير معروفة.
إمكانيات إضافية
يدعم MessageUI ليس فقط النص البسيط، ولكن أيضًا المرفقات:
// إضافة مرفق (مثال: صورة)if let imageData = UIImage(named: "photo")?.pngData() { messageVC.addAttachmentD