我想创建一个应用程序,当用户单击其他应用程序(邮件,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浏览器?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)