Как открыть приложение YouTube с идентификатором YouTube по нажатию кнопки в iOS

Я создаю приложение, в котором у меня будет UIButton названный Watch Video при нажатии на кнопку должно быть открыто приложение / веб-сайт YouTube с соответствующим идентификатором YouTube.

Я видел код для вставки видео YouTube в iOS, но я не нашел ничего подобного. Любые идеи будут действительно полезны.

5 ответов

Решение

Таким образом, вы сначала проверяете, установлено ли приложение YouTube на устройстве, затем открываете приложение или оно переходит в Safari.

    let youtubeId = "SxTYjptEzZs"    
    var youtubeUrl = NSURL(string:"youtube://\(youtubeId)")!
    if UIApplication.sharedApplication().canOpenURL(url){
            UIApplication.sharedApplication().openURL(url)
    } else{
            youtubeUrl = NSURL(string:"https://www.youtube.com/watch?v=\(youtubeId)")!
            UIApplication.sharedApplication().openURL(url)
    }

ОбновлениеSwift 4 (со снятой принудительной разверткой):

func playInYoutube(youtubeId: String) {
    if let youtubeURL = URL(string: "youtube://\(youtubeId)"),
        UIApplication.shared.canOpenURL(youtubeURL) {
        // redirect to app
        UIApplication.shared.open(youtubeURL, options: [:], completionHandler: nil)
    } else if let youtubeURL = URL(string: "https://www.youtube.com/watch?v=\(youtubeId)") {
        // redirect through safari
        UIApplication.shared.open(youtubeURL, options: [:], completionHandler: nil)
    }
}

Не забудьте добавить youtube схема к LSApplicationQueriesSchemes в Info.plist (иначе canOpenURL всегда подведет)

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>youtube</string>
</array>

Примечание:

Если пользователь включил приложение Safari для открытия приложения Youtube раньше, вам не нужно проходить через youtube:// Схема и второй URL тоже откроет приложение Youtube. Однако вы не можете это контролировать, и если пользователь отказался от Safari, чтобы открыть Youtube, то вам все равно придется попробовать эту схему напрямую - поэтому я считаю, что лучше использовать решение, которое я изложил выше, с обеими условными ветками.

При нажатии кнопки события напишите этот код

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=videoId"]];

Это откроет видео в приложении YouTube, если оно присутствует, иначе оно приведет пользователя на сайт.

В быстром

  UIApplication.sharedApplication().openURL(NSURL(string:"http://www.youtube.com/watch?v=videoId")!)

На самом деле, вам не нужна схема YouTube. Он работает, как и ожидалось, если вы знаете, как переключаться между двумя различными режимами поведения пользователя! iOS 10 позволяет пользователю выбирать. Если приложение звонит openURL() с URL YouTube система использует последнее выбранное поведение.

Пользователь может решить использовать приложение YouTube, нажав "Открыть" справа от верхнего баннера с надписью "Открыть в приложении" (или около того) - приложение откроется, и iOS запомнит этот параметр. С другой стороны, если приложение открывается автоматически, справа от строки состояния появляется крошечная ссылка (да, я на самом деле имею в виду строку состояния!) С надписью "youtube.com >" (также с этим шевроном). Нажав на эту ссылку, вы решите открыть URL-адреса YouTube в Safari в будущем.

Другими словами, если пользователь решил открыть URL-адреса YouTube в Safari, у вас нет шансов открыть приложение YouTube программно на iOS 10.

Вы можете использовать URLSchemes для этой цели. Нам нужен URLSchemeIdentifier приложения YouTube. URLSchemeIdentifier YouTube является youtube://, Для приложений по умолчанию вы можете легко получить URLSchemeIdentifiers, выполнив поиск в Интернете.

Теперь используйте приведенный ниже код в действии кнопки, чтобы открыть приложение YouTube.

    let url = NSURL(string:"youtube://AnyParameterYouWant")!

    if UIApplication.sharedApplication().canOpenURL(url){
            UIApplication.sharedApplication().openURL(url)
    } else{
            youtubeUrl = NSURL(string:"https://www.youtube.com/watch?v=ID")!
            UIApplication.sharedApplication().openURL(url)
    }

Примечание. Обратите внимание, что canOpenURL выдаст значение false, если вы не внесете белый список в схему URL. Исключение только для распространенных приложений.

Другие вопросы по тегам