Невозможно использовать canOpenUrl для связи между приложениями

Я хотел бы общаться между двумя приложениями, установленными на одном телефоне. Для этого я прочитал множество официальных документов, чтобы понять, что мне нужно реализовать Пользовательская схема URL.

До iOS 9 казалось, что мы должны добавить URLType в Info и определить схему URL: " ".

Но после iOS 9 изменился способ общения между приложениями.

Пример схемы URL обсуждается в: Запрос схем URL с помощью canOpenURL< /эм>.

Мое приложение Код ниже:

@IBAction func sender(sender: AnyObject) {

    let ourapplication : UIApplication = UIApplication.sharedApplication()
    let ourpath : String = "iOSTest://"
        //.stringByAppendingString(urlEncodedText)
    let oururl : NSURL = NSURL(string: ourpath)!

    ourapplication.canOpenURL(oururl)
} 

В моем приложении B я добавляю URL-адрес iOSTest в Info.plist.

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>iOSTest</string>
</array>

Когда я устанавливаю два приложения на свой iPhone для тестирования, они вообще не работают.

Вот моя ошибка!

Фото ошибки

Что не так с моим приложением?


person HungCLo    schedule 17.04.2016    source источник


Ответы (1)


У вас неправильно настроено. Приложение, вызывающее canOpenURL, — это приложение, которому необходимо добавить пользовательскую схему в список LSApplicationQueriesSchemes.

Поскольку приложение A вызывает canOpenURL для iIOSTest, это приложение A должно добавить iOSTest в список LSApplicationQueriesSchemes, а не приложение B.

Приложение B должно быть приложением, которое должно зарегистрировать, что оно отвечает на iOSTest, чтобы оно открывалось, когда какое-либо другое приложение вызывает openURL со схемой iOSTest.

person rmaddy    schedule 17.04.2016
comment
Да, точно. Просто поменяйте местами LSApplicationQueriesSchemes - person Rajan Maheshwari; 17.04.2016
comment
Что ты спрашиваешь? Как зарегистрировать пользовательскую схему в приложении B или какой код нужно написать в приложении B? В любом случае, это совсем другой вопрос. Все это описано в документах и ​​во многих других вопросах здесь. Этот вопрос должен быть закрыт, так как он был решен. Если вам нужна помощь с дополнительным вопросом, опубликуйте другой вопрос, относящийся к этой проблеме. - person rmaddy; 18.04.2016
comment
Какая проблема у вас сейчас? - person rmaddy; 18.04.2016
comment
Когда я меняю LSApplicationQueriesSchemes на приложение A, нажатие кнопки canOpenURL по-прежнему не работает. Но когда я меняю canOpenURL на openUrl, все работает!!!! Я не понимаю, почему не работает canOpenURL? - person HungCLo; 18.04.2016
comment
Определить не работает. Что случается? Какое сообщение вы получаете? - person rmaddy; 18.04.2016
comment
Спасибо @rmaddy, я наконец-то разобрался с canOpenURL и openUrl. - person HungCLo; 18.04.2016