当前位置:  开发笔记 > IOS > 正文

如何将Cocoa应用程序设置为默认Web浏览器?

如何解决《如何将Cocoa应用程序设置为默认Web浏览器?》经验,为你挑选了1个好方法。

如何将Cocoa应用程序设置为默认Web浏览器?

我想创建一个默认启动的应用程序,当用户点击其他应用程序(Mail,iChat等)中的HTTP或HTTPS链接时.



1> georgebrock..:

制作可充当默认Web浏览器的应用程序有四个步骤.前三个步骤允许您的应用程序充当相关URL方案(HTTP和HTTPS)的角色处理程序,最后一步使它成为这些方案的默认角色处理程序.

1)将应用程序可以处理的URL方案添加到应用程序的info.plist文件中

要添加支持http://,https://您需要将以下内容添加到应用程序的info.plist文件中.这告诉操作系统您的应用程序能够处理HTTP和HTTP URL.

CFBundleURLTypes

    
        CFBundleURLName
        http URL
        CFBundleURLSchemes
        
            http
        
    
    
        CFBundleURLName
        Secure http URL
        CFBundleURLSchemes
        
            https
        
    

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:方法的同一对象调用.

您应该在应用程序的初始化代码中的某处添加此代码.

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)将您的应用程序设置为默认浏览器

到目前为止,我们所做的一切都告诉操作系统您的应用程序是浏览器,现在我们需要将其设置为默认浏览器.

我们必须使用Launch Services 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方案.如果您正在创建自定义网址方案,最好将其基于应用的包标识符,以避免与其他应用冲突.因此,如果您的捆绑ID是com.example.MyApp您应该考虑使用x-com-example-myapp://URL.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有