Open main app via today extension

Today extensions have access to an NSExtensionContext which allows you to open an app. In your extension controller:

let myAppUrl = NSURL(string: "myapp://some-context")!
extensionContext?.openURL(myAppUrl, completionHandler: { (success) in
    if (!success) {
        // let the user know it failed
    }
})

The success parameter is provided because the system may not be able to open a particular URL (say you want to launch "twitter://" but the user does not have the Twitter app installed. If you're launching your own app, this shouldn't be an issue.


The provided code by Christopher Pickslay works fine, you just need to add the following lines to the application's info.plist (open as a source code):

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>com.mikitamanko.myapp</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>some-context</string>
            </array>
        </dict>
    </array>

right after the

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

Here's the complete guide how to open the app or share Users Defaults with Extension and the containing app.