首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSWidgetExtensionContext openURL Swift

NSWidgetExtensionContext openURL Swift
EN

Stack Overflow用户
提问于 2016-11-05 23:49:19
回答 4查看 5.6K关注 0票数 7

我一直在尝试实现一个按钮来从它的小部件打开我的iOS应用程序。我意识到这个问题已经在论坛上被打死了,但我无法找到与我收到的具体错误的解释。也许你们中一些更有经验的iOS开发人员可以对此有所了解。

我正在使用iOS 8.1和Swift 2为我的一个iOS应用程序开发一个针对XCode 10的更新。

我的小部件按钮的代码:

添加到小部件的info.plist中的URL方案:

按下OpenApp按钮时收到的运行时错误:

代码语言:javascript
复制
AppWidget[11872:3577323] __55-[_NCWidgetExtensionContext openURL:completionHandler:]_block_invoke failed: Error Domain=NSOSStatusErrorDomain Code=-10814 "(null)"

//注意: app名称已替换为相应的泛型。

EN

回答 4

Stack Overflow用户

发布于 2016-12-14 18:05:50

我经常发现OS Status lookup站点在从错误中推断细节方面非常有用。代码为-10814的操作系统错误是kLSApplicationNotFoundErr,它描述了以下情况的场景:

启动服务数据库中没有与输入条件匹配的应用程序。

听起来您的应用程序没有正确地注册到系统中,作为您正在使用的URL方案的使用者。你有双倍(双倍!)是否检查捆绑包标识符和URL方案是否匹配?您是否验证过可以使用Safari的URL启动您的应用程序?

票数 10
EN

Stack Overflow用户

发布于 2017-03-09 21:33:42

网址方案应该添加到主应用程序的info.plist,而不是小工具的。

票数 5
EN

Stack Overflow用户

发布于 2017-02-16 13:50:39

要从Today打开包含应用程序扩展:

代码语言:javascript
复制
let myAppUrl = URL(string: "main-screen:")!
extensionContext?.open(myAppUrl, completionHandler: { (success) in
    if (!success) {
        print("error: failed to open app from Today Extension")
    }
})

您还需要将以下行添加到应用程序的info.plist (作为源代码打开):

代码语言:javascript
复制
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>com.mikitamanko.bubblewrap</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>main-screen</string>
            </array>
        </dict>
    </array>

紧跟在

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

这里的complete guide如何打开应用程序或分享用户的默认值与扩展和包含应用程序。

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

https://stackoverflow.com/questions/40440169

复制
相关文章

相似问题

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