Поделиться ссылкой через схему URL (например, через Telegram)

Я хочу поделиться ссылкой через схему URL, скажем, для Telegram.

Я создал это:

tg: // msg? text = www.example.com?t=12

По ссылке открывается телеграмма, но больше ничего не происходит.

Я использовал тот же код для Viber, и он работает:

viber: // forward? text = www.example.com?t=12

и он открывает новое сообщение в viber с этим текстом:

www.example.com

Другими словами, это сокращает мой URL.

Любая идея?

14 ответов

Вы также можете использовать ссылку на telegram.me, которая ссылается на вебограмму, если на устройстве не установлено приложение telegram.

https://telegram.me/share/url?url=<URL>&text=<TEXT>

Это работает со мной:

tg://msg?text=Mi_mensaje&to=+1555999

Здесь есть множество ответов, каждый из которых работает по-своему. IE, используя tg: вместо http: так как протокол короче, но это вызовет ошибку, если Telegramme.me не установлен, тогда как использование полного http: URL будет перенаправлен на ссылку с инструкциями по установке для Telegramme.me.

Если вы хотите увидеть все варианты того, как это обрабатывается, посмотрите этот проект github в Social-Sharing:

https://github.com/bradvin/social-share-urls

Вы можете воспользоваться ссылкой telegram.me который предоставит страницу предварительного просмотра с предупреждением, запрашивающим открытие ссылки в приложении.

https://telegram.me/share/url?url=<URL>&text=<TEXT>

Второй вариант - это прямой вызов ссылки приложения:

tg://msg_url?url=<url>&text=<encoded-text>

Я особенно предпочитаю второй вариант, который также работает в настольных приложениях.

Для Telegram поделиться:

Цель C:

if([UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tg://msg?text=test"]){
 [UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tg://msg?text=test"]
}else{
 //App not installed.
}

Swift 3.0:

let urlString = "tg://msg?text=test"
let tgUrl = URL.init(string:urlString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!)
if UIApplication.shared.canOpenURL(tgUrl!)
    {
        UIApplication.shared.openURL(tgUrl!)
    }else
    {
       //App not installed.
    }

Если вы использовали canOpenURL, то нужно добавить в info.plist

<key>LSApplicationQueriesSchemes</key>
<array>
   <string>tg</string>
</array>
      <a href = "https://telegram.me/share/url?url=<URL>&text=<TEXT>">Telegram</a>

с этим мы можем открыть xdg телеграммы, и если мы выберем контакт, по умолчанию отправка текста появится в поле сообщения.

php:

<a href="tg://msg?text=<?php echo rawurlencode($gotoURL); ?>">Link</a>



JavaScript:

<script>TEXT="any text or url";</script>

<a onclick="window.location='tg://msg?text='+encodeURIComponent(TEXT);">Link</a>



или очень просто:

tg://msg?text=www.example.com%2F%3Fget%3Dvalue

tg://msg?text=www.example.com%2F%3Ft%3D12

Вам следует прекратить использовать протокол для настольных приложений, потому что он не работает в развивающейся сети: он не работает в веб-приложениях, ChromeOS или некоторых мобильных устройствах.

Всегда используйте НОВЫЙ способ: https://t.me , потому что он откроет приложение Telegram DESKTOP в Windows\Linux\Mac, ЕСЛИ ПОЛЬЗОВАТЕЛЬ ХОЧЕТ\ИМЕЕТ его, в противном случае он откроет веб-страницу\веб-приложение, что является СПОСОБОМ.

  1. https://web.telegram.org/k
  2. https://web.telegram.org/z

У Telegram есть ДВА веб-приложения, которые разрабатывались за последний год!

Оба великолепны, добавляют ТОННЫ паритета и имеют разные подходы.

Возможно, вы используете localhost, поэтому он не показывает общий ресурс. попробуйте это в живом хосте

Если вы хотите открыть чат с ботом или людьми, просто напишите этот простой код

      <a href="https://t.me/targetedusername">

Попробуйте использовать tg: // share:

<a href="tg://share?url=www.example.com?t=12&text=Check out this url">Link</a>

Чтобы проверить, установлена ​​ли Telegram, вы можете сделать следующее (позаимствовано из модуля Shares it для Whatsapp):

BOOL isTelegramInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tg://msg?text=test"]];

iOS проверяет, установлено ли какое-либо приложение, которое может обрабатывать схему tg://, то есть Telegram.

Только что протестировано, это работает как при открытии приложения Telegram, так и при открытии браузера, если он не установлен:

let webURL = NSURL(string: "https://t.me/<YOUR ID>")!
UIApplication.shared.open(webURL as URL)

У тебя две проблемы:

  1. С одной стороны, вы используете неправильную схему для обмена URL-адресами, правильная — msg_url;
  2. С другой стороны, вы пытаетесь поделиться URL-адресом с параметрами. Вам нужно закодировать ваш ? чтобы заставить его работать. Код процента: %3F
  3. Дополнительный совет: также, если вы хотите, чтобы это была ссылка после публикации, вы должны, конечно, включить кодировку HTTPS://.

Попробуйте это, и вы увидите, что это работает нормально: tg://msg_url?url=https%3A%2F%2Fwww.example.com%3Ft=12

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