题
你怎么设置你的可可应用程序作为默认的网络浏览器?
我想创建一个应用程序启动时默认的用户点击HTTP或HTTPS链中的其他应用程序(邮件,iChat等)。
解决方案
有四个步骤要制作一个应用程序,可以作为默认的万维网浏览器。第三个步骤允许您应用程序,以作为一个角色的处理程序有关的URL方案(HTTP及HTTPS)和最后的步骤,使它的默认的作用的处理程序的那些方案。
1)添加URL方案的应用可以处理,以应用程序的信息。plist文件
增加支持 http://
和 https://
你需要添加以下内容应用程序的信息。plist文件。这会告诉你的操作系统,应用能够处理HTTP并HTTP的网址。
<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处理程序的方法应该看看事情是这样的:
- (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处理程序的方法
接下来,告诉事件管理其目的和方法的呼吁时,它要用你的应用到负荷的一个网址。在代码在这里我通过了 self
作为事件的处理程序,假设我们正在打电话 setEventHandler
从同样的对象,定义了 getUrl:withReplyEvent:
法。
你应该加入这个代码的地方在应用程序的初始代码。
NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager];
[em
setEventHandler:self
andSelector:@selector(getUrl:withReplyEvent:)
forEventClass:kInternetEventClass
andEventID:kAEGetURL];
一些应用程序,包括早期版本的空气,使用的替代WWW!/OURL AppleEvent要求的应用打开了网址,所以与这些应用程序还应增加以下内容:
[em
setEventHandler:self
andSelector:@selector(getUrl:withReplyEvent:)
forEventClass:'WWW!'
andEventID:'OURL'];
4)设置你的应用程序,作为默认的浏览器
我们所做的一切就因为告诉操作系统应用程序是 浏览器, 现在我们需要它 默认的浏览器.
我们一定要使用启动服务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方案这是一个很好的想法,它的基础应用的束的标识符,以避免冲突的其他应用程序。所以如果你捆绑ID com.example.MyApp
你应该考虑使用 x-com-example-myapp://
网址。
其他提示
如果你只是想要改变的默认辅助应用程序http(s),可以在野生动物偏好。在那里你会找到一个下这会让你选择的所有注册的处理程序的应用http。来自动应用程序的设置本身作为默认的浏览器查看以前的指令。