Cocoa Uygulamanızı macOS’ta Varsayılan Web Tarayıcısı Olarak Ayarlama
Bir web tarayıcısı oluşturmak zorlayıcı görünebilir, ancak Cocoa uygulamanızın bu rolü üstlenmesini istiyorsanız? Uygulamanızı macOS’ta varsayılan web tarayıcısı olarak ayarlamak sadece mümkündür, aynı zamanda HTTP ve HTTPS bağlantılarıyla kesintisiz etkileşimler sağlayarak kullanıcı deneyimini artırmanıza olanak tanır. Bu blog yazısında, bunu başarmanın temel adımlarını gözden geçireceğiz.
Sorun
Kullanıcılar Mail ya da iChat gibi uygulamalarda bir web bağlantısına tıkladığında, varsayılan web tarayıcısı açılır. Eğer bir Cocoa uygulaması geliştiriyorsanız ve bu bağlantıları açmak için kendi uygulamanızın kullanılmasını istiyorsanız, uygulamanızı HTTP ve HTTPS bağlantılarını işleyecek şekilde yapılandırmanız ve varsayılan tarayıcı olarak ayarlamanız gerekiyor.
Çözüm
Cocoa uygulamanızı varsayılan web tarayıcısı yapmak için bu dört adımı izleyebilirsiniz:
1. Uygulamanızın Info.plist Dosyasına URL Şemaları Ekleyin
İlk göreviniz, macOS’a uygulamanızın HTTP ve HTTPS isteklerini işleyebileceğini bildirmektir. Bunu, uygulamanızın Info.plist
dosyasını değiştirerek yapabilirsiniz. İşte nasıl yapılacağı:
- Uygulamanızın Info.plist dosyasını açın.
- Aşağıdaki XML bölümünü ekleyin:
<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>
Bu ekleme ile uygulamanızın her iki tür URL şemasını işleyebileceğini beyan etmiş oluyorsunuz.
2. Bir URL İşleyici Yöntemi Yazın
Sonraki adım, uygulamanızın bir URL açması istendiğinde tetiklenecek bir yöntem oluşturmaktır. İşte basit bir örnek:
- (void)getUrl:(NSAppleEventDescriptor *)event
withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
NSString *urlStr = [[event paramDescriptorForKeyword:keyDirectObject]
stringValue];
// TODO: Burada kendi URL işleme kodunuzu yazın
}
Bu yöntemde, URL elde edildikten sonra nasıl işleneceği ile ilgili mantığı uygulayacaksınız.
3. URL İşleyici Yönteminizi Kaydedin
Artık URL işleyici yöntemine sahip olduğunuza göre, bunu macOS Event Manager ile kaydetmeniz gerekiyor. Bunu uygulamanızın başlatma bölümüne aşağıdaki kodu ekleyerek yapabilirsiniz:
NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager];
[em setEventHandler:self
andSelector:@selector(getUrl:withReplyEvent:)
forEventClass:kInternetEventClass
andEventID:kAEGetURL];
Ayrıca, eski uygulamaları desteklemek için WWW!/OURL Apple Olayı için de kaydedin:
[em setEventHandler:self
andSelector:@selector(getUrl:withReplyEvent:)
forEventClass:'WWW!'
andEventID:'OURL'];
4. Uygulamanızı Varsayılan Tarayıcı Olarak Ayarlayın
Son olarak, uygulamanızı HTTP ve HTTPS şemaları için varsayılan işleyici olarak ayarlamanız gerekiyor; bunu Launch Services API kullanarak yapabilirsiniz. Aşağıdaki kodu ekleyin:
CFStringRef bundleID = (CFStringRef)[[NSBundle mainBundle] bundleIdentifier];
OSStatus httpResult = LSSetDefaultHandlerForURLScheme(CFSTR("http"), bundleID);
OSStatus httpsResult = LSSetDefaultHandlerForURLScheme(CFSTR("https"), bundleID);
// TODO: httpResult ve httpsResult için hataları kontrol edin
İpucu: Varsayılan tarayıcı ayarlarını değiştirmeden önce kullanıcının iznini istemek iyi bir uygulama praksisidir.
Özel URL Şemaları
Standart URL şemalarının yanı sıra, kendi özel şemalarınızı da uygulayabilirsiniz. Diğer uygulamalarla çakışmayı önlemek için özel şemanızı uygulamanızın paket tanımlayıcısına dayandırmak akıllıca olacaktır. Örneğin, paket ID’niz com.example.MyApp
ise, x-com-example-myapp://
gibi yapılandırmalar uygulamayı değerlendirebilirsiniz.
Sonuç
Bu basit kılavuzu izleyerek, Cocoa uygulamanızı macOS’taki kullanıcılar için varsayılan web tarayıcısına dönüştürebilirsiniz. Bu, uygulama kullanımını artırmanın yanı sıra kullanıcılara daha iyi, entegre bir web deneyimi sunar. Varsayılan ayarları değiştirirken kullanıcı rızasını her zaman önceliklendirmeyi unutmayın, böylece daha sorunsuz bir geçiş sağlanmış olur.
Uygulama sırasında herhangi bir sorunla karşılaşırsanız, soruları sormaktan veya yorum bırakmaktan çekinmeyin!