Задать вопрос
zoonman
@zoonman
⋆⋆⋆⋆⋆

Как сделать ссылку на Viber?

Собственно, у Viber есть свой мета-протокол, а ля
<a href="viber://..."
Никак не могу найти детали, хочу просто сделать, чтобы открывалось приложение Вибера и контакт добавлялся в список или открывалось сообщение для указанного номера.
  • Вопрос задан
  • 263866 просмотров
Подписаться 24 Простой 14 комментариев
Решения вопроса 1
@SVZhidkow
Бэкенд-разработчик
У меня в 2020 сработало следующее:

<a href="viber://chat?number=%2B***********">Viber</a>

И на ПК, и на смартфоне (и Андроид и iOS).

Где %2B - это "плюс", дальше идёт номер в международном формате (с кодом страны), например %2B79876543210.
Ответ написан
Пригласить эксперта
Ответы на вопрос 9
Добавлю новостей из 2022 :)
Чтобы открылся чат с указанным номером я использую одну ссылку для Андроида и Айоса, ПК и МОБ такого вида:

<a href="viber://chat?number=%2B79001234567">Написать в Вайбер</a>


При нажатии на неё с мобильного или ПК (главное, чтобы был установлен Вайбер) откроется чат с номером 79001234567
Я не советую ставить ссылку такого вида:

viber://add?number=79001230000

Так как этот код добавления контакта в телефонную книгу. По моим тестам конверсия в чат выше, когда людей сразу отправляют по ссылке на чат, чем при добавлении в контакты.
---------------------
One more thing... Но есть другой вариант - поставить на сайт виджет CHAT-BAR - это ссылки на мессенджеры, соц.сети и телефон, которые открываются прямо в приложениях на телефоне. Можно написать свой Call-to-action и поставить ссылку на Ватсап, Вайбер, Инстаграм, Ютуб и т.п. посмотрите здесь https://skobelkin.ru/
Вот плюсы виджета:
  • Виджет бесплатный
  • Все ссылки открываются сразу в приложениях на Андроиде и iOS правильно
  • Конвертирует мобильный трафик в подписчиков
  • Позволяет быстро связаться с компанией по любым средствам связи

---------------------
Есть конструкторы ссылок для Вайбера, выбирайте любой:
https://2hub.ru/1Umhn9M
https://2hub.ru/8kXZHzg
https://2hub.ru/sovR7ua
Ответ написан
@parfenov_sk
На дворе 2017, если кому нужно еще —
Открыть чат:
<a href="viber://chat?number=ххххххххх">Viber</a>
Добавить контакт:
<a href="viber://add?number=ххххххххх">Viber</a>
Номер без плюса.
Ответ написан
Middle_Pudge
@Middle_Pudge
Дело в том что десктопное и мобильное приложение Viber открывается по разным ссылкам, что создает определенные сложности при добавлении такой ссылки на сайт. Поэтому потратьте 2 минуты чтобы прочитать и понять текст ниже) Для мобильных устройств используется такой подход формирования ссылки:
<a href="viber://add?number=380950000000">Написать в Viber</a>

Для ПК – такой:
<a title="Должен быть установлен Viber для ПК" href="viber://chat?number=+380950000000">Написать в Viber</a>


