Работа с URL-адресами мобильных телефонов не работает на реальном устройстве. - PullRequest
0 голосов
/ 28 июня 2019

Я сделал очень простое приложение, чтобы открыть mobilephone URL («Тестер»):

    let url = URL(string: "mobilephone:Test?index=1")

    UIApplication.shared.open(url!) { (result) in
        if result {
            print("success!")
        }
        else {
            print(result)
        }
    } 

Затем я добавил другое приложение («Обработчик») с обработчиком для этого URL (это AppDelegate):

func application(_ application: UIApplication,
                 open url: URL,
                 options: [UIApplication.OpenURLOptionsKey : Any] = [:] ) -> Bool {


    // Determine who sent the URL.
    let sendingAppID = options[.sourceApplication]
    let source = "\(sendingAppID ?? "Unknown")"

    let alert = UIAlertController(title: source, message: url.absoluteString, preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
    self.window?.rootViewController?.present(alert, animated: true, completion: nil)

    return true
}

И, конечно, я зарегистрировал эту схему в Project → Info → URL Types с mobilephone в качестве схемы и идентификатором моего приложения в качестве идентификатора.

Это прекрасно работает на симуляторе. Когда я запускаю оба приложения на симуляторе iPhone 8, я могу открыть тестер, попробовать открыть URL-адрес, и он переключается на приложение-обработчик и показывает окно сообщения. Пока все хорошо.

Но затем я развернул оба приложения на реальном телефоне iPhone 8 под управлением iOS 12.3.1, и URL не обрабатывается. Приложение Tester сообщает false из UIApplication.shared.open, и приложение-обработчик не запускается. Я думаю, что пропускаю некоторую часть регистрации, но не могу понять это. Любая помощь, пожалуйста?

РЕДАКТИРОВАТЬ: кажется, что когда я меняю схему на какое-то случайное имя, она работает нормально ... Схема mobilephone зарезервирована как-то? Я не видел его в списке зарезервированных схем.

Ответы [ 2 ]

2 голосов
/ 29 июня 2019

Вы не можете зарегистрировать такой URL. Зарегистрировано приложением «Телефон».

Вы можете узнать, зайдя в Safari и набрав: mobilephone://test .. Он предложит вам открыть приложение «Телефон» и сказать: «Safari не может открыть этот URL, потому что он недействителен» ..

РЕДАКТИРОВАТЬ: Начиная с iOS 10+, этот URL больше не действителен. Вот список заблокированных URL-адресов (вместе с обновлением открытых настроек): http://appcofe.blogspot.com/2016/10/apple-blocked-41-app-url-scheme-on-ios_18.html

https://imgur.com/a/tpTcqOs

enter image description here enter image description here enter image description here

Протестировано на iPhone X (NQAJ2LL / A) - iOS 12.2 (16E227)

0 голосов
/ 28 июня 2019

Попробуйте "mobilephone://Test?index=1"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...