首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调试时未注册的URL方案

调试时未注册的URL方案
EN

Stack Overflow用户
提问于 2018-11-03 09:04:47
回答 1查看 283关注 0票数 0

对于我正在开发的Mac应用程序,我想使用一个URL方案,所以我设置了这样的方案:

代码语言:javascript
运行
复制
NSAppleEventManager.shared().setEventHandler(
    self,
    andSelector: #selector(handleUrlEvent(_:with:)),
    forEventClass: AEEventClass(kInternetEventClass),
    andEventID: AEEventID(kAEGetURL))

我有一个像这样注册的管理人员:

代码语言:javascript
运行
复制
@objc
func handleUrlEvent(_ event: NSAppleEventDescriptor, with replyEvent: NSAppleEventDescriptor) {
    log.verbose("handleUrlEvent")
}

我的URL方案已在我的Info.plist中注册

代码语言:javascript
运行
复制
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>CFBundleURLName</key>
        <string>Look for photo</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>gisync</string>
        </array>
    </dict>
</array>

问题是,当我使用Xcode运行我的应用程序时,URL方案没有注册,应用程序也没有得到我需要的事件。

当我从那里存档并启动我的应用程序时,方案是注册的,应用程序得到通知。因此,它可以正常工作,但我失去了调试功能。

编辑:发行版构建确实能以某种方式工作,因此对于发行版和调试来说,这似乎是不同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-03 20:40:26

尝试使用启动服务显式注册应用程序:LSRegisterURL

该函数将指定的应用程序及其文档和URL声明(如果有的话)添加到Launch数据库中,使应用程序成为文档和URL绑定的候选对象。

我会在applicationDidFinishLaunching中这样做,并且只在调试版本中使用条件编译。

另外,应用程序包的版本号也有影响:URL的首选应用程序

如果已找到同一应用程序的两个或多个版本,请优先选择具有最新版本号的版本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53129883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档