كيفية تعيين تطبيق Cocoa الخاص بك كمتصفح الويب الافتراضي على macOS

قد يبدو إنشاء متصفح ويب مهمة شاقة، لكن ماذا لو كنت تريد أن يتولى تطبيق Cocoa الخاص بك هذا الدور؟ تعيين تطبيقك كمتصفح الويب الافتراضي على macOS ليس فقط أمرًا ممكنًا ولكنه أيضًا يتيح لك تحسين تجربة المستخدم من خلال توفير تفاعلات سلسة مع الروابط HTTP و HTTPS. في هذه التدوينة، سنتعرف على الخطوات الأساسية لتحقيق ذلك.

المشكلة

عندما ينقر المستخدمون على رابط ويب في تطبيقات مثل Mail أو iChat، يتم فتح متصفح الويب الافتراضي لديهم. إذا كنت تطور تطبيق Cocoa وترغب في أن يكون هو الذي يفتح هذه الروابط، فسيكون عليك تكوين تطبيقك للتعامل مع الروابط HTTP و HTTPS وتعيينه كمتصفح افتراضي.

الحل

لجعل تطبيق Cocoa الخاص بك هو متصفح الويب الافتراضي، يمكنك اتباع الخطوات الأربع التالية:

1. إضافة أنظمة URL إلى ملف Info.plist الخاص بتطبيقك

المهمة الأولى هي إبلاغ نظام macOS بأن تطبيقك يمكنه التعامل مع طلبات HTTP و HTTPS. يتم ذلك عن طريق تعديل ملف Info.plist الخاص بتطبيقك. إليك كيفية القيام بذلك:

  1. افتح ملف Info.plist الخاص بتطبيقك.
  2. أضف الكود XML التالي:
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>http URL</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>http</string>
        </array>
    </dict>
    <dict>
        <key>CFBundleURLName</key>
        <string>Secure http URL</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>https</string>
        </array>
    </dict>
</array>

بهذا الإضافة، أنت تعلن أن تطبيقك يمكنه التعامل مع كلا نوعي أنظمة URL.

2. كتابة طريقة التعامل مع URL

بعد ذلك، تحتاج إلى إنشاء طريقة سيتم استدعاؤها عندما يُطلب من تطبيقك فتح URL. إليك مثال بسيط:

- (void)getUrl:(NSAppleEventDescriptor *)event 
    withReplyEvent:(NSAppleEventDescriptor *)replyEvent 
{
    NSString *urlStr = [[event paramDescriptorForKeyword:keyDirectObject] 
        stringValue];

    // TODO: قم بإضافة كود التعامل مع URL الخاص بك هنا
}

في هذه الطريقة، ستقوم في النهاية بتنفيذ المنطق للتعامل مع URL بعد استرجاعه.

3. تسجيل طريقة التعامل مع URL

الآن وقد قمت بإنشاء طريقة التعامل مع URL، تحتاج إلى تسجيلها مع مدير أحداث macOS. يمكنك القيام بذلك عن طريق إضافة الكود التالي إلى قسم تهيئة تطبيقك:

NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager];
[em setEventHandler:self 
  andSelector:@selector(getUrl:withReplyEvent:) 
  forEventClass:kInternetEventClass 
  andEventID:kAEGetURL];

بالإضافة إلى ذلك، لدعم التطبيقات القديمة، قم بالتسجيل لحدث Apple WWW!/OURL:

[em setEventHandler:self 
  andSelector:@selector(getUrl:withReplyEvent:) 
  forEventClass:'WWW!' 
  andEventID:'OURL'];

4. تعيين تطبيقك كمتصفح افتراضي

أخيرًا، تحتاج إلى تعيين تطبيقك كمعالج افتراضي لأساليب HTTP و HTTPS باستخدام واجهة خدمات الإطلاق. أضف الكود التالي:

CFStringRef bundleID = (CFStringRef)[[NSBundle mainBundle] bundleIdentifier];
OSStatus httpResult = LSSetDefaultHandlerForURLScheme(CFSTR("http"), bundleID);
OSStatus httpsResult = LSSetDefaultHandlerForURLScheme(CFSTR("https"), bundleID);
// TODO: تحقق من httpResult و httpsResult للبحث عن الأخطاء

نصيحة: من الجيد أن تطلب إذن المستخدم قبل تغيير إعدادات متصفحهم الافتراضي.

أنظمة URL مخصصة

بالإضافة إلى أنظمة URL القياسية، يمكنك أيضًا تنفيذ أنظمة مخصصة خاصة بك. لتجنب التعارض مع التطبيقات الأخرى، من الحكمة أن تستند نظامك المخصص على معرّف حزمة تطبيقك. على سبيل المثال، إذا كان معرّف حزمة تطبيقك هو com.example.MyApp، فكر في تنفيذ تكوينات مثل x-com-example-myapp://.

الخاتمة

من خلال اتباع هذا الدليل البسيط، يمكنك تحويل تطبيق Cocoa الخاص بك إلى متصفح الويب الافتراضي للمستخدمين على macOS. هذا لا يعزز من فائدة التطبيق فحسب، بل يوفر أيضًا تجربة ويب أفضل ومتكاملة للمستخدمين. تذكر دائمًا أن تعطي الأولوية لموافقة المستخدم عند تعديل الإعدادات الافتراضية لضمان انتقال سلس.

لا تتردد في طرح أي أسئلة أخرى أو ترك تعليقات إذا واجهت أي مشاكل خلال عملية التنفيذ!