Откройте основное приложение через сегодняшнее расширение

Я добавил виджет «Сегодня» в свое приложение. Сегодняшнее расширение включает UITableView. Теперь я хотел бы открыть приложение, если была нажата ячейка UITableView. Кто-нибудь из вас знает, как это сделать?


person paro    schedule 14.08.2015    source источник
comment
Пожалуйста, взгляните на этот stackoverflow.com/questions/24019820/   -  person JulianM    schedule 14.08.2015


Ответы (2)


Сегодня расширения имеют доступ к NSExtensionContext который позволяет открыть приложение. В вашем контроллере расширения:

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

Параметр успеха предоставляется, потому что система может быть не в состоянии открыть определенный URL-адрес (скажем, вы хотите запустить «twitter://», но у пользователя не установлено приложение Twitter. Если вы запускаете собственное приложение, это не должно быть проблемой.

person Christopher Pickslay    schedule 15.08.2015
comment
Поскольку вы сказали, что хотите, чтобы он запускался, когда пользователь нажимает на UITableViewCell, предположительно, вы бы назвали его в tableView:didSelectRowAtIndexPath: - person Christopher Pickslay; 15.08.2015
comment
Я уже пробовал это, но функция tableView:didSelectRowAtIndexPath не работает. - person paro; 15.08.2015
comment
Я уже пробовал это, но функция tableView:didSelectRowAtIndexPath не работает. - person paro; 15.08.2015
comment
Существует ошибка, из-за которой нажатие на пустые области в UITableViewCells не приводит к обратным вызовам табличного представления. Взгляните на stackoverflow.com/questions/26223537. - person Christopher Pickslay; 16.08.2015
comment
В порядке. Спасибо за вашу помощь! - person paro; 17.08.2015

Предоставленный код Кристофера Пикслея отлично работает, вам просто нужно добавить следующие строки в info.plist приложения (открыть как исходный код):

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

сразу после

<?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>

Вот полное руководство, как открыть приложение или поделиться пользовательскими настройками по умолчанию с расширением и содержащим его приложением.

person Mikita Manko    schedule 16.02.2017