2016-11-14 14 views
4

私の今日の拡張ウィジェットから、運がないメインアプリケーションへのディープリンクを開こうとしています。メインアプリの今日の拡張機能からURLを開く

//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: 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 
} 

が、私はの項目のいずれかを選択すると(私はACTION_TODAY://が必要とされていないと思いますが、一人でACTION_TODAYは私と同じ結果になります)今日の拡張機能に表示されているコレクションビュー、コンソールは私に__55-[_NCWidgetExtensionContext openURL:completionHandler:]_block_invoke failed: Error Domain=NSOSStatusErrorDomain Code=-50 "(null)"

+0

そして、いくつかの理由から、URLスキームにアンダースコアを含めることは本当に悪い考えだった...それは問題を修正しました削除。ウィジェットはコンテナアプリを正しく開くことができるようになりました。 – nelsballs

+0

偉大な、そしてスペースも許可されていません.. ;-) – Mehul

答えて

4
  • 今日表示contrあなたがメインのiOSアプリを拡張機能から開く必要があるところで、次のコードを入力してください。

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

私が言ったように、問題は私のURLの値にアンダースコアの存在だけでした。 – nelsballs

+0

StarterApplicationの名前はどのように決定されますか? –

+1

@JoeFratianniあなたのアプリInfo.plistのURLスキームによって決まります –

関連する問題