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

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

按下OpenApp按钮时收到的运行时错误:
AppWidget[11872:3577323] __55-[_NCWidgetExtensionContext openURL:completionHandler:]_block_invoke failed: Error Domain=NSOSStatusErrorDomain Code=-10814 "(null)"//注意: app名称已替换为相应的泛型。
发布于 2016-12-14 18:05:50
我经常发现OS Status lookup站点在从错误中推断细节方面非常有用。代码为-10814的操作系统错误是kLSApplicationNotFoundErr,它描述了以下情况的场景:
启动服务数据库中没有与输入条件匹配的应用程序。
听起来您的应用程序没有正确地注册到系统中,作为您正在使用的URL方案的使用者。你有双倍(双倍!)是否检查捆绑包标识符和URL方案是否匹配?您是否验证过可以使用Safari的URL启动您的应用程序?
发布于 2017-03-09 21:33:42
网址方案应该添加到主应用程序的info.plist,而不是小工具的。
发布于 2017-02-16 13:50:39
要从Today打开包含应用程序扩展:
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 (作为源代码打开):
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.mikitamanko.bubblewrap</string>
<key>CFBundleURLSchemes</key>
<array>
<string>main-screen</string>
</array>
</dict>
</array>紧跟在
<?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如何打开应用程序或分享用户的默认值与扩展和包含应用程序。
https://stackoverflow.com/questions/40440169
复制相似问题