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

objective-c – 如何将Cocoa应用程序设置为默认Web浏览器?,第1张

概述如何将Cocoa应用程序设置为默认Web浏览器? 我想创建一个应用程序,当用户单击其他应用程序(邮件,iChat等)中的HTTP或HTTPS链接时默认启动。 将应用程序设置为默认Web浏览器有四个步骤。前三个步骤允许您的应用程序充当相关URL方案(HTTP和HTTPS)的角色处理程序,最后一步使其成为这些方案的默认角色处理程序。 1)将您的应用程序可以处理的URL方案添加到应用程序的info.pl 如何将Cocoa应用程序设置为默认Web浏览器?

我想创建一个应用程序,当用户单击其他应用程序(邮件,iChat等)中的http或httpS链接时默认启动。

解决方法 将应用程序设置为默认Web浏览器有四个步骤。前三个步骤允许您的应用程序充当相关URL方案(http和httpS)的角色处理程序,最后一步使其成为这些方案的默认角色处理程序。

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

要添加对http://和https://的支持,您需要将以下内容添加到应用程序的info.pList文件中。这告诉 *** 作系统您的应用程序能够处理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处理程序方法

接下来,告诉事件管理器当要使用您的应用程序加载网址时,调用哪个对象和方法。在这里的代码中,我通过自我作为事件处理程序,假设我们从定义getUrl:withReplyEvent:方法的同一个对象调用setEventHandler。

您应该将此代码添加到应用程序的初始化代码中的某个位置。

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

(最好在更改默认浏览器之前询问用户的权限。)

自定义网址方案

值得注意的是,您也可以使用这些相同的步骤来处理自己的自定义网址方案。如果您要创建自定义网址方案,最好将其基于应用程序的包标识符,以避免与其他应用程序发生冲突。因此,如果您的包ID是com.example.MyApp,您应该考虑使用x-com-example-myapp:// URL。

总结

以上是内存溢出为你收集整理的objective-c – 如何将Cocoa应用程序设置为默认Web浏览器?全部内容,希望文章能够帮你解决objective-c – 如何将Cocoa应用程序设置为默认Web浏览器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1044407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存