2016-11-14 57 views
4

我試圖打開從我今天的擴展小部件到我的主要應用程序沒有運氣的深層鏈接。從今天的分機打開網址

//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給了我同樣的結果) enter image description here

//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)"

+0

而由於種種原因,這是一個非常糟糕的主意,包括在URL方案下劃線刪除...它已經解決了該問題。該小部件現在可以正確打開容器應用程序。 – nelsballs

+0

太棒了,空間也不允許那裏.. ;-) – Mehul

回答

4
  • 在今日觀點對照oller,將以下代碼放在需要從擴展中打開主iOS應用程序的地方。

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

就像我說的,這個問題只是在我的url值中存在一個下劃線。 – nelsballs

+0

StarterApplication的名稱是如何確定的? –

+1

@JoeFratianni它由您的應用中的URL方案確定Info.plist –