你怎么设置你的可可应用程序作为默认的网络浏览器?

我想创建一个应用程序启动时默认的用户点击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。来自动应用程序的设置本身作为默认的浏览器查看以前的指令。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top