Open main app via today extension
Asked Answered
S

2

7

I implemented added a today widget into my app. The today extension includes an UITableView. Now I'd like to open the app if a cell of the UITableView has been pressed. Does someone of you know how to do this?

Superheterodyne answered 14/8, 2015 at 19:16 Comment(1)
Please take a look at this #24020320Messiaen
K
12

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.

Kassiekassity answered 15/8, 2015 at 1:24 Comment(5)
Since you said you want it to launch when the user taps a UITableViewCell, presumably you'd call it in tableView:didSelectRowAtIndexPath:Kassiekassity
I tried this already but the func tableView:didSelectRowAtIndexPath isn't working.Superheterodyne
I tried this already but the func tableView:didSelectRowAtIndexPath isn't working.Superheterodyne
There is a bug where tapping blank areas in UITableViewCells does not result in table view callbacks. Take a look at stackoverflow.com/questions/26223537.Kassiekassity
Ok. Thanks for your help!Superheterodyne
U
2

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.

Unbated answered 16/2, 2017 at 5:44 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.