Кордова пытается набрать номер телефона
Я пытаюсь набрать номер телефона в iOS, но у меня есть только симулятор и iPod Touch для тестирования.
В коде используется что-то по строкам:
window.location.href = 'tel:01234567890';
Работает отлично с Android, но в iOS он умирает с:
Не удалось загрузить веб-страницу с ошибкой: URL-адрес не может быть показан
Теперь я понимаю, что это было задано раньше, но общий консенсус с того времени: "Это не работает, вам нужно будет использовать плагин". В течение некоторого времени не было много вопросов об этом, и какие вопросы, по-видимому, подсказывают, что он работает, когда делаете это программно (как указано выше с window.location.href
). Я пробовал iOS PhoneDialer и более новую версию того же плагина, но у обоих есть ошибки в XCode (ARC forbids explicit message send of 'release'
) - немного фальсифицируйте, и я могу получить это но затем PhoneGap не находит плагин - он действительно чувствует, что я нажимаю на кирпичную стену с помощью этого метода, и я не могу поверить в что-то столь же простое, как это требует чего-то такого сверху.
Я знаю, что вы не можете автоматически набирать номер/автозанять номер по соображениям безопасности, но все, что мне нужно сделать, это открыть дозвонщик с предварительно заполненным номером, который, безусловно, не отличается от ссылки mailto:[email protected]
, открывающей ваш адрес электронной почты клиент с заранее заполненным отправителем?
Итак, мои вопросы:
- Изменилось ли это с недавним обновлением PhoneGap, iOS или XCode?
- Или это случай, когда я не могу сделать это на iPod или Simulator, и он отлично работает на iPhone?
- Как я могу это исправить?:)
Ответы
Ответ 1
Вы не указали, какую версию Кордовы вы используете, поэтому я предполагаю версию > 3.
Убедитесь, что InAppBrowser, plugin начиная с версии 3, установлен, а затем откройте ссылку, вызвав ее через Javascript следующим образом:
window.open('tel:12345678', '_system')
_system
откроет его с помощью собственного браузера, который, в свою очередь, откроет диалог вызова, если вы его используете против http://maps.apple.com/, он откроется в отображает приложение и аналогичные для других приложений, которые открываются для специальных URL-адресов.
Примечания:
- Как описано в документах плагина InAppBrowser функция
window.open
не будет установлена автоматически. Вы должны сделать это сами: window.open = cordova.InAppBrowser.open;
. Вместо этого вы можете напрямую использовать cordova.InAppBrowser.open('tel:12345678', '_system');
- Убедитесь, что в вашем номере нет пробелов (+
префикс в порядке). Например, вы можете использовать следующую функцию:
Предполагая, что
num
является строкой.
Функции:
function placeCall(num) {
if (window.cordova) {
cordova.InAppBrowser.open('tel:' + num.replace(/\s/g,''), '_system');
}
}
Ответ 2
Ниже код работает отлично для iphone: -
window.open('tel: 123456', '_system');
Симулятор не поддерживает дозвонщик. Не нужно тратить время.
Ответ 3
Убедитесь, что номер телефона в вашем href также не имеет никакого форматирования, так как на iOS это приводит к тому, что ссылка не будет работать в приложении PhoneGap. Например, используйте tel: 0390005555, а не tel: (03) 9000 5555.
Ответ 4
Я не считаю, что это проблема Кордовы. Я знаю, что в родной iOS вы не можете вызвать дозвонщик на симуляторе или на iPod touch. Вам нужно будет протестировать это на реальном iPhone.
Ответ 5
Я знаю, что это время позднего ответа.
Попробуйте добавить //
к URL-адресу. Как этот tel://xxxxxxxxx
и посмотрим, работает ли он.
Работала для меня в IOS 8.4, iPhone 6, 6+ на сегодняшний день.