NSWidgetExtensionContext openURL Swift

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

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

我的小部件按钮的代码: 在此处输入图像描述

添加到窗口小部件的info.plist的URL方案: 在此处输入图像描述

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

AppWidget[11872:3577323] __55-[_NCWidgetExtensionContext openURL:completionHandler:]_block_invoke failed: Error Domain=NSOSStatusErrorDomain Code=-10814 "(null)" 

//注意:应用名称已替换为相应的generics。

我经常发现OS状态查找站点对于从错误中推断细节非常有用。 代码-10814的操作系统错误是kLSApplicationNotFoundErr ,它描述了以下情况:

Launch Services数据库中的任何应用程序都不匹配输入条件。

听起来您的应用程序尚未作为您正在使用的URL方案的使用者在系统中正确注册。 你有两倍(双!)检查捆绑标识符和URL方案是否匹配? 您是否已validation可以使用Safari中的url启动您的应用?

从Todays Extension中打开Containing App:

 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中(作为源代码打开):

  CFBundleURLTypes   CFBundleURLName com.mikitamanko.bubblewrap CFBundleURLSchemes  main-screen    

就在这之后

     

以下是如何打开应用程序或与扩展程序和包含应用程序共享用户默认值的完整指南 。

URL方案应添加到主应用程序的info.plist中,而不是小部件。