【问题标题】:Open url from Today Extension从 Today Extension 打开 url
【发布时间】:2016-11-14 16:26:14
【问题描述】:

我正在尝试打开一个从今天的扩展小部件到我的主应用程序的深层链接,但没有成功。

    //ExtensionViewController.swift
public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    let url = URL(string: "ACTION_TODAY://")
    self.extensionContext?.open(url!, completionHandler: { (completed) in
    })
}

主应用程序的Info.plist:(我猜ACTION_TODAY:// 是不需要的,但ACTION_TODAY 单独给了我相同的结果)

    //AppDelegate.swift
func application(_ application: UIApplication, open url: URL,
                 sourceApplication: String?, annotation: Any) -> Bool {

    let action_today = "ACTION_TODAY://"
    if url.absoluteString.contains(action_today) {
        return true
    }

    return false
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

    let action_today = "ACTION_TODAY://"
    if url.absoluteString.contains(action_today) {
        return true
    }
    return false
}

当我选择今天扩展中显示的 collectionView 的一项时,控制台会给我一个__55-[_NCWidgetExtensionContext openURL:completionHandler:]_block_invoke failed: Error Domain=NSOSStatusErrorDomain Code=-50 "(null)"

【问题讨论】:

  • 由于某些原因,在 URL 方案中包含下划线是一个非常糟糕的主意...删除它可以解决问题。小部件现在可以正确打开容器应用程序。
  • 太棒了,而且那里也不允许有空格.. ;-)

标签: ios swift today-extension


【解决方案1】:
  • 在今天的视图控制器中,将以下代码放在您需要从扩展中打开主 iOS 应用的位置。

    let appURL = NSURL(string: "StarterApplication://")
    
    self.extensionContext?.open(appURL! as URL, completionHandler:nil)
    

【讨论】:

  • 就像我说的,问题只是我的 url 值中存在下划线。
  • StarterApplication的名字是怎么确定的?
  • @JoeFratianni 它由您的应用 Info.plist 中的 URL 方案确定
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
相关资源
最近更新 更多