كيف يمكنك تعيين الخاص بك الكاكاو تطبيق ويب الافتراضي المتصفح ؟

StackOverflow https://stackoverflow.com/questions/49510

  •  09-06-2019
  •  | 
  •  

سؤال

كيف يمكنك تعيين الخاص بك الكاكاو تطبيق ويب الافتراضي المتصفح ؟

أريد إنشاء أحد تطبيقات التي يتم إطلاقها بشكل افتراضي عندما ينقر المستخدم على HTTP أو HTTPS الرابط في تطبيقات أخرى (البريد ، يشات.... الخ).

هل كانت مفيدة؟

المحلول

هناك أربع خطوات لجعل التطبيق التي يمكن أن تكون بمثابة متصفح الويب الافتراضي.الخطوات الثلاث الأولى يسمح التطبيق الخاص بك بمثابة دور معالج ذات الصلة مخططات URL (HTTP و HTTPS) و الخطوة النهائية يجعل الافتراضي دور معالج تلك المخططات.

1) إضافة مخططات URL التطبيق الخاص بك يمكن التعامل مع التطبيق الخاص بك معلومات.plist

لإضافة دعم http:// و https:// كنت بحاجة إلى إضافة التالية إلى التطبيق الخاص بك معلومات عن الفندق.plist.هذا يحكي OS أن التطبيق الخاص بك هو قادرة على التعامل مع HTTP HTTP عناوين url.

<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>

2) كتابة عنوان URL أسلوب معالج

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

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

  //TODO: Your custom URL handling code here
}

3) تسجيل URL أسلوب معالج

التالي أخبر مدير الحدث الكائن الذي وطريقة الاتصال عندما يريد استخدام التطبيق الخاص بك لتحميل URL.في مدونة هنا أنا مرت self كما معالج الحدث ، على افتراض أن نطلق setEventHandler من نفس الكائن الذي يحدد getUrl:withReplyEvent: الأسلوب.

يجب عليك إضافة هذا الكود في مكان ما في التطبيق الخاص بك initialisation رمز.

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

بعض التطبيقات ، بما في ذلك الإصدارات القديمة من برنامج Adobe AIR, استخدام بديل WWW!/OURL AppleEvent طلب فتح تطبيق عناوين url ، بحيث تكون متوافقة مع تلك التطبيقات يجب عليك أيضا إضافة ما يلي:

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

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

كل ما فعلناه حتى الآن كما قال OS أن التطبيق الخاص بك هو المتصفح, الآن نحن بحاجة إلى أن تجعل من المتصفح الافتراضي.

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

CFStringRef bundleID = (CFStringRef)[[NSBundle mainBundle] bundleIdentifier];
OSStatus httpResult = LSSetDefaultHandlerForURLScheme(CFSTR("http"), bundleID);
OSStatus httpsResult = LSSetDefaultHandlerForURLScheme(CFSTR("https"), bundleID);
//TODO: Check httpResult and httpsResult for errors

(ربما من الأفضل أن تطلب إذن المستخدم قبل تغيير المتصفح الافتراضي.)

مخصص مخططات URL

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

نصائح أخرى

إذا كنت ترغب فقط في تغيير الافتراضي مساعد التطبيق http(s), يمكنك القيام بذلك في سفاري تفضيلات.هناك ستجد القائمة المنسدلة التي سوف تمكنك من تحديد جميع المسجلين معالج طلبات http.تلقائيا لديك التطبيق نفسه كما المتصفح الافتراضي راجع تعليمات سابقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top