【发布时间】: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