Для того, чтобы определить устройство при помощи PHP, в самом простейшем случае можно воспользоваться простейшей функцией, которая определяет USER_AGENT устройства, а затем, в зависимости от того, опередила ли функция устройство как мобильное или нет, показывать ту или иную ссылку.
<?php function check_mobile_device() { 
    $mobile_agent_array = array('ipad', 'iphone', 'android', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
    $agent = strtolower($_SERVER['HTTP_USER_AGENT']);    
    foreach ($mobile_agent_array as $value) {    
        if (strpos($agent, $value) !== false) return true;   
    };     
    return false; 
};?>

Расположить функцию, можно, например в самом начале страницы, перед 'doctype' или вынести в отдельный файл и там же подключить его.

После этого, в месте где будет выводиться ссылка на Viber используйте такую проверку:
<? if(check_mobile_device()) :?>
	<a title="Viber" href="viber://add?number=79851198793"></a>              
<? else : ?>
	<a title="Viber" href="viber://chat?number=+79851198793"></a>
<? endif; ?>

Теперь, если человек зашел с ПК, то ему покажется ссылка для десктопного приложения, а если с мобильного устройства, то ссылка для смартфона или планшета.
Ответ написан
Комментировать
Для андроида вроде есть viber://tel:xxxxxx и viber://chat:xxxxxx
Но я не проверял.

Для iOS есть только viber://calls (открывает таб звонков) и viber://chats (открывает таб чатов)

Еще есть viber://forward?text=Hello (на iOS открывает экран выбора адресата, на Андроиде не проверял) - отсюда.
Ответ написан
Комментировать
@DimanGr
Второй раз за день убеждаюсь, что лучше телеги пока нечего нет.
Ответ написан
Комментировать
Flanker_4
@Flanker_4
Это называется Url scheme. Я уверен на 99% что Viber сделал лишь задел на будущее, и на данный момент этот протокол только и умеет что открывать приложение (а умеет ли вообще, Вы проверяли?)

Насчет добавления контакта, очень сомневаюсь... безопасность все такое, но Вы всегда можете обратиться на support.viber.com, там подскажут

Еще можно воспользоваться вот такой штучкой . Если приложение будет установлено, оно кинет в него, а не в апп стор. Само собой тут речь только о открытии приложения, а не о добавлении контакта.
Ответ написан
Комментировать
@staskmp
на айфонах и винде не работает формат телефона "380", нужен обязательно "+380" либо 068(067 и тд)
на андроидах не работает формат с "+380" и 068(067 и тд), нужен только "380"

я через HTTP_USER_AGENT отслеживаю устройство

и с помощью регулярного выражения меняю формат

например отследить можно так
<?php
 
$mobile_browser = '0';
 
if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
    $mobile_browser++;
}
 
if ((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') > 0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
    $mobile_browser++;
}    
 
$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 4));
$mobile_agents = array(
    'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
    'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
    'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
    'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
    'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
    'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
    'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
    'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
    'wapr','webc','winw','winw','xda ','xda-');
 
if (in_array($mobile_ua,$mobile_agents)) {
    $mobile_browser++;
}
    
if (strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini') > 0) {
    $mobile_browser++;
}
    
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows') > 0) {
    $mobile_browser = 0;
}
 
if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPod'))
 {
  $mobile_browser = -1;
}
   
?>


или так

<?php
 
$mobile_browser = '0';
 
if (preg_match('/(android)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
    $mobile_browser++;
}
    
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows') > 0) {
    $mobile_browser = 0;
}
 
if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPod'))
 {
  $mobile_browser--;
}
   
?>


а маску можно сделать так
<?php if ($mobile_browser > 0) { 
			if (substr(preg_replace('/[^0-9]/', '', $row->mobil_phone), 0, 2) != '38') { ?>
				<a href="viber://chat?number=<?php echo preg_replace('/[^0-9]/', '', substr_replace($row->mobil_phone, '38', 0, 0))?>"><?php echo preg_replace('/[^0-9+]/', '', $row->mobil_phone)?></a>
			<?php }	else { ?>
				<a href="viber://chat?number=<?php echo preg_replace('/[^0-9]/', '', $row->mobil_phone)?>"><?php echo preg_replace('/[^0-9+]/', '', $row->mobil_phone)?></a>
			<?php }?>
	<?php } else if ($mobile_browser < 0 || $mobile_browser == 0){ 
			if (substr(preg_replace('/[^0-9]/', '', $row->mobil_phone), 0, 2) != '38') { ?>
				<a href="viber://chat?number=<?php echo substr_replace(preg_replace('/[^0-9]/', '', $row->mobil_phone), '+38', 0, 0)?>"><?php echo substr_replace(preg_replace('/[^0-9]/', '', $row->mobil_phone), '+38', 0, 0)?></a>
			<?php }	else { ?>
				<a href="viber://chat?number=<?php echo substr_replace(preg_replace('/[^0-9]/', '', $row->mobil_phone), '+', 0, 0)?>"><?php echo substr_replace(preg_replace('/[^0-9]/', '', $row->mobil_phone), '+', 0, 0)?></a>
			<?php }?> 
	<?php }	?>


код кривой, но рабочий, если оптимизируете буду благодарен
Ответ написан
Комментировать
@d_shmn
Веб-разработчик
Нужно просто добавить проверку, с какого устройства заходит пользователь. Для меня сработало следующее:

<?php
function isMobile() { 
return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
}
   if(isMobile()){?>
   <a href="viber://add?number=xxxxxxxxxxx">Viber</a>
   <?php
   }else{?>
      <a href="viber://chat?xxxxxxxxxxx">Viber</a>
<?php } ?>
Ответ написан
Привет
По ходу перестала работать ссылка
<a href="viber://chat?number=...">Тыц</a>

Есть у кого какие решения?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы