كيف يمكنك تعيين الخاص بك الكاكاو تطبيق ويب الافتراضي المتصفح ؟
-
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.تلقائيا لديك التطبيق نفسه كما المتصفح الافتراضي راجع تعليمات سابقة